ABAP 程序运行锁
1. create a Table ZRUNNING_LOCK (tcode:se11)?
fields: MANDT , PROGNAME
2. create Lock object??????? EZRUNLOCK (tcode:se11)?
短文本???????????? 程序運行鎖
3. 如果需對程序加鎖,則在程序中執行?
??perform do_lock
4. 如果需對程序解鎖,則在程序中執行?
??perform release_lock
?
?
————————————————————–?
DEQUEUE_EZRUNLOCK????????????? 釋放對象 EZRUNLOCK 的鎖定?
ENQUEUE_EZRUNLOCK????????????? 對象 EZRUNLOCK 要求的鎖定
*&———————————————————————*?
*&? Include?????????? ZILOCKFUN01?
*&———————————————————————*?
* 程序運行鎖, 控制同一時間只有一個程序在運行?
*———————————————————————-?
*&——————————————————————–*?
*&????? Form? do_lock?
*&——————————————————————–*?
*?????? 提交一個鎖定?
*———————————————————————*?
*????? –>PI_PROGNAME 程序名?
*????? –>PI_WAIT??? 是否等待?
*????? –>PI_SHOW_MSG 是否顯示消息?
*????? –>PO_SUBRC 返回狀態?
*????? –>PO_MSG???? 返回的消息?
*———————————————————————*?
FORM do_lock USING pi_progname TYPE progname?
?????????????????????????????????? pi_wait TYPE c????? "X=waiting?
????????????????????????? CHANGING po_subrc TYPE c???? "0=OK,非0=Error?
?????????????????????????????????? po_msg TYPE text100.?
? CALL FUNCTION ‘ENQUEUE_EZRUNLOCK’?
?? EXPORTING?
???? mode_zrunning_lock?????? = ‘E’?
???? mandt??????????????????? = sy-mandt?
???? progname???????????????? = pi_progname?
*?? X_PROGNAME?????????????? = ‘ ‘?
*?? _SCOPE?????????????????? = ’2′?
???? _wait??????????????????? = pi_wait?
*?? _COLLECT???????????????? = ‘ ‘?
?? EXCEPTIONS?
???? foreign_lock???????????? = 1?
???? system_failure?????????? = 2?
???? OTHERS?????????????????? = 3.
? IF sy-subrc <> 0.?
??? po_subrc = ’1′.?
??? IF sy-subrc = 1.?
????? CONCATENATE ‘另一用戶’ sy-msgv1 ‘正在運行該程序!’ INTO po_msg?
??????????????????????? SEPARATED BY space.?
??? ELSE.?
????? po_msg = ‘鎖定該程序時出錯!’.?
??? ENDIF.?
? ELSE.?
??? po_subrc = ’0′.?
? ENDIF.?
ENDFORM.??????????????????? "do_lock?
*&——————————————————————–*?
*&????? Form? release_lock?
*&——————————————————————–*?
*?????? 釋放鎖定?
*———————————————————————*?
*????? –>PI_PROGNAME 程序名?
*———————————————————————*?
FORM release_lock USING pi_progname TYPE progname.?
? CALL FUNCTION ‘DEQUEUE_EZRUNLOCK’?
?? EXPORTING?
???? mode_zrunning_lock?????? = ‘E’?
???? mandt??????????????????? = sy-mandt?
???? progname???????????????? = pi_progname?
*???? X_PROGNAME?????????????? = ‘ ‘?
*???? _SCOPE?????????????????? = ’3′?
*???? _SYNCHRON??????????????? = ‘ ‘?
*???? _COLLECT???????????????? = ‘ ‘?
??????????? .
ENDFORM.??????????????????? "release_lock
總結
以上是生活随笔為你收集整理的ABAP 程序运行锁的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ABAP 锁对象与加锁机制
- 下一篇: ABAP程序锁定