SAP 程序锁(非数据库锁),ABAP程序在同一时间只允许一人操作

前言:在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 的参数与上面的加锁的参数类似。

案例分析:<

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值