[MM] BAPI - BAPI_PO_CREATE1 (구매오더 생성)

뇬두·2024년 9월 5일
0

SAP

목록 보기
3/3
  DATA : ls_poheader  TYPE          bapimepoheader,
         ls_poheaderx TYPE          bapimepoheaderx,
         lt_poitem    TYPE TABLE OF bapimepoitem     WITH HEADER LINE,
         lt_poitemx   TYPE TABLE OF bapimepoitemx    WITH HEADER LINE,
         lt_posche    TYPE TABLE OF bapimeposchedule WITH HEADER LINE,
         lt_poschex   TYPE TABLE OF bapimeposchedulx WITH HEADER LINE,
         lt_return    TYPE TABLE OF bapiret2         WITH HEADER LINE,
         lv_ponum     TYPE          bapimepoheader-po_number,
         lv_num       TYPE          ebelp,
         lv_tabix     TYPE          sy-tabix.

  CLEAR   : ls_poheader, ls_poheaderx, lv_ponum, lv_num, gs_data.
  REFRESH : lt_return, lt_poitem, lt_poitemx, lt_posche, lt_poschex.

      "구매오더 헤더데이터
      ls_poheader-comp_code  = 'bukrs'.  "회사코드
      ls_poheader-doc_type   = 'bsart'.  "문서 유형
      ls_poheader-vendor     = 'flief'.  "공급 업체
      ls_poheader-purch_org  = 'ekorg'.  "구매 조직
      ls_poheader-pur_group  = 'ekgrp'.  "구매 그룹
      ls_poheader-doc_date   = sy-datum. "구매 증빙일

      "구매오더 헤더데이터(변경자)
      ls_poheaderx-comp_code  = 'X'.
      ls_poheaderx-doc_type   = 'X'.
      ls_poheaderx-vendor     = 'X'.
      ls_poheaderx-purch_org  = 'X'.
      ls_poheaderx-pur_group  = 'X'.
      ls_poheaderx-doc_date   = 'X'.

	lv_num = 10.

* 구매오더 아이템 데이터
    lt_poitem-po_item    = lv_num.  "구매오더 품목번호
    lt_poitem-material   = 'matnr'. "자재 번호
    lt_poitem-matl_group = 'matkl'. "자재그룹
    lt_poitem-plant      = 'werks'. "플랜트
    lt_poitem-stge_loc   = 'lgort'. "저장위치
    lt_poitem-quantity   = 'menge'. "수량
    lt_poitem-po_unit    = 'meins'. "단위
    lt_poitem-preq_no    = 'banfn'. "구매요청번호
    lt_poitem-preq_item  = 'bnfpo'. "구매 요청 품목 번호

    APPEND lt_poitem.

* 구매오더 아이템 데이터(변경자)
    lt_poitemx-po_item     = lv_num. "품목 번호
    lt_poitemx-material    = 'X'.    "자재 번호
    lt_poitemx-matl_group  = 'X'.    "자재 그룹
    lt_poitemx-plant       = 'X'.    " 플랜트
    lt_poitemx-stge_loc    = 'X'.    " 저장 위치
    lt_poitemx-quantity    = 'X'.    " 수량
    lt_poitemx-po_unit     = 'X'.    " 단위
    lt_poitemx-preq_no     = 'X'.    "구매요청번호
    lt_poitemx-preq_item   = 'X'.    "구매요청품목번호

    APPEND lt_poitemx.

      "BAPI 호출
      CALL FUNCTION 'BAPI_PO_CREATE1'
        EXPORTING
          poheader         = ls_poheader
          poheaderx        = ls_poheaderx
        IMPORTING
          exppurchaseorder = lv_ponum
        TABLES
          return           = lt_return
          poitem           = lt_poitem
          poitemx          = lt_poitemx.

      IF lv_ponum IS NOT INITIAL.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.


        "메시지
        READ TABLE lt_return WITH KEY type = 'S'.

        IF sy-subrc = 0.
          MESSAGE S000 WITH lt_return-message.

        ENDIF.

      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

        READ TABLE lt_return WITH KEY type = 'S'.

        IF sy-subrc NE 0.
          MESSAGE E000 WITH lt_return-message.

        ENDIF.

      ENDIF.

      CLEAR   : ls_poheader, ls_poheaderx, gs_crt.
      REFRESH : lt_poitem, lt_poitem, lt_posche, lt_poschex.

0개의 댓글