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

2023-12-14 17:52:21

使用通过锁表函数??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.

?定义锁主键工作区

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

文章来源:https://blog.csdn.net/qq_40463305/article/details/134997996
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。