PO 변경 바피 ( BAPI_PO_CHANGE )

니언·2022년 10월 25일
  DATA : LT_POACCOUNT  LIKE TABLE OF BAPIMEPOACCOUNT,
         LT_POACCOUNTX LIKE TABLE OF BAPIMEPOACCOUNTX,
         LT_RETURN     LIKE TABLE OF BAPIRET2.

  DATA(LV_KOSTL)            = |{ GS_DATA-KOSTL ALPHA = IN }|.
  DATA(LV_SAKTO)            = |{ GS_DATA-SAKTO ALPHA = IN }|.

  LT_POACCOUNT = VALUE #( BASE LT_POACCOUNT
                          ( PO_ITEM     = GS_DATA-EBELP
                            SERIAL_NO   = GS_DATA-ZEKKN
                            COSTCENTER  = LV_KOSTL
                            GL_ACCOUNT  = LV_SAKTO  ) ).

  LT_POACCOUNTX = VALUE #( BASE LT_POACCOUNTX
                          ( PO_ITEM     = GS_DATA-EBELP
                            SERIAL_NO   = GS_DATA-ZEKKN
                            COSTCENTER  = GC_X
                            GL_ACCOUNT  = GC_X  ) ).

  CALL FUNCTION 'BAPI_PO_CHANGE'
    EXPORTING
      PURCHASEORDER            = GS_DATA-EBELN
    TABLES
      POACCOUNT                = LT_POACCOUNT
      POACCOUNTX               = LT_POACCOUNTX
      RETURN                   = LT_RETURN
    EXCEPTIONS
      AUTHORITY_CHECK_FAIL     = 1
      DOCUMENT_NOT_FOUND       = 2
      ENQUEUE_FAIL             = 3
      PREREQUISITE_FAIL        = 4
      RELEASE_ALREADY_POSTED   = 5
      RESPONSIBILITY_FAIL      = 6
      NO_RELEASE_ALREADY       = 7
      NO_NEW_RELEASE_INDICATOR = 8
      OTHERS                   = 9.

  READ TABLE LT_RETURN INTO DATA(LS_RETURN) WITH KEY TYPE = GC_E.
  IF SY-SUBRC EQ 0.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    GS_DATA = VALUE #( BASE GS_DATA
                        STATUS = '@5C@' "RED
                        TYPE = GC_E
                        MSG = LS_RETURN-MESSAGE ).
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    GS_DATA = VALUE #( BASE GS_DATA
                        STATUS = '@5B@' "GREEN
                        TYPE = GC_S
                        MSG = LS_RETURN-MESSAGE ).
  ENDIF.
profile
쭈니어 개발자

0개의 댓글