자재문서 생성 바피 (BAPI_GOODSMVT_CREATE)

니언·2022년 10월 25일
 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.

profile
쭈니어 개발자

0개의 댓글