ABAP 锁对象问题,针对条目数锁不住解决方法

使用通用锁表函数  ENQUEUE_E_TABLE

针对 函数 varkey 入参传值,针对表 SFLIGHT进行行项目级加锁

varkey   = |{ sy-mandt }{ |AA| }{ |0017| }{ |20210916| }|.

直接拼接主键就会出现锁表条目数锁不住的情况,SE11、SE16还可编辑

需要改进写法

像下面这样赋值即可针对行项目数据加锁
DATA: BEGIN OF ls_enqu_sflight.
DATA:   mandt  LIKE sflight-mandt.
DATA:   carrid LIKE sflight-carrid.
DATA:   connid LIKE sflight-connid.
DATA:   fldate LIKE sflight-fldate.
DATA: END OF  ls_enqu_sflight.

DATA: lv_varkey LIKE rstable-varkey.

ls_enqu_sflight-mandt  = sy-mandt.
ls_enqu_sflight-carrid = 'AA'.
ls_enqu_sflight-connid = '0017'.
ls_enqu_sflight-fldate = '20210916'.


lv_varkey  = ls_enqu_sflight.


CALL FUNCTION 'ENQUEUE_E_TABLE'
  EXPORTING
    tabname        = 'SFLIGHT'
    varkey         = lv_varkey
  EXCEPTIONS
    foreign_lock   = 1
    system_failure = 2
    OTHERS         = 3.
IF sy-subrc IS INITIAL.

ENDIF.

 定义锁主键工作区

像上面调用即可成功锁住行项目

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值