‎2006 Mar 17 5:25 PM
Hi,
I'm a newbie in SAP, and I'm looking for a BAPI which able to create an order of purchase.
Thanks
‎2006 Mar 17 5:27 PM
Try BAPI_PO_CREATE1
Here is a sample FORM routine.
************************************************************************
* Form create_purchase_order
************************************************************************
form create_purchase_order.
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.
* Header Level Data
pohead-comp_code = '0010'.
pohead-doc_type = 'NB' .
pohead-creat_date = sy-datum .
pohead-vendor = p_lifnr.
pohead-purch_org = '0010'.
pohead-pur_group = 'EMG'.
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 = xresb-matnr.
poitem-plant = xresb-werks.
poitem-stge_loc = xresb-lgort.
poitem-quantity = p_bdmng.
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_bdmng.
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'.
if not ex_po_number is initial.
call function 'DEQUEUE_ALL'.
else.
call function 'DEQUEUE_ALL'.
message i036.
endif.
endform.
Regards,
Rich Heilman
‎2006 Mar 17 5:27 PM
Hi,
try Bapi BAPI_PO_CREATE
if you look for bapis run transaction BAPI.
Regards, Manuel
‎2006 Mar 17 5:27 PM
Try BAPI_PO_CREATE1
Here is a sample FORM routine.
************************************************************************
* Form create_purchase_order
************************************************************************
form create_purchase_order.
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.
* Header Level Data
pohead-comp_code = '0010'.
pohead-doc_type = 'NB' .
pohead-creat_date = sy-datum .
pohead-vendor = p_lifnr.
pohead-purch_org = '0010'.
pohead-pur_group = 'EMG'.
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 = xresb-matnr.
poitem-plant = xresb-werks.
poitem-stge_loc = xresb-lgort.
poitem-quantity = p_bdmng.
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_bdmng.
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'.
if not ex_po_number is initial.
call function 'DEQUEUE_ALL'.
else.
call function 'DEQUEUE_ALL'.
message i036.
endif.
endform.
Regards,
Rich Heilman
‎2006 Mar 17 5:39 PM
hi BERTHE
*****
Calling function BAPI_PO_CREATE TO CREATE PURCHASE ORDER
*****
CALL FUNCTION 'BAPI_PO_CREATE'
EXPORTING
PO_HEADER = W_PO_HEADER
SKIP_ITEMS_WITH_ERROR = 'X'
IMPORTING
PURCHASEORDER = W_PURCHASEORDER
TABLES
PO_ITEMS = W_PO_ITEMS
PO_ITEM_SCHEDULES = W_PO_ITEM_SCHEDULES
RETURN = W_RETURN
PO_LIMITS = W_PO_LIMITS
PO_CONTRACT_LIMITS = W_PO_CONTRACT_LIMITS
PO_SERVICES = W_PO_SERVICES
PO_SRV_ACCASS_VALUES = W_PO_SRV_ACCASS_VALUES
PO_SERVICES_TEXT = W_PO_SERVICES_TEXT
PO_BUSINESS_PARTNER = W_PO_BUSINESS_PARTNER
EXTENSIONIN = W_EXTENSIONIN
POADDRDELIVERY = W_POADDRDELIVERY
.
ENDIF.
‎2006 Mar 20 8:28 AM
Thanks a lot,
You gave me lot of usefull tools.
I solved my problem.
Regards,