解锁锁定销售订单的两种方式

1 直接 锁定 解锁 表

*锁订单
          CALL FUNCTION 'ENQUEUE_EVVBAKE'
            EXPORTING
              VBELN          = ITAB-VBELN
            EXCEPTIONS
              FOREIGN_LOCK   = 1
              SYSTEM_FAILURE = 2
              OTHERS         = 3.
          CASE SY-SUBRC .
            WHEN 0.
              PERFORM FM_VBAP_LOCKED USING ITAB-VBELN ITAB-POSNR.
              CALL FUNCTION 'DEQUEUE_EVVBAKE'
                EXPORTING
                  MODE_VBAK = 'E'
                  MANDT     = SY-MANDT
                  VBELN     = ITAB-VBELN
                  X_VBELN   = ' '
                  _SCOPE    = '3'
                  _SYNCHRON = ' '
                  _COLLECT  = ' '.
              WAIT UP TO 1 SECONDS.
            WHEN 1.
              MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                      WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
            WHEN 2.
              MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                      WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
            WHEN OTHERS.
          ENDCASE.


 

2  锁 解锁 订单

DATA: DA_VBELN LIKE VBAK-VBELN,
      DA_UNAME LIKE SY-UNAME,
      LV_SCENARIO_A    TYPE CHAR01,
      LV_CRM_LOCK_MODE TYPE CHAR01.
DA_VBELN = '3000002118'.

CALL FUNCTION 'SD_SALES_DOCUMENT_ENQUEUE'
  EXPORTING
    VBELN              = '3000002118'
*   i_crm_lock_mode    = lv_crm_lock_mode
*   I_CHECK_SCENARIO_A = CHARX
*   I_VBAK             = VBAK
*   I_XVBAK_UPDKZ      = XVBAK_UPDKZ
  EXCEPTIONS
    FOREIGN_LOCK       = 2
    SYSTEM_FAILURE     = 3
    NO_CHANGE          = 4.

DA_UNAME = SY-MSGV1.

IF ( SY-SUBRC = 2 AND CALL_FROM_CRM = CHARX AND NOT US_VBAPKOM-VGBEL IS INITIAL ) OR
   ( SY-SUBRC = 2 AND CALL_ACTIVITY EQ ACTIVITY_ASSEMBLY ).
  DO 10 TIMES.
    WAIT UP TO 1 SECONDS.
    CALL FUNCTION 'SD_SALES_DOCUMENT_ENQUEUE'
      EXPORTING
        VBELN              = US_VBELN
        I_CHECK_SCENARIO_A = CHARX
        I_VBAK             = VBAK
        I_XVBAK_UPDKZ      = XVBAK_UPDKZ
      EXCEPTIONS
        FOREIGN_LOCK       = 2
        SYSTEM_FAILURE     = 3
        NO_CHANGE          = 4.
    IF SY-SUBRC = 0.
      EXIT.
    ENDIF.
  ENDDO.
ENDIF.

CASE SY-SUBRC.
  WHEN 2.

*    PERFORM BELEG_INITIALISIEREN.
*
*    PERFORM BELEG_ENTSPERREN_BTCH USING DA_VBELN.
    MESSAGE E042(V1) WITH DA_VBELN DA_UNAME.
  WHEN 3.
    MESSAGE A043(V1).
  WHEN 4.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDCASE.

猜你喜欢

转载自www.cnblogs.com/ferzalez/p/9542067.html