SAP使用BAPI创建SO
&---------------------------------------------------------------------
*& Report YSO01
&---------------------------------------------------------------------
*& create so
&---------------------------------------------------------------------
REPORT YSO01.
* price
data:ta_order_conditions_in type TABLE OF bapicond WITH HEADER LINE,
ta_order_conditions_inx type TABLE OF bapicondx WITH HEADER LINE.
* sold to party
data:li_order_partners type STANDARD TABLE OF bapiparnr,
l_order_partners LIKE bapiparnr,
* so header
l_order_header_in like bapisdhd1,
l_order_header_inx like bapisdhd1x,
* so item
li_order_items_in type STANDARD TABLE OF bapisditm,
l_order_items_in like bapisditm,
li_order_items_inx type STANDARD TABLE OF bapisditmx,
l_order_items_inx like bapisditmx,
li_order_items_sche type STANDARD TABLE OF bapischdl,
l_order_items_sche like bapischdl,
li_order_items_schex type STANDARD TABLE OF bapischdlx,
l_order_items_schex like bapischdlx,
* bapi return
li_return type STANDARD TABLE OF bapiret2,
l_return type bapiret2,
* return so number
l_vbeln like bapivbeln-vbeln,
* error
l_errflag(1) type c.
START-OF-SELECTION.
* input partner infomation:sold-to party,ship-to party
clear l_order_partners.
l_order_partners-partn_role = ‘AG’.
l_order_partners-partn_numb = ‘0005001337’.
append l_order_partners to li_order_partners.
clear l_order_partners.
l_order_partners-partn_role = ‘WE’.
l_order_partners-partn_numb = ‘0005001337’.
append l_order_partners to li_order_partners.
* Build order header
"update flag
l_order_header_inx-updateflag = ‘I’.
"so type
l_order_header_in-doc_type = ‘ZOR’.
l_order_header_inx-doc_type = ‘X’.
"sales organization
l_order_header_in-sales_org = ‘2001’.
l_order_header_inx-sales_org = ‘X’.
"sales distribution channel
l_order_header_in-distr_chan = ‘00’.
l_order_header_inx-distr_chan = ‘X’.
"division
l_order_header_in-division = ‘00’.
l_order_header_inx-division = ‘X’.
"sales office
l_order_header_in-sales_off = ‘2001’.
l_order_header_inx-sales_off = ‘X’.
"customer reference
l_order_header_in-purch_no_c = ‘po121212’.
l_order_header_inx = ‘X’.
"requested delivery date.
l_order_header_in-req_date_h = sy-datum.
l_order_header_inx = ‘X’.
*Build order item
"posnr
l_order_items_in-itm_number = ‘10’.
l_order_items_inx-itm_number = ‘10’.
"pn
l_order_items_in-material = ‘0533250660’.
l_order_items_inx-material = ‘X’.
"quantity: so qty set in schedules
* l_order_items_in-target_qty = ‘32000’.
* l_order_items_inx-target_qty = ‘X’.
* l_order_items_in-comp_quant = ‘32000.000’.
* l_order_items_inx-comp_quant = ‘X’.
l_order_items_sche-itm_number = ‘10’. "posnr
l_order_items_sche-req_qty = ‘32000’.
append l_order_items_sche to li_order_items_sche.
append l_order_items_in to li_order_items_in.
l_order_items_inx-updateflag = ‘I’.
l_order_items_inx-config_ID = ‘X’.
append l_order_items_inx to li_order_items_inx.
l_order_items_in-itm_number = ‘20’.
l_order_items_inx-itm_number = ‘20’.
"pn
l_order_items_in-material = ‘0533250660’.
l_order_items_inx-material = ‘X’.
"quantity: so qty set in schedules
* l_order_items_in-target_qty = ‘32000’.
* l_order_items_inx-target_qty = ‘X’.
* l_order_items_in-comp_quant = ‘32000.000’.
* l_order_items_inx-comp_quant = ‘X’.
l_order_items_sche-itm_number = ‘20’. "posnr
l_order_items_sche-req_qty = ‘32000’.
append l_order_items_sche to li_order_items_sche.
append l_order_items_in to li_order_items_in.
l_order_items_inx-updateflag = ‘I’.
l_order_items_inx-config_ID = ‘X’.
append l_order_items_inx to li_order_items_inx.
"price
clear ta_order_conditions_in.
clear ta_order_conditions_inx.
ta_order_conditions_in-itm_number = ‘000010’.
ta_order_conditions_inx-itm_number = ‘000010’.
ta_order_conditions_in-cond_type = ‘PR01’.
ta_order_conditions_inx-cond_type = ‘X’.
ta_order_conditions_in-cond_value = ‘2000’.
ta_order_conditions_inx-cond_value = ‘X’.
append ta_order_conditions_in to ta_order_conditions_in.
append ta_order_conditions_inx to ta_order_conditions_inx.
CALL FUNCTION ‘BAPI_SALESORDER_CREATEFROMDAT2’
EXPORTING
* SALESDOCUMENTIN =
order_header_in = l_order_header_in
ORDER_HEADER_INX = l_order_header_inx
* SENDER =
* BINARY_RELATIONSHIPTYPE =
* INT_NUMBER_ASSIGNMENT =
* BEHAVE_WHEN_ERROR =
* LOGIC_SWITCH =
* TESTRUN =
* CONVERT = ’ ’
IMPORTING
SALESDOCUMENT = l_vbeln
tables
RETURN = li_return
ORDER_ITEMS_IN = li_order_items_in
ORDER_ITEMS_INX = li_order_items_inx
order_partners = li_order_partners
ORDER_SCHEDULES_IN = li_order_items_sche
* ORDER_SCHEDULES_INX =
* ORDER_CONDITIONS_IN = ta_order_conditions_in
* ORDER_CONDITIONS_INX = ta_order_conditions_inx
* ORDER_CFGS_REF =
* ORDER_CFGS_INST =
* ORDER_CFGS_PART_OF =
* ORDER_CFGS_VALUE =
* ORDER_CFGS_BLOB =
* ORDER_CFGS_VK =
* ORDER_CFGS_REFINST =
* ORDER_CCARD =
* ORDER_TEXT =
* ORDER_KEYS =
* EXTENSIONIN =
* PARTNERADDRESSES =
* EXTENSIONEX =
* NFMETALLITMS =
.
"check and write return table
clear l_errflag.
write:/ ‘sales document:’,l_vbeln.
loop at li_return into l_return.
write:/ l_return-type,l_return-message(50).
if l_return-type = ‘E’.
l_errflag = ‘X’.
endif.
endloop.
if l_errflag is INITIAL.
call function ‘BAPI_TRANSACTION_COMMIT’.
endif.
文章来自于网络,如果侵犯了您的权益,请联系站长删除!