BAPI_PO_CREATE1 - 구매 오더 생성 (예제 코드 포함)
2023. 4. 12. 17:14ㆍABAP/BAPI
728x90
반응형
안녕하세요 파피킴입니다.
오늘은 구매오더(Purchase Order 이하 PO) 를 생성하는 BAPI 를 알아보도록 하겠습니다~
WM 에서는 주로 재고 운송 오더 (Stock Transfer Order 이하 STO) 를 사용하기 때문에 STO 를 생성하는 코드로 예제를 구성해 보았습니다~!
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_poschedule TYPE TABLE OF bapimeposchedule WITH HEADER LINE,
lt_poschedulex TYPE TABLE OF bapimeposchedulx WITH HEADER LINE,
lv_po_number TYPE bapimepoheader-po_number,
lt_return TYPE TABLE OF bapiret2 WITH HEADER LINE.
***<<< 헤더 세팅
ls_poheader-comp_code = '회사 코드'. " 회사 코드
ls_poheader-doc_type = 'UB'. " 오더 유형
ls_poheader-purch_org = '구매 조직'. " 구매 조직
ls_poheader-pur_group = '구매 그룹'. " 구매 그룹
ls_poheader-doc_date = sy-datum. " 구매 증빙일
ls_poheader-suppl_plnt = '플랜트'. " 공급 플랜트
ls_poheader-our_ref = '저장 위치'. " 출고 저장 위치
ls_poheaderx-comp_code = 'X'.
ls_poheaderx-doc_type = 'X'.
ls_poheaderx-purch_org = 'X'.
ls_poheaderx-pur_group = 'X'.
ls_poheaderx-doc_date = 'X'.
ls_poheaderx-suppl_plnt = 'X'.
ls_poheaderx-our_ref = 'X'.
***>>> 헤더 세팅
***<<< 아이템 세팅
lt_poitem-po_item = '10'. " 품목 번호
lt_poitem-material = '자재 번호'. " 자재 번호
lt_poitem-plant = '플랜트'. " 플랜트
*lt_poitem-batch = ''. " 배치 번호
lt_poitem-stge_loc = '저장 위치'. " 저장 위치
lt_poitem-quantity = '22'. " 수량
lt_poitem-po_unit = 'KG'. " 단위
lt_poitem-suppl_stloc = '저장 위치'. " 출고 저장 위치
APPEND lt_poitem.
lt_poitemx-po_item = '10'. " 품목 번호
lt_poitemx-material = 'X'. " 자재 번호
lt_poitemx-plant = 'X'. " 플랜트
*lt_poitemx-batch = 'X'. " 배치 번호
lt_poitemx-stge_loc = 'X'. " 저장 위치
lt_poitemx-quantity = 'X'. " 수량
lt_poitemx-po_unit = 'X'. " 단위
lt_poitemx-suppl_stloc = 'X'. " 출고 저장 위치
APPEND lt_poitemx.
***>>> 아이템 세팅
***<<< 납품 세팅
lt_poschedule-po_item = '10'.
lt_poschedule-sched_line = '0001'.
lt_poschedule-delivery_date = sy-datum. " 계획 출고일
APPEND lt_poschedule.
lt_poschedulex-po_item = '10'.
lt_poschedulex-sched_line = '0001'.
lt_poschedulex-delivery_date = sy-datum.
APPEND lt_poschedulex.
***>>> 납품 세팅
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = ls_poheader
poheaderx = ls_poheaderx
IMPORTING
exppurchaseorder = lv_po_number
TABLES
return = lt_return
poitem = lt_poitem
poitemx = lt_poitemx
poschedule = lt_poschedule
poschedulex = lt_poschedulex.
IF lv_po_number IS NOT INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
MESSAGE s000 WITH 'SUCCESS' lv_po_number.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
READ TABLE lt_return WITH KEY type = 'E'.
MESSAGE ID lt_return-id TYPE 'S' NUMBER lt_return-number
WITH lt_return-message_v1 lt_return-message_v2
lt_return-message_v3 lt_return-message_v4
DISPLAY LIKE lt_return-type.
ENDIF.
코드가 길어 보여서 조금 놀라셨을 수도 있을 것 같아요~
막상 내용 보면 별거 없으니 걱정하지 않으셔도 됩니다~!
구매 조직 등 어떤 값을 넣어야 할지 잘 모르시겠다면 ME23N 에서 오더를 조회하셔서 똑같이 입력해보시는 것을 추천드립니다~
질문 있으시면 댓글 부탁드립니다!
이상 샙가능의 파피킴이었습니다.
728x90
반응형
'ABAP > BAPI' 카테고리의 다른 글
BAPI_USER_CHANGE - 유저 정보 변경 (예제 코드 포함) (0) | 2023.06.15 |
---|---|
SAPGUI_SET_FUNCTIONCODE - Function Code 강제 입력 (예제 포함) (0) | 2023.05.08 |
L_READ_SU - SU 정보 읽기 (예제 코드 포함) (0) | 2023.04.04 |
L_TO_CONFIRM - TO 확정 (예제 코드 포함) (0) | 2023.03.27 |
L_TO_CANCEL - 미확정 TO 취소 (예제 코드 포함) (0) | 2023.03.24 |