DATA: LT_RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE,
LS_MBLNR TYPE BAPI2017_GM_HEAD_RET.
LOOP AT GT_0100 INTO DATA(LS_0100) WHERE CHECK = GC_X.
CALL FUNCTION 'BAPI_GOODSMVT_CANCEL'
EXPORTING
MATERIALDOCUMENT = LS_0100-MBLNR
MATDOCUMENTYEAR = LS_0100-MJAHR
GOODSMVT_PSTNG_DATE = LS_0100-ST_DATE
GOODSMVT_PR_UNAME = SY-UNAME
IMPORTING
GOODSMVT_HEADRET = LS_MBLNR
TABLES
RETURN = LT_RETURN.
IF LS_MBLNR IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LS_0100 = VALUE #( BASE LS_0100
ICON = ICON_LED_GREEN
MSG = TEXT-M05 && LS_MBLNR-MAT_DOC
MBLNR2 = SPACE
ST_QTY = 0
ST_DATE = GC_00000000
).
* PERFORM change_msg70 CHANGING ls_0100-msg70.
IF SY-SUBRC EQ 0.
COMMIT WORK.
ENDIF.
ELSE.
READ TABLE LT_RETURN WITH KEY TYPE = GC_E.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
LS_0100 = VALUE #( BASE LS_0100
ICON = ICON_LED_RED
MSG = LT_RETURN-MESSAGE ).
ENDIF.
ENDIF.
MODIFY GT_0100 FROM LS_0100 TRANSPORTING ICON MSG
MBLNR2 ST_QTY ST_DATE.
CLEAR: LS_0100, LS_MBLNR, LT_RETURN.
ENDLOOP.
WAIT UP TO GC_SECONDS SECONDS.