[ABAP] 프로그램 중복실행 방지를 위한 LOCK

SAPWISE·2024년 1월 30일

LOCK 상태인지 체크 후, ENQUEUE 실행
(프로그램 중간에 나가도 자동으로 DEQUEUE된다)

REPORT ZLOCKTEST.
DATA : lt_locks TYPE TABLE OF seqg3,
      wa_lock TYPE seqg3,
      lv_name TYPE seqg3-gname,
      lv_args TYPE seqg3-garg,
      lv_argname TYPE char40.
DATA lv_who TYPE string.

lv_name = 'TRDIR'.
lv_args = 'ZTT'.  "PROGRAM
lv_argname = 'ZTT'.  "PROGRAM

CALL FUNCTION 'ENQUEUE_READ'
  EXPORTING
    gname                 = lv_name
    garg                  = lv_args
    guname                = sy-uname
  TABLES
    enq                   = lt_locks
  EXCEPTIONS
    communication_failure = 1
    system_failure        = 2
    OTHERS                = 3.

READ TABLE lt_locks INTO wa_lock INDEX 1.
CHECK sy-subrc NE 0.

CALL FUNCTION 'ENQUEUE_E_TRDIR'
  EXPORTING
    mode_trdir     = 'E'
    name           = lv_argname
*    name           = sy-repid
    x_name         = ' '
    _scope         = '3'
    _wait          = ' '
    _collect       = ' '
  EXCEPTIONS
    foreign_lock   = 1
    system_failure = 2
    OTHERS         = 3.


CALL FUNCTION 'DEQUEUE_E_TRDIR'
  EXPORTING
    mode_trdir = 'E'
    name       = sy-repid
    x_name     = ' '
    _scope     = '3'
    _synchron  = ' '
    _collect   = ' '.
profile
SAP, ERP, ABAP

0개의 댓글