本文主要是介绍SAP ABAP通过代码解锁SM12中被锁定目标,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
需求
通过代码解锁SM12中被锁定目标
一、如果是普通锁
garg为对象的名字,可以是锁参数的部分内容
LT_ENQ参考结构seqg3
LT_RAW_ENQ参考结构seqg7
二、如果是BOBF:DB_KEY的标准锁
1. 加锁与解锁
代码如下(示例):
BOBF标准锁一般采用以下方法加解锁 (锁的持有是从调用锁定函数后至程序退出前)
* 加锁DATA:iv_key type /BOBF/CONF_KEY.CALL FUNCTION 'ENQUEUE_/BOBF/E_LIB_2'EXPORTINGmode_/bobf/s_lib_enqueue_node = 'E'mandt = sy-mandtbo_name = ztest=>sc_bo_namekey = iv_key
* X_BO_NAME = ' 'x_key = 'X'x_key2 = 'X'x_node_name = 'X'_scope = '3'
* _WAIT = ' '
* _COLLECT = ' 'EXCEPTIONSforeign_lock = 1system_failure = 2OTHERS = 3.IF sy-subrc EQ 0.ENDIF.*解锁CALL FUNCTION 'DEQUEUE_/BOBF/E_LIB_2'EXPORTINGmode_/bobf/s_lib_enqueue_node = 'E'mandt = sy-mandtbo_name = ztest=>sc_bo_namekey = ls_key-db_key
* X_BO_NAME = ' '
* X_KEY = ' '
* _SCOPE = '3'
* _SYNCHRON = 'X'
* _COLLECT = ' '.
2. 读取与解锁
读需要的锁并解除锁定 (已知KEY值)
DATA:lt_enq TYPE STANDARD TABLE OF seqg3,lv_subrct TYPE sy-subrc,lv_garg TYPE seqg3-garg,ls_enq TYPE seqg3.lv_garg(3) = sy-mandt.lv_garg+3(30) = ztest=>sc_bo_name.lv_garg+33 = db_key.lv_garg+95 = '00000000000000000000000000000000'.* 读取锁CALL FUNCTION 'ENQUEUE_READ'EXPORTINGgarg = lv_gargTABLESenq = lt_enqEXCEPTIONScommunication_failure = 1system_failure = 2OTHERS = 3.IF sy-subrc = 0.* 解锁CALL FUNCTION 'ENQUE_DELETE'EXPORTINGcheck_upd_requests = 1
* SUPPRESS_SYSLOG_ENTRY = ' 'IMPORTINGsubrc = lv_subrctTABLESenq = lt_enq.ENDIF.
希望对你有所帮助
这篇关于SAP ABAP通过代码解锁SM12中被锁定目标的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!