开发过程中经常有表加锁的需求,实际上我们不需要为每一个表进行锁对象创建,有一个函数可以简单粗暴的实现通用表的加锁解锁。
"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 版权协议,转载请附上原文出处链接和本声明。