ABAPSAP判断单据是否被锁定

Posted SAP剑客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ABAPSAP判断单据是否被锁定相关的知识,希望对你有一定的参考价值。

SAP判断单据是否被锁定

通常要是某个SAP单据被其他用户正在处理,我们进入时会有如下提示:

 要是在开启远程模块的函数中碰到这样的问题会提示给出Dump信息,非常不友善,那么能否在处理单据之前判定该单据是否被锁定呢?

起初我是通过下面的例子进行处理的,直接上源码。

          DATA : LT_ENQ LIKE TABLE OF SEQG7 WITH HEADER LINE .
          DATA : LV_GARG TYPE EQEGRAARG.
          LV_GARG = SY-MANDT && VBELN.
          CALL FUNCTION 'ENQUE_READ2'
            EXPORTING
              GCLIENT = SY-MANDT
              GNAME   = 'LIKP'
*             GARG    = ' '
*             GUNAME  = SY-UNAME
*             OPCODE2 = 1
*          IMPORTING
*             NUMBER  =
*             SUBRC   =
            TABLES
              ENQ     = LT_ENQ.
          IF LT_ENQ[] IS NOT INITIAL.
            READ TABLE LT_ENQ WITH KEY GARG = LV_GARG.
            IF SY-SUBRC = 0 .
              EX_VBELN = VBELN.
              ERROR = 'E'.
              CALL FUNCTION 'MESSAGE_TEXT_BUILD'
                EXPORTING
                  MSGID               = 'VL'
                  MSGNR               = '046'
                  MSGV1               = VBELN
                  MSGV2               = LT_ENQ-GUNAME
*                 MSGV3               = ' '
*                 MSGV4               = ' '
                IMPORTING
                  MESSAGE_TEXT_OUTPUT = MSAGE.

              EXIT.
            ENDIF.
          ENDIF.

上面的代码可以适用于一般情况,但是某些时候仍会报“SYSTEM_FAILURE”的错误,让人实难捉摸不透。

下面是改良后的代码,暂时未作测试,但是抛出了上面的异常信息,待后续反馈后更新。

          "判断是否被锁定
          CALL FUNCTION 'ENQUEUE_EVVBLKE'
            EXPORTING
              MODE_LIKP      = 'V'
              MANDT          = SY-MANDT
              VBELN          = VBELN
            EXCEPTIONS
              FOREIGN_LOCK   = 1
              SYSTEM_FAILURE = 2
              OTHERS         = 3.
          IF SY-SUBRC <> 0.
            CALL FUNCTION 'MESSAGE_TEXT_BUILD'
              EXPORTING
                MSGID               = 'VL'
                MSGNR               = '046'
                MSGV1               = VBELN
                MSGV2               = SY-MSGV1
*               MSGV3               = ' '
*               MSGV4               = ' '
              IMPORTING
                MESSAGE_TEXT_OUTPUT = MSAGE.
            ERROR = 'E'.
            EXIT.
          ENDIF.

 

 

以上是关于ABAPSAP判断单据是否被锁定的主要内容,如果未能解决你的问题,请参考以下文章

判断NumLock键和CapsLock键是否被锁定

如何判断一行是不是被锁定?

U8 应付款管理 单据类型 分析

ABAPSAP销售订单定价值变更

excelvba锁定单元格图片不被删除

如何在代码中判断用户是不是在其设置菜单中“锁定了音量”