Created by Jerry Wang, last modified on May 21, 2014
如下report 先后三次重復(fù)調(diào)用帶參數(shù)的enqueue function module對database table CRMD_SOC_POST里一個uuid為0023的record上鎖, 使用Function module ENQUEUE_READ讀取該user持有的sap lock信息,打印出的cumulative counter的值依次為1, 2, 3. 每調(diào)用一次對應(yīng)的dequeue function module,則counter 減1。 若不帶參數(shù)調(diào)用enqueue function module,則cumulative counter與待參數(shù)時(shí)調(diào)用的counter是分別計(jì)數(shù)的。
REPORT zlock1.CONSTANTS: c_table TYPE tadir-obj_name VALUE 'CRMD_SOC_POST'.START-OF-SELECTION.WRITE: / 'First lock on uuid 23...' COLOR COL_NEGATIVE.CALL FUNCTION 'ENQUEUE_ECRMD_SOC_POST'EXPORTINGuuid = '00000000000000000000000000000023'.PERFORM display_lock.WRITE: / 'Second lock on uuid 23...' COLOR COL_NEGATIVE.CALL FUNCTION 'ENQUEUE_ECRMD_SOC_POST'EXPORTINGuuid = '00000000000000000000000000000023'.PERFORM display_lock.WRITE: / 'Third lock on the whole table...' COLOR COL_NEGATIVE.CALL FUNCTION 'ENQUEUE_ECRMD_SOC_POST'.PERFORM display_lock.WRITE: / 'Third lock on uuid 23...' COLOR COL_NEGATIVE.CALL FUNCTION 'ENQUEUE_ECRMD_SOC_POST'EXPORTINGuuid = '00000000000000000000000000000023'.PERFORM display_lock.WRITE: / 'release lock on uuid 23...' COLOR COL_NEGATIVE.CALL FUNCTION 'DEQUEUE_ECRMD_SOC_POST'EXPORTINGuuid = '00000000000000000000000000000023'.PERFORM display_lock.FORM display_lock.DATA: lv_subrc TYPE sy-subrc,lt_enq TYPE STANDARD TABLE OF seqg3.CLEAR: lt_enq.CALL FUNCTION 'ENQUEUE_READ'EXPORTINGgclient = sy-mandtguname = sy-unameIMPORTINGsubrc = lv_subrcTABLESenq = lt_enqEXCEPTIONScommunication_failure = 2OTHERS = 1.LOOP AT lt_enq ASSIGNING FIELD-SYMBOL(<lock>) WHERE gname = c_table.WRITE: / 'lock variable: ' , <lock>-garg+0(40) COLOR COL_POSITIVE,'Cumulative Counter: ', <lock>-gusevb COLOR COL_TOTAL.ENDLOOP.ENDFORM.