ABAP常用表锁

  • Post author:
  • Post category:其他


开发过程中经常有表加锁的需求,实际上我们不需要为每一个表进行锁对象创建,有一个函数可以简单粗暴的实现通用表的加锁解锁。


"ENQUEUE_E_TABLE"



"DEQUEUE_E_TABLE"

示例:

*&---------------------------------------------------------------------*
*& Report YGJZ_TESTLOCK
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ygjz_testlock.

PARAMETERS p_table TYPE tabname.
CALL FUNCTION 'ENQUEUE_E_TABLE'
  EXPORTING
    mode_rstable   = 'E'
    tabname        = p_table
*   VARKEY         =
*   X_TABNAME      = ' '
*   X_VARKEY       = ' '
*   _SCOPE         = '2'
*   _WAIT          = ' '
*   _COLLECT       = ' '
  EXCEPTIONS
    foreign_lock   = 1
    system_failure = 2
    OTHERS         = 3.
IF sy-subrc = 0.
  MESSAGE 'TABLE LOCKED' TYPE 'I'.
ENDIF.


BREAK-POINT.


CALL FUNCTION 'DEQUEUE_E_TABLE'
  EXPORTING
    mode_rstable = 'E'
    tabname      = p_table
*   VARKEY       =
*   X_TABNAME    = ' '
*   X_VARKEY     = ' '
*   _SCOPE       = '3'
*   _SYNCHRON    = ' '
*   _COLLECT     = ' '
  .

IF sy-subrc = 0.
  MESSAGE 'TABLE UNLOCKED' TYPE 'I'.
ENDIF.

执行

在这里插入图片描述

在这里插入图片描述

TCODE:

SM12

查看锁

在这里插入图片描述

在这里插入图片描述

可以看到表 MARA已经被上了E类型的锁

继续执行

在这里插入图片描述

此时已经解锁。



版权声明:本文为xiayutian_c原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。