防止程序重复执行
有的程序需要現在同一時間只能運行一個,這種需求可以用鎖的方式來實現,在START-OF-SELECTION?事件后加鎖,如果是加鎖成功,說明還沒有程序在執行,如果是加鎖失敗,則說明已經有同名程序在運行,報錯即可。
注:這個鎖是借用程序修改的鎖,在SE38修改程序的時候也會加這個鎖。
程序如下:
START-OF-SELECTION.
??CALL?FUNCTION?'ENQUEUE_ESRDIRE'
????EXPORTING
??????name???????????=?sy-repid
??????_scope?????????=?'1'
????EXCEPTIONS
??????foreign_lock???=?1
??????system_failure?=?2
??????OTHERS?????????=?3.
??IF?sy-subrc?<>?0.
????MESSAGE?ID?sy-msgid?TYPE?sy-msgty?NUMBER?sy-msgno
????????????WITH?sy-msgv1?sy-msgv2?sy-msgv3?sy-msgv4.
"說明已經有程序在運行了。
??ENDIF.
總結
- 上一篇: 【转】排除被冲销的物料凭证
- 下一篇: 备份表到存在的表或者自动新建表