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.