1.背景
获取SM12或者SMENQ锁定情况,或者获取当前对象被哪些用户锁定情况,以及解锁对象。
2.解决
2.1 读取锁
使用函数ENQUEUE_READ,gname 为表名,garg 为表KEY值,KEY值不完全可以用*代替。如果需要获取当前用户当前客户端的所有锁定情况,可以传参GUNAME和GCLIENT。
示例代码如下:
CLEAR lv_garg.
CONCATENATE sy-mandt g_vbeln INTO lv_garg.
CALL FUNCTION ‘ENQUEUE_READ’
EXPORTING
gclient = sy-mandt
gname = ‘LIKP’
garg = lv_garg
LOCAL = ‘E’
TABLES
enq = it_out
EXCEPTIONS
communication_failure = 1
system_failure = 2
OTHERS = 3.
2.2 删除锁(解锁)
使用函数ENQUE_DELETE,直接传入ENQ锁定列表即可
示例代码如下:
CALL FUNCTION ‘ENQUE_DELETE’
TABLES
ENQ = IT_ENQ.