DATA : LV_GMCODE LIKE BAPI2017_GM_CODE VALUE '04',
"'04' Transfer posting, '01' Goods receipt for purchase order
LV_MBLNR TYPE BAPI2017_GM_HEAD_RET-MAT_DOC,
LV_MJAHR TYPE BAPI2017_GM_HEAD_RET-DOC_YEAR,
LT_ITEM LIKE TABLE OF BAPI2017_GM_ITEM_CREATE,
LT_RETURN LIKE TABLE OF BAPIRET2.
DATA: LV_INDEX.
* 이전 처리 메세지 CLEAR
CLEAR: GS_0100.
MODIFY GT_0100 FROM GS_0100 TRANSPORTING ICON MSG
WHERE ICON IS NOT INITIAL.
LV_INDEX += 1.
LOOP AT GT_0100 INTO DATA(LS_0100) WHERE CHECK = GC_X.
*--------------------------------------------------------------------*
* HEADER
*--------------------------------------------------------------------*
DATA(LS_HEADER) = VALUE BAPI2017_GM_HEAD_01(
PSTNG_DATE = "기표일자
DOC_DATE = "증빙일자
).
*--------------------------------------------------------------------*
* ITEM
*--------------------------------------------------------------------*
LT_ITEM = VALUE #( BASE LT_ITEM
( MOVE_TYPE =
MATERIAL =
PLANT =
STGE_LOC =
MOVE_MAT =
MOVE_PLANT =
MOVE_STLOC =
ENTRY_QNT = "이동수량
) ).
*--------------------------------------------------------------------*
* BAPI Execute
*--------------------------------------------------------------------*
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = LS_HEADER
GOODSMVT_CODE = LV_GMCODE
IMPORTING
* goodsmvt_headret = ls_headret
MATERIALDOCUMENT = LV_MBLNR
MATDOCUMENTYEAR = LV_MJAHR
TABLES
GOODSMVT_ITEM = LT_ITEM
RETURN = LT_RETURN.
IF LV_MBLNR IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LS_0100 = VALUE #( BASE LS_0100
ICON = ICON_LED_GREEN
MSG = TEXT-M06 && LV_MBLNR
MBLNR = LV_MBLNR
).
ELSE.
READ TABLE LT_RETURN INTO DATA(LS_RETURN) INDEX 1.
LS_0100 = VALUE #( BASE LS_0100
ICON = ICON_LED_RED
MSG = LS_RETURN-MESSAGE
).
"에러메시지 update
GV_ERROR = GC_X.
LV_MSG = |{ LS_RETURN-MESSAGE } { TEXT }|.
ENDIF.
IF SY-SUBRC EQ 0.
COMMIT WORK.
ENDIF.
CLEAR : LS_HEADER, LT_ITEM, LS_RETURN, LT_RETURN,
LV_MBLNR, LV_MJAHR, LV_MSG.
MODIFY GT_0100 FROM LS_0100 TRANSPORTING ICON MSG MBLNR.
CLEAR: LS_0100.
ENDLOOP.
WAIT UP TO GC_SECONDS SECONDS.