Documente Academic
Documente Profesional
Documente Cultură
* Tables
TABLES: ekko.
* Selection Screen
SELECT-OPTIONS: s_ebeln FOR ekko-ebeln.
* Types declaration for EKKO table
TYPES: BEGIN OF ty_ekko,
ebeln TYPE ebeln,
END OF ty_ekko.
* Types declaration for EKPO table
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 declaration for MAKTX table
TYPES: 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 Declaration
DATA: IT_EKKO TYPE STANDARD TABLE
IT_EKPO TYPE STANDARD TABLE
IT_TEMP TYPE STANDARD TABLE
IT_MAKTX TYPE STANDARD TABLE
IT_DET
OF
OF
OF
OF
TY_EKKO,
TY_EKPO,
TY_EKPO,
TY_MAKTX,
BAPI2017_GM_HEAD_01,
BAPI2017_GM_ITEM_CREATE,
BAPI2017_GM_HEAD_RET,
TYPE STANDARD TABLE OF BAPIRET2,
GMVT_ITEM
START-OF-SELECTION.
*Retrieve PO documents from Header (EKKO) table
SELECT EBELN FROM EKKO
INTO TABLE IT_EKKO
WHERE 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_EKPO
FOR ALL ENTRIES IN IT_EKKO
WHERE 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.
*
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.