자재문서 취소 바피 (BAPI_GOODSMVT_CANCEL)

니언·2022년 10월 25일
  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.
profile
쭈니어 개발자

0개의 댓글