天天看點

SAP ABAP實用技巧介紹系列之使用代碼獲得user的SAP lock資訊

Created by Jerry Wang, last modified on May 21, 2014

如下report 先後三次重複調用帶參數的enqueue function module對database table CRMD_SOC_POST裡一個uuid為0023的record上鎖, 使用Function module ENQUEUE_READ讀取該user持有的sap lock資訊,列印出的cumulative counter的值依次為1, 2, 3. 每調用一次對應的dequeue function module,則counter 減1。

若不帶參數調用enqueue function module,則cumulative counter與待參數時調用的counter是分别計數的。

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'
    EXPORTING
      uuid = '00000000000000000000000000000023'.

  PERFORM display_lock.

  WRITE: / 'Second lock on uuid 23...' COLOR COL_NEGATIVE.

  CALL FUNCTION 'ENQUEUE_ECRMD_SOC_POST'
    EXPORTING
      uuid = '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'
    EXPORTING
      uuid = '00000000000000000000000000000023'.

  PERFORM display_lock.

  WRITE: / 'release lock on uuid 23...' COLOR COL_NEGATIVE.
  CALL FUNCTION 'DEQUEUE_ECRMD_SOC_POST'
    EXPORTING
      uuid = '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'
    EXPORTING
      gclient               = sy-mandt
      guname                = sy-uname
    IMPORTING
      subrc                 = lv_subrc
    TABLES
      enq                   = lt_enq
    EXCEPTIONS
      communication_failure = 2
      OTHERS                = 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.
      

繼續閱讀