前言:在SAP中对于一些重要的程序,可能会要求处理并发的情况,在有用户操作的情况下不允许其他用户进行操作,以此来保证数据及程序的安全。
使用技术:ENQUEUE_ES_PROG 和 DEQUEUE_ES_PROG,这两个function 是SAP系统存在的,下面简绍一下参数:
CALL FUNCTION 'ENQUEUE_ES_PROG'
EXPORTING
MODE_TRDIR = 'E' "锁条目模式:默认是E锁又叫独占锁,可选‘S’锁又叫共享锁,‘X’锁又叫专用锁
NAME = 'Z_PROGLOCK_MODEL' "需要锁定的程序名
X_NAME = ' ' "默认为空,可选
_SCOPE = '2' "表示锁定范围值,默认为‘2’,表示在update module内有效;其它参数有‘1’,表 示程序内有效;‘3’表示全部
_WAIT = ' ' "表示如果对象已经被锁定,是否等待后再尝试加锁,最大的等待时间有系统参 数 ENQUE/DELAY_MAX控制
_COLLECT = ' ' "参数表示是否收集后进行统一提交,COLLECT 是一种缓存与批处理方法,即如果指 定了Collect,加锁信息会放到Lock Container 中,Lock Container实际上是一个 funciton Group控制的内存区域,如果程序中加了很多锁,锁信息会先放到内存中,这样可以减少对SAP锁管理系统访问,若使Lock Container中的锁生效,需执行FLUSH_ENQUEUE 这个Funciton,将锁信息更新到锁管理系统中,此时加锁操作生效,使用函数RESET_ENQUEUE可以清除Lock Container中的锁信息
EXCEPTIONS
FOREIGN_LOCK = 1
SYSTEM_FAILURE = 2
OTHERS = 3.
解除锁DEQUEUE_ES_PROG 的参数与上面的加锁的参数类似。
案例分析:<