面辅料入库暂收BAPI(MIGO过账的BAPI BAPI_GOODSMVT_CREATE)
*&---------------------------------------------------------------------*
 *& Form BAPI_GOODSMVT_CREATE
 *&---------------------------------------------------------------------*
 *& text
 *&---------------------------------------------------------------------*
 *& -->  p1        text
 *& <--  p2        text
 *&---------------------------------------------------------------------*
 FORM BAPI_GOODSMVT_CREATE .
 ***********gmcode-gm_code取值含义*******
 ********01     MB01
 ********02     MB31
 ********03     MB1A
 ********04     MB1B
 ********05     MB1C
 ********06     MB11
 ********07     MB04
   DATA:LT_GOODSMVT_HEADER        LIKE TABLE OF BAPI2017_GM_HEAD_01,
        LS_GOODSMVT_HEADER       LIKE LINE OF LT_GOODSMVT_HEADER,
        LT_GOODSMVT_CODE          LIKE TABLE OF BAPI2017_GM_CODE,
        LS_GOODSMVT_CODE         LIKE LINE OF LT_GOODSMVT_CODE,
        LT_TESTRUN                LIKE TABLE OF BAPI2017_GM_GEN-TESTRUN,
        LS_TESTRUN               LIKE LINE OF LT_TESTRUN,
        LT_GOODSMVT_ITEM          TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
        LS_GOODSMVT_ITEM         TYPE BAPI2017_GM_ITEM_CREATE,
        LT_GOODSMVT_SERIALNUMBER  LIKE TABLE OF BAPI2017_GM_SERIALNUMBER,
        LS_GOODSMVT_SERIALNUMBER LIKE LINE OF LT_GOODSMVT_SERIALNUMBER,
        LT_RETURN                TYPE TABLE OF BAPIRET2,
        LS_RETURN                LIKE LINE OF LT_RETURN.
   "输出参数
   DATA:LT_GOODSMVT_HEADRET TYPE BAPI2017_GM_HEAD_RET,
 *       LS_GOODSMVT_HEADRET LIKE LINE OF LT_GOODSMVT_HEADRET,
        L_MATERIALDOCUMENT  TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
        L_MATDOCUMENTYEAR   TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR.
   DATA:LT_OUTPUT_FOR_BAPI TYPE TABLE OF TY_OUTPUT.
   LOOP AT GT_OUTPUT ASSIGNING FIELD-SYMBOL(<FW_ALV>) WHERE SLBOX EQ 'X'..
     APPEND <FW_ALV> TO LT_OUTPUT_FOR_BAPI.
   ENDLOOP.
   SORT LT_OUTPUT_FOR_BAPI BY EBELN.
   "按采购订单来生成BAPI,一条采购订单抬头(包括所有的行项目)生成一张凭证
   LOOP AT LT_OUTPUT_FOR_BAPI  ASSIGNING FIELD-SYMBOL(<FW_BAPI>) WHERE SLBOX EQ 'X'.
     AT NEW EBELN.
       "HEAD
       LS_GOODSMVT_HEADER-PSTNG_DATE   = P_BUDAT.
       LS_GOODSMVT_HEADER-DOC_DATE     = P_BLDAT.
       LS_GOODSMVT_HEADER-PR_UNAME     = SY-UNAME.
 *        LS_GOODSMVT_HEADER-HEADER_TXT   = <FW_BAPI>-BKTXT.
       APPEND LS_GOODSMVT_HEADER TO LT_GOODSMVT_HEADER.
       LS_GOODSMVT_CODE-GM_CODE = '01'.
     ENDAT.
     "ITEM
     LS_GOODSMVT_ITEM-MATERIAL_EXTERNAL  = <FW_BAPI>-MATNR.
     LS_GOODSMVT_ITEM-PLANT     = <FW_BAPI>-WERKS.
     LS_GOODSMVT_ITEM-MOVE_TYPE = '103'.
     LS_GOODSMVT_ITEM-MVT_IND = 'B'.
     LS_GOODSMVT_ITEM-ENTRY_QNT = <FW_BAPI>-MENGE_BCZSSL.
     LS_GOODSMVT_ITEM-UNLOAD_PT = <FW_BAPI>-LGORT."ADD BY HANDLH 2018.5.23
     CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
       EXPORTING
         INPUT          = <FW_BAPI>-MEINS
 *       LANGUAGE       = SY-LANGU
       IMPORTING
         OUTPUT         = LS_GOODSMVT_ITEM-ENTRY_UOM
       EXCEPTIONS
         UNIT_NOT_FOUND = 1
         OTHERS         = 2.
     IF SY-SUBRC <> 0.
 * Implement suitable error handling here
     ENDIF.
 *       LS_GOODSMVT_ITEM-STGE_LOC  = <FW_BAPI>-LGORT.
     LS_GOODSMVT_ITEM-PO_NUMBER = <FW_BAPI>-EBELN.
     LS_GOODSMVT_ITEM-PO_ITEM   = <FW_BAPI>-EBELP.
     DATA:
           GV_SGTXT TYPE  BAPI2017_GM_ITEM_CREATE-ITEM_TEXT.
     CLEAR GV_SGTXT.
     GV_SGTXT = <FW_BAPI>-BKTXT.
     LS_GOODSMVT_ITEM-ITEM_TEXT  = GV_SGTXT.
 *       LS_GOODSMVT_ITEM-stck_type = 'X'."
     APPEND LS_GOODSMVT_ITEM TO LT_GOODSMVT_ITEM.
     CLEAR:LS_GOODSMVT_ITEM.
     AT END OF EBELN.
       CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
         EXPORTING
           GOODSMVT_HEADER  = LS_GOODSMVT_HEADER
           GOODSMVT_CODE    = LS_GOODSMVT_CODE
 *         TESTRUN          = ' '
 *         GOODSMVT_REF_EWM =
         IMPORTING
           GOODSMVT_HEADRET = LT_GOODSMVT_HEADRET
           MATERIALDOCUMENT = L_MATERIALDOCUMENT
           MATDOCUMENTYEAR  = L_MATDOCUMENTYEAR
         TABLES
           GOODSMVT_ITEM    = LT_GOODSMVT_ITEM
 *         GOODSMVT_SERIALNUMBER         = LT_GOODSMVT_SERIALNUMBER
           RETURN           = LT_RETURN
 *         GOODSMVT_SERV_PART_DATA       =
 *         EXTENSIONIN      =
         .
       READ TABLE LT_RETURN INTO LS_RETURN WITH KEY TYPE = 'E'.
       IF SY-SUBRC = 0."说明有错误
         CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
         LOOP AT GT_OUTPUT ASSIGNING <FW_ALV> WHERE EBELN = <FW_BAPI>-EBELN AND SLBOX EQ 'X'.
           MOVE GC_LIGHT_R TO <FW_ALV>-STATUS."红灯
           MOVE LS_RETURN-MESSAGE TO <FW_ALV>-MESSAGE."错误消息
         ENDLOOP.
       ELSE.
         CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
           EXPORTING
             WAIT = 'X'.
         LOOP AT GT_OUTPUT ASSIGNING <FW_ALV> WHERE EBELN = <FW_BAPI>-EBELN AND SLBOX EQ 'X'.
           MOVE GC_LIGHT_G TO <FW_ALV>-STATUS."绿灯
           MOVE L_MATERIALDOCUMENT TO <FW_ALV>-MBLNR."绿灯
           MOVE '过账成功' TO <FW_ALV>-MESSAGE."错误消息
         ENDLOOP.
       ENDIF.
       CLEAR:LT_GOODSMVT_HEADER,
             LT_GOODSMVT_CODE,
             LT_TESTRUN,
             LT_GOODSMVT_ITEM,
             LT_GOODSMVT_SERIALNUMBER,
             LT_RETURN,
             LT_GOODSMVT_HEADRET,
             L_MATERIALDOCUMENT,
             L_MATDOCUMENTYEAR.
     ENDAT.
   ENDLOOP.
   PERFORM REFRESH_ALV.
 ENDFORM.
                    
                
                
            
        
浙公网安备 33010602011771号