防止程序重复执行

作者:ABAP老白 约 2 分钟阅读 更新日期:2025-03-02 1 年前更新 标签:ABAP, 开发

[ ABAP老白 ](javascript:void\(0\);)

有的程序需要现在同一时间只能运行一个,这种需求可以用锁的方式来实现,在 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 .
防止程序重复执行 - 封面图
防止程序重复执行 - 封面图
ABAP老白

关于作者:ABAP老白

企业信息化与 SAP 技术顾问,长期专注 SAP ABAP、FI/CO、MM、SD 等模块的技术分享与实战经验总结。查看更多介绍

来源说明:本文内容由「防止程序重复执行.md」整理生成,仅用于内部技术分享与学习交流。