본문 바로가기
SAP MM/MM Development

[BAPI] PO 생성 BAPI - BAPI_PO_CREATE1

by SANGBAE MOON 2022. 12. 9.

구매오더 (Purchase order) 를 생성할 수 있는 BAPI 입니다. 

Funcion : BAPI_PO_CREATE1

constants : c_x value 'X'.

data: del_date type sy-datum.

data: pohead  type bapimepoheader.
data: poheadx type bapimepoheaderx.

data: exp_head type bapimepoheader.

data: return  type table of bapiret2 with header line.
data: poitem  type table of bapimepoitem with header line.
data: poitemx type table of bapimepoitemx with header line.

data: posched  type table of bapimeposchedule with header line.
data: poschedx type table of bapimeposchedulx with header line.

data: ex_po_number type bapimepoheader-po_number.

* Parameters (Optional) 
parameters: p_matnr type ekpo-matnr.
parameters: p_werks type ekpo-werks.
parameters: p_lgort type ekpo-lgort.
parameters: p_menge type ekpo-menge.
parameters: p_lifnr type ekko-lifnr.
parameters: p_ekorg type ekko-ekorg.
parameters: p_ekgrp type ekko-ekgrp.
parameters: p_bukrs type ekko-bukrs.

* Header Level Data

pohead-comp_code = p_bukrs.
pohead-doc_type   = 'NB'     .
pohead-creat_date = sy-datum   .

pohead-vendor = p_lifnr.
pohead-purch_org = p_ekorg.
pohead-pur_group = p_ekgrp.

pohead-langu      = sy-langu   .
pohead-doc_date   = sy-datum.

poheadx-comp_code  = c_x.
poheadx-doc_type   = c_x.
poheadx-creat_date = c_x.
poheadx-vendor     = c_x.
poheadx-langu      = c_x.
poheadx-purch_org  = c_x.
poheadx-pur_group  = c_x.
poheadx-doc_date   = c_x.


* Item Level Data
poitem-po_item  = 1.
poitem-material = p_matnr.
poitem-plant    = p_werks.
poitem-stge_loc = p_lgort.
poitem-quantity = p_menge.
append poitem.

poitemx-po_item    = 1.
poitemx-po_itemx   = c_x.
poitemx-material   = c_x.
poitemx-plant      = c_x .
poitemx-stge_loc   = c_x .
poitemx-quantity   = c_x .
poitemx-tax_code   = c_x .
poitemx-item_cat   = c_x .
poitemx-acctasscat = c_x .
append poitemx.


* Schedule Line Level Data
posched-po_item        = 1.
posched-sched_line     = 1.
posched-del_datcat_ext = 'D'.
del_date = sy-datum + 1.
write del_date to posched-delivery_date.
posched-deliv_time     = '000001'.
posched-quantity       = p_menge.
append posched.

poschedx-po_item        = 1.
poschedx-sched_line     = 1.
poschedx-po_itemx       = c_x.
poschedx-sched_linex    = c_x.
poschedx-del_datcat_ext = c_x.
poschedx-delivery_date  = c_x.
poschedx-quantity       = c_x.
append poschedx.

call function 'BAPI_PO_CREATE1'
     exporting
          poheader         = pohead
          poheaderx        = poheadx
          testrun          = ' '
     importing
          exppurchaseorder = ex_po_number
          expheader        = exp_head
     tables
          return           = return
          poitem           = poitem
          poitemx          = poitemx
          poschedule       = posched
          poschedulex      = poschedx.

call function 'BAPI_TRANSACTION_COMMIT'
     exporting
          wait = 'X'.

 

댓글