Bapi_migo

Embed Size (px)

Citation preview

  • 7/25/2019 Bapi_migo

    1/3

    By Prasanna, Infosys

    The BAPI 'BAPI_GOODSMVT_CREATEis used here to post Goods Receipt. Create a program with the following code:

    * TablesTABLES: ekko.

    * Selection ScreenSELECT-OPTIONS: s_ebeln FOR ekko-ebeln.

    * Types declaration for EKKO tableTYPES: BEGIN OF ty_ekko, ebeln TYPE ebeln, END OF ty_ekko.

    * Types declaration for EKPO tableTYPES: BEGIN OF ty_ekpo, ebeln TYPE ebeln, ebelp TYPE ebelp, matnr TYPE matnr, werks TYPE ewerk, lgort TYPE lgort_d, menge TYPE bstmg,

    meins TYPE bstme, END OF ty_ekpo.

    * Types declaration for MAKTX tableTYPES: BEGIN OF ty_maktx, matnr TYPE matnr, maktx TYPE maktx, END OF ty_maktx.

    *Types declaration for Output data structure

    TYPES: BEGIN OF ty_det, ebeln TYPE ebeln,

    mblnr TYPE mblnr, mjahr TYPE mjahr, END OF ty_det.

    * Internal Tables DeclarationDATA: IT_EKKO TYPE STANDARD TABLE OF TY_EKKO, IT_EKPO TYPE STANDARD TABLE OF TY_EKPO, IT_TEMP TYPE STANDARD TABLE OF TY_EKPO, IT_MAKTX TYPE STANDARD TABLE OF TY_MAKTX,

    IT_DET TYPE STANDARD TABLE OF TY_DET.

    * Work area Declarations

    DATA: wa_ekpo TYPE ty_ekpo, wa_maktx TYPE ty_maktx,

    wa_det TYPE ty_det.

    * BAPI Structure DeclarationDATA: GMVT_HEADER TYPE BAPI2017_GM_HEAD_01, WA_GMVT_ITEM TYPE BAPI2017_GM_ITEM_CREATE, GMVT_HEADRET TYPE BAPI2017_GM_HEAD_RET, RT_BAPIRET TYPE STANDARD TABLE OF BAPIRET2,

  • 7/25/2019 Bapi_migo

    2/3

    GMVT_ITEM TYPE STANDARD TABLE OF BAPI2017_GM_ITEM_CREATE.

    START-OF-SELECTION.

    *Retrieve PO documents from Header (EKKO) tableSELECT EBELN FROM EKKOINTO TABLE IT_EKKOWHERE EBELN IN S_EBELN.

    IF sy-subrc = 0 AND it_ekko[] IS NOT INITIAL.

    *Retrieve PO document details from Item (EKPO) table SELECT EBELN EBELP MATNR WERKS LGORT MENGE MEINS FROM EKPO INTO TABLE IT_EKPOFOR ALL ENTRIES IN IT_EKKOWHERE EBELN = IT_EKKO-EBELN.

    IF SY-SUBRC = 0 AND IT_EKPO[] IS NOT INITIAL. IT_TEMP[] = IT_EKPO[]. SORT IT_TEMP BY MATNR. DELETE ADJACENT DUPLICATES FROM IT_TEMP COMPARING MATNR.

    IF IT_TEMP[] IS NOT INITIAL.

    * Retrieve the Material Description from MAKT table SELECT MATNR MAKTX FROM MAKT INTO TABLE IT_MAKTX FOR ALL ENTRIES IN IT_TEMP WHERE MATNR = IT_TEMP-MATNR. SORT IT_EKPO BY EBELN EBELP. ENDIF. ENDIF.ENDIF.

    * Looping the PO details.LOOP AT it_ekpo INTO wa_ekpo .

    READ TABLE IT_MAKTX INTO WA_MAKTX WITH KEY MATNR = WA_EKPO-MATNR. IF SY-SUBRC = 0. WA_GMVT_ITEM-ITEM_TEXT = WA_MAKTX-MAKTX. ENDIF.

    * Fill the bapi Header structure details GMVT_HEADER-PSTNG_DATE = SY-DATUM. GMVT_HEADER-DOC_DATE = SY-DATUM. GMVT_HEADER-PR_UNAME = SY-UNAME. GMVT_HEADER-REF_DOC_NO = WA_EKPO-EBELN.

    * FILL THE BAPI ITEM STRUCTURE DETAILS WA_GMVT_ITEM-MATERIAL = WA_EKPO-MATNR.

    WA_GMVT_ITEM-PLANT = WA_EKPO-WERKS. WA_GMVT_ITEM-STGE_LOC = WA_EKPO-LGORT. WA_GMVT_ITEM-MOVE_TYPE = '101'. WA_GMVT_ITEM-PO_NUMBER = WA_EKPO-EBELN. WA_GMVT_ITEM-PO_ITEM = WA_EKPO-EBELP. WA_GMVT_ITEM-ENTRY_QNT = WA_EKPO-MENGE. WA_GMVT_ITEM-ENTRY_UOM = WA_EKPO-MEINS. WA_GMVT_ITEM-NO_MORE_GR = 'X'. WA_GMVT_ITEM-REF_DOC = WA_EKPO-EBELN. WA_GMVT_ITEM-PROD_DATE = SY-DATUM.

  • 7/25/2019 Bapi_migo

    3/3

    WA_GMVT_ITEM-MVT_IND = 'B'.

    APPEND WA_GMVT_ITEM TO GMVT_ITEM. CLEAR WA_GMVT_ITEM.

    * Call the BAPI FM for GR posting CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING GOODSMVT_HEADER = GMVT_HEADER GOODSMVT_CODE = '01' IMPORTING GOODSMVT_HEADRET = GMVT_HEADRET TABLES GOODSMVT_ITEM = GMVT_ITEM[] RETURN = RT_BAPIRET[].

    IF sy-subrc = 0.* For commit the changes use BAPI_TRANSACTION_COMMIT FM. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. MOVE: GMVT_HEADRET-MAT_DOC TO WA_DET-MBLNR, GMVT_HEADRET-DOC_YEAR TO WA_DET-MJAHR, GMVT_HEADER-REF_DOC_NO TO WA_DET-EBELN.

    APPEND WA_DET TO IT_DET. CLEAR WA_DET. ENDIF. ENDLOOP.

    WRITE:1(15)'PO document', 18(20)'Material Documant', 40(5)'Year'. LOOP AT IT_DET INTO WA_DET. WRITE:/1(15) WA_DET-EBELN, 18(20) WA_DET-MBLNR, 40(5) WA_DET-MJAHR. ENDLOOP.