BAPI_DELIVERYPROCESSING_EXEC - 創建內向交貨單


根據內向采購訂單創建內向交貨單

FORM CREATE_INBOUND_DELIVIRY.
 DATA: _RET          TYPE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE,
       _CREATED_ITMES TYPE STANDARD TABLE OF BAPIDELICIOUSCREATEDITEMS WITH HEADER LINE,
       _REQUEST      TYPE STANDARD TABLE OF BAPIDELICIOUSREQUEST WITH HEADER LINE.

  LOOP AT GT_DO_ITEMS ASSIGNING FIELD-SYMBOL(<lfs_do>).

    CLEAR: _REQUEST.

    _REQUEST-ID  = sy-tabix.

    _REQUEST-DOCUMENT_NUMB = <lfs_do>-VGBEL."我這兒參考的單據為內部采購訂單

    _REQUEST-DOCUMENT_ITEM = <lfs_do>-VGPOS."參考行項目確認控制為0001

    _REQUEST-DOCUMENT_TYPE = 'B'. "B: 處理采購訂單 See domain : LESHP_DOCUMENT_TYPE

    _REQUEST-PLANT = <lfs_do>-WERKS.

    _REQUEST-STGE_LOC = <lfs_do>-LGORT.

    _REQUEST-QUANTITY_BASE__UOM = <lfs_do>-LFIMG.

    _REQUEST-DELIVERY_DATE = SY-DATUM.

    _REQUEST-DELIVERY_TIME = ''.

    APPEND _REQUEST.

  ENDLOOP.

  CALL FUNCTION 'BAPI_DELIVERYPROCESSING_EXEC'
    TABLES
      REQUEST      = _REQUEST
      CREATEDITEMS = _CREATED_ITMES
      RETURN       = _RET.

  PERFORM DEAL_BAPI_RET TABLES _RET CHANGING G_ERR_FLAG.

  DATA(LV_VBELN) = VALUE #( _CREATED_ITEM[ 1 ] OPTIONAL ).

  IF G_ERR_FLAG = ABAP_TRUE OR LV_VBELN IS INITIAL.
    RETURN.
  ENDIF.

  MESSAGE S001(00) WITH |內向交貨單{ LV_VBELN }創建成功.|. 
ENDFORM.


FORM DEAL_BAPI_RET TABLES RET_ERRMSG USING STEP CHANGING ERR_FLAG.
  FIELD-SYMBOLS: <FS_RET> TYPE BAPIRET2.
  DATA: ERRMSG TYPE SMESG.

  CLEAR  ERR_FLAG.
  REFRESH GT_SMESG.

  DATA(LV_ZEILE) = LINES( GT_SMESG_ALL[] ).

  LOOP AT RET_ERRMSG ASSIGNING <FS_RET>.

    IF ERR_FLAG = ABAP_FALSE AND ( <FS_RET>-TYPE = 'E'
       OR <FS_RET>-TYPE = 'A' OR <FS_RET>-TYPE = 'X' ).
      ERR_FLAG = ABAP_TRUE.  "失敗
    ENDIF.

    CLEAR ERRMSG.
    ERRMSG-ZEILE = LV_ZEILE + SY-TABIX.
    ERRMSG-MSGTY = <FS_RET>-TYPE.
    ERRMSG-ARBGB = <FS_RET>-ID.
    ERRMSG-TXTNR = <FS_RET>-NUMBER.
    ERRMSG-MSGV1 = <FS_RET>-MESSAGE_V1.
    ERRMSG-MSGV2 = <FS_RET>-MESSAGE_V2.
    ERRMSG-MSGV3 = <FS_RET>-MESSAGE_V3.
    ERRMSG-MSGV4 = <FS_RET>-MESSAGE_V4.
    APPEND ERRMSG TO GT_SMESG.
  ENDLOOP.

  APPEND LINES OF GT_SMESG TO GT_SMESG_ALL.

  IF ERR_FLAG = ABAP_TRUE.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

    CALL FUNCTION 'FB_MESSAGES_DISPLAY_POPUP'
      EXPORTING
        IT_SMESG        = GT_SMESG[]
      EXCEPTIONS
        NO_MESSAGES     = 1
        POPUP_CANCELLED = 2
        OTHERS          = 3.
    RETURN.
  ENDIF.

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      WAIT = 'X'.
ENDFORM.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM