Dear Experts,
I've made a coding by calling BAPI for goods movement with reference to the production order. The result of the program should be executed with the 101 movement type provided with the document no which i'm not able to generate the process.
Piece of coding is as below. Need help .
REPORT ZPP_MAT_EXT.
TABLES : EKKO.
TYPES : BEGIN OF TY_EKKO,
EBELN TYPE EKKO-EBELN,
END OF TY_EKKO.
TYPES : 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 : BEGIN OF TY_OUTPUT,
EBELN TYPE EBELN,
MBLNR TYPE MBLNR,
MJAHR TYPE MJAHR,
END OF TY_OUTPUT.
TYPES : BEGIN OF TY_FINAL,
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_FINAL.
DATA : GT_EKKO TYPE TABLE OF TY_EKKO,
GS_EKKO TYPE TY_EKKO.
DATA : GT_EKPO TYPE TABLE OF TY_EKPO,
GS_EKPO TYPE TY_EKPO.
DATA : GT_FINAL TYPE TABLE OF TY_FINAL,
GS_FINAL TYPE TY_FINAL.
DATA : GT_OUTPUT TYPE TABLE OF TY_OUTPUT,
GS_OUTPUT TYPE TY_OUTPUT.
START-OF-SELECTION.
SELECT-OPTIONS : S_EBELN FOR EKKO-EBELN.
PERFORM GET_EKKO_DATA.
PERFORM GET_EKPO_DATA.
PERFORM POPULATE_DATA.
PERFORM CALL_BAPI.
"BAPI_GOODSMVT_CREATE
DATA : GOODSMVT_HEADER TYPE BAPI2017_GM_HEAD_01,
GOODSMVT_CODE TYPE BAPI2017_GM_CODE.
DATA : GOODSMVT_HEADRET TYPE BAPI2017_GM_HEAD_RET.
DATA : GT_GOODSMVMT_ITEM TYPE TABLE OF BAPI2017_GM_ITEM_CREATE,
GS_GOODSMVMT_ITEM TYPE BAPI2017_GM_ITEM_CREATE.
DATA : GT_RETURN TYPE TABLE OF BAPIRET2,
GS_RETURN TYPE BAPIRET2.
*&---------------------------------------------------------------------*
*& Form GET_EKKO_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_EKKO_DATA .
SELECT
EBELN
FROM EKKO INTO TABLE GT_EKKO WHERE EBELN IN S_EBELN.
ENDFORM. " GET_EKKO_DATA
*&---------------------------------------------------------------------*
*& Form GET_EKPO_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM GET_EKPO_DATA .
IF NOT GT_EKKO IS INITIAL.
SELECT
EBELN
EBELP
MATNR
WERKS
LGORT
MENGE
MEINS
FROM EKPO INTO TABLE GT_EKPO FOR ALL ENTRIES IN GT_EKKO WHERE EBELN = GT_EKKO-EBELN.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form POPULATE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM POPULATE_DATA .
LOOP AT GT_EKPO INTO GS_EKPO.
GS_FINAL-EBELN = GS_EKPO-EBELN.
GS_FINAL-EBELP = GS_EKPO-EBELP.
GS_FINAL-MATNR = GS_EKPO-MATNR.
GS_FINAL-WERKS = GS_EKPO-WERKS.
GS_FINAL-LGORT = GS_EKPO-LGORT.
GS_FINAL-MENGE = GS_EKPO-MENGE.
GS_FINAL-MEINS = GS_EKPO-MEINS.
" BAPI HEADER STRUCTURE
GOODSMVT_HEADER-PSTNG_DATE = SY-DATUM.
GOODSMVT_HEADER-DOC_DATE = SY-DATUM.
GOODSMVT_HEADER-PR_UNAME = SY-UNAME.
GOODSMVT_HEADER-REF_DOC_NO_LONG = GS_EKPO-EBELN.
" BAPI ITEM STRUCTURE
GS_GOODSMVMT_ITEM-MATERIAL = GS_EKPO-MATNR.
GS_GOODSMVMT_ITEM-PLANT = GS_EKPO-WERKS.
GS_GOODSMVMT_ITEM-STGE_LOC = GS_EKPO-LGORT.
GS_GOODSMVMT_ITEM-MOVE_TYPE = '101'.
GS_GOODSMVMT_ITEM-PO_NUMBER = GS_EKPO-EBELN.
GS_GOODSMVMT_ITEM-PO_ITEM = GS_EKPO-EBELP.
GS_GOODSMVMT_ITEM-ENTRY_QNT = GS_EKPO-MENGE.
GS_GOODSMVMT_ITEM-ENTRY_UOM = GS_EKPO-MEINS.
GS_GOODSMVMT_ITEM-NO_MORE_GR = 'X'.
GS_GOODSMVMT_ITEM-REF_DOC = GS_EKPO-EBELN.
GS_GOODSMVMT_ITEM-PROD_DATE = SY-DATUM.
GS_GOODSMVMT_ITEM-MVT_IND = 'B'.
APPEND GS_GOODSMVMT_ITEM TO GT_GOODSMVMT_ITEM.
ENDLOOP.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CALL_BAPI
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CALL_BAPI .
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = GOODSMVT_HEADER
GOODSMVT_CODE = '01'
* TESTRUN = ' '
* GOODSMVT_REF_EWM =
IMPORTING
GOODSMVT_HEADRET = GOODSMVT_HEADRET
* MATERIALDOCUMENT =
* MATDOCUMENTYEAR =
TABLES
GOODSMVT_ITEM = GT_GOODSMVMT_ITEM
* GOODSMVT_SERIALNUMBER =
RETURN = GT_RETURN.
* GOODSMVT_SERV_PART_DATA =
* EXTENSIONIN =
* AFS_GOODSMVT_SKU =
IF SY-SUBRC = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
* IMPORTING
* RETURN =
ENDIF.
WRITE:1(15)'PO document', 18(20)'Material Documant', 40(5)'Year'.
LOOP AT GT_OUTPUT INTO GS_OUTPUT.
WRITE:/1(15) GS_OUTPUT-EBELN,
18(20) GS_OUTPUT-MBLNR,
40(5) GS_OUTPUT-MJAHR.
ENDLOOP.
ENDFORM. " CALL_BAPI