04-08-2009 12:56 PM
hello
iam trying to create a sale order with respect to order BAPI_SALESORDER_CREATEFROMDAT2.
the parameters i am passing is
*Fill the header information for the order.
wa_order_header_in-doc_type = Sales Doc type of order to be created.
wa_order_header_in-sales_org = sales org.
wa_order_header_in-distr_chan = distribution channel.
wa_order_header_in-division = division.
wa_order_header_in-ref_doc = order number(This is the order i refer to).
wa_order_header_in-refdoc_cat = 'C' (c stands for order).
*Fill the item level information for the order.
wa_order_items_in-itm_number = item number.
wa_order_items_in-material = material number.
wa_order_items_in-ref_doc = order number(This is the order i refer to).
wa_order_items_in-ref_doc_it = Item number of order i create.
wa_order_items_in-ref_doc_ca = 'C'.
APPEND wa_order_items_in TO i_order_items_in.
*Fill the partner information for the order.
wa_order_partners-partn_role = partner function.
wa_order_partners-partn_numb = partner number.
APPEND wa_order_partners TO i_order_partners.
& likewise conditions structure
i have done bapi_transaction_commit after bapi call.
probelm which i am facing is , BAPI is creating a new sale order.. but it is not creating a order with reference order.
thanks
04-08-2009 2:15 PM
Hi,
Try to populate reference document number and reference document category in order_header parameter. Also mark the fields as 'X' in order_header_inx parameter passed to bapi.
Hopefully it should work.
KR Jaideep,
04-08-2009 2:20 PM
Hi Manjunath,
See the below code and correct your code..
i Hope this will help you.
*Build Partner Information
clear l_order_partners .
l_order_partners-partn_role = 'AG'.
l_order_partners-partn_numb = '0000001002'.
append l_order_partners to li_order_partners.
*Update Flag
l_order_header_inx-updateflag = 'I'.
*Sales document type
l_order_header_in-doc_type = 'TA'.
l_order_header_inx-doc_type = 'X'.
*Sales Organization
l_order_header_in-sales_org = '1000'.
l_order_header_inx-sales_org = 'X'.
*Distribution Channel
l_order_header_in-distr_chan = '10'.
l_order_header_inx-distr_chan = 'X'.
*Division
l_order_header_in-division = '00'.
l_order_header_inx-division = 'X'.
*Purchase Order
l_order_header_in-purch_no_c = 'DG-19970626-300'.
l_order_header_inx-purch_no_c = 'X'.
*Build Order Items for 1 item
l_order_items_in-itm_number = '10'.
l_order_items_inx-itm_number = '10'.
l_order_items_in-material = 'P-100'.
l_order_items_inx-material = 'X'.
l_order_items_in-comp_quant = '1.000'.
l_order_items_inx-comp_quant = 'X'.
append l_order_items_in to li_order_items_in.
l_order_items_inx-updateflag = 'I'.
append l_order_items_inx to li_order_items_inx.
call function 'BAPI_SALESORDER_CREATEFROMDAT2'
exporting
order_header_in = l_order_header_in
order_header_inx = l_order_header_inx
testrun = 'X'
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.
.
Regards,
Prabhudas
04-08-2009 2:23 PM
see this example as how to add text and multiple lines...
loop at it_tab into wa_tab.
record_no = sy-tabix.
serial_no = wa_tab-ser_no.
* ORDER_TYPE = WA_TAB-ORD_TYP.
sales_office = wa_tab-sal_off.
sales_group = wa_tab-sal_grp.
old_ref_no = wa_tab-ref_shp_to_par.
shipping_condition = wa_tab-ship_cond.
perform sales_info using sales_office sales_group
shipping_condition.
condense shipping_condition.
ship_cond = shipping_condition.
on change of old_ref_no.
refresh it_bapisdhead.
refresh it_bapisdhead1x.
refresh it_bapiparnr.
wa_bapisdhead-doc_type = wa_tab-ord_typ.
wa_bapisdhead1x-doc_type = 'X'.
wa_bapisdhead-sales_org = '5088'.
wa_bapisdhead1x-sales_org = 'X'.
wa_bapisdhead-distr_chan = '01'.
wa_bapisdhead1x-distr_chan = 'X'.
wa_bapisdhead-division = '00'.
wa_bapisdhead1x-division = 'X'.
wa_bapisdhead-sales_grp = sales_group.
wa_bapisdhead1x-sales_grp = 'X'.
wa_bapisdhead-sales_off = sales_office.
wa_bapisdhead1x-sales_off = 'X'.
wa_bapisdhead-purch_no_c = wa_tab-po_no.
wa_bapisdhead1x-purch_no_c = 'X'.
wa_bapisdhead-purch_date = wa_tab-po_date.
wa_bapisdhead1x-purch_date = 'X'.
wa_bapisdhead-req_date_h = wa_tab-req_del_date.
wa_bapisdhead1x-req_date_h = 'X'.
wa_bapisdhead-incoterms1 = 'EXW'.
wa_bapisdhead1x-incoterms1 = 'X'.
wa_bapisdhead-incoterms2 = wa_tab-inco_terms2.
wa_bapisdhead1x-incoterms2 = 'X'.
wa_bapisdhead-ship_cond = ship_cond.
wa_bapisdhead1x-ship_cond = 'X'.
wa_bapisdhead-ref_1 = wa_tab-ref_sld_to_par.
wa_bapisdhead1x-ref_1 = 'X'.
wa_bapisdhead-ref_1_s = wa_tab-ref_shp_to_par.
wa_bapisdhead1x-ref_1_s = 'X'.
append wa_bapisdhead to it_bapisdhead.
append wa_bapisdhead1x to it_bapisdhead1x.
wa_bapiparnr-unload_pt = wa_tab-unload_pt.
wa_bapiparnr-partn_role = 'AG'.
wa_bapiparnr-partn_numb = wa_tab-sld_to_par.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
wa_bapiparnr-partn_role = 'VE'.
wa_bapiparnr-partn_numb = '777'.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
wa_bapiparnr-partn_role = 'ZM'.
wa_bapiparnr-partn_numb = '999'.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
if wa_tab-bill_to_par <> ' '.
wa_bapiparnr-partn_role = 'RE'.
wa_bapiparnr-partn_numb = wa_tab-bill_to_par.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
endif.
if wa_tab-payer <> ''.
wa_bapiparnr-partn_role = 'RG'.
wa_bapiparnr-partn_numb = wa_tab-payer.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
endif.
if wa_tab-ship_to_par <> ''.
wa_bapiparnr-partn_role = 'WE'.
wa_bapiparnr-partn_numb = wa_tab-ship_to_par.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
endif.
wa_bapisdtext-text_id = 'Z113'.
wa_bapisdtext-langu = 'EN'.
wa_bapisdtext-text_line = wa_tab-add_txt.
append wa_bapisdtext to it_bapisdtext.
clear wa_bapisdtext.
if wa_tab-banker <> ''.
wa_bapisdtext-text_id = 'ZKT1'.
wa_bapisdtext-langu = 'EN'.
wa_bapisdtext-text_line = wa_tab-banker.
append wa_bapisdtext to it_bapisdtext.
clear wa_bapisdtext.
endif.
if wa_tab-fwd_age <> ''.
wa_bapisdtext-text_id = 'ZKT1'.
wa_bapisdtext-langu = 'EN'.
wa_bapisdtext-text_line = wa_tab-fwd_age.
append wa_bapisdtext to it_bapisdtext.
clear wa_bapisdtext.
endif.
endon.
* ***** ITEM LEVEL DATA *****
wa_bapiitemin-material = wa_tab-matno.
wa_bapiiteminx-material = 'X'.
wa_bapiitemin-target_qty = wa_tab-qty.
wa_bapiiteminx-target_qty = 'X'.
wa_bapiitemin-plant = wa_tab-plant.
wa_bapiiteminx-plant = 'X'.
wa_bapiitemin-item_categ = 'YAPS'.
wa_bapiiteminx-item_categ = 'X'.
append wa_bapiitemin to it_bapiitemin.
append wa_bapiiteminx to it_bapiiteminx.
clear wa_bapiitemin.
clear wa_bapiiteminx.
* WA_BAPICOND-COND_TYPE = 'PR00'.
* WA_BAPICONDX-COND_TYPE = 'X'.
wa_bapicond-cond_value = wa_tab-amt * wa_tab-qty.
wa_bapicondx-cond_value = 'X'.
append wa_bapicond to it_bapicond.
append wa_bapicondx to it_bapicondx.
clear wa_bapicond.
clear wa_bapicondx.
at end of ref_shp_to_par.
call function 'BAPI_SALESORDER_CREATEFROMDAT2'
exporting
* SALESDOCUMENTIN =
order_header_in = wa_bapisdhead
order_header_inx = wa_bapisdhead1x
* SENDER =
* BINARY_RELATIONSHIPTYPE =
* INT_NUMBER_ASSIGNMENT =
* BEHAVE_WHEN_ERROR =
* LOGIC_SWITCH =
* TESTRUN =
* CONVERT = ' '
* IMPORTING
* SALESDOCUMENT =
tables
return = it_errmsg
order_items_in = it_bapiitemin
order_items_inx = it_bapiiteminx
order_partners = it_bapiparnr
* ORDER_SCHEDULES_IN =
* ORDER_SCHEDULES_INX =
order_conditions_in = it_bapicond
order_conditions_inx = it_bapicondx
* 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 = it_bapisdtext
* ORDER_KEYS =
* EXTENSIONIN =
* PARTNERADDRESSES =
.
read table it_errmsg into wa_errmsg with key type = 'E'
binary search.
if sy-subrc ne 0.
call function 'BAPI_TRANSACTION_COMMIT'
endif.
endloop.
04-08-2009 2:28 PM
see this example as how to add text and multiple lines...
loop at it_tab into wa_tab.
record_no = sy-tabix.
serial_no = wa_tab-ser_no.
sales_office = wa_tab-sal_off.
sales_group = wa_tab-sal_grp.
old_ref_no = wa_tab-ref_shp_to_par.
shipping_condition = wa_tab-ship_cond.
on change of old_ref_no.
refresh it_bapisdhead.
refresh it_bapisdhead1x.
refresh it_bapiparnr.
wa_bapisdhead-doc_type = wa_tab-ord_typ.
wa_bapisdhead1x-doc_type = 'X'.
wa_bapisdhead-sales_org = '5088'.
wa_bapisdhead1x-sales_org = 'X'.
wa_bapisdhead-distr_chan = '01'.
wa_bapisdhead1x-distr_chan = 'X'.
wa_bapisdhead-division = '00'.
wa_bapisdhead1x-division = 'X'.
wa_bapisdhead-sales_grp = sales_group.
wa_bapisdhead1x-sales_grp = 'X'.
wa_bapisdhead-sales_off = sales_office.
wa_bapisdhead1x-sales_off = 'X'.
wa_bapisdhead-purch_no_c = wa_tab-po_no.
wa_bapisdhead1x-purch_no_c = 'X'.
wa_bapisdhead-purch_date = wa_tab-po_date.
wa_bapisdhead1x-purch_date = 'X'.
wa_bapisdhead-req_date_h = wa_tab-req_del_date.
wa_bapisdhead1x-req_date_h = 'X'.
wa_bapisdhead-incoterms1 = 'EXW'.
wa_bapisdhead1x-incoterms1 = 'X'.
wa_bapisdhead-incoterms2 = wa_tab-inco_terms2.
wa_bapisdhead1x-incoterms2 = 'X'.
wa_bapisdhead-ship_cond = ship_cond.
wa_bapisdhead1x-ship_cond = 'X'.
wa_bapisdhead-ref_1 = wa_tab-ref_sld_to_par.
wa_bapisdhead1x-ref_1 = 'X'.
wa_bapisdhead-ref_1_s = wa_tab-ref_shp_to_par.
wa_bapisdhead1x-ref_1_s = 'X'.
append wa_bapisdhead to it_bapisdhead.
append wa_bapisdhead1x to it_bapisdhead1x.
wa_bapiparnr-unload_pt = wa_tab-unload_pt.
wa_bapiparnr-partn_role = 'AG'.
wa_bapiparnr-partn_numb = wa_tab-sld_to_par.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
wa_bapiparnr-partn_role = 'VE'.
wa_bapiparnr-partn_numb = '777'.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
wa_bapiparnr-partn_role = 'ZM'.
wa_bapiparnr-partn_numb = '999'.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
if wa_tab-bill_to_par <> ' '.
wa_bapiparnr-partn_role = 'RE'.
wa_bapiparnr-partn_numb = wa_tab-bill_to_par.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
endif.
if wa_tab-payer <> ''.
wa_bapiparnr-partn_role = 'RG'.
wa_bapiparnr-partn_numb = wa_tab-payer.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
endif.
if wa_tab-ship_to_par <> ''.
wa_bapiparnr-partn_role = 'WE'.
wa_bapiparnr-partn_numb = wa_tab-ship_to_par.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
endif.
wa_bapisdtext-text_id = 'Z113'.
wa_bapisdtext-langu = 'EN'.
wa_bapisdtext-text_line = wa_tab-add_txt.
append wa_bapisdtext to it_bapisdtext.
clear wa_bapisdtext.
if wa_tab-banker <> ''.
wa_bapisdtext-text_id = 'ZKT1'.
wa_bapisdtext-langu = 'EN'.
wa_bapisdtext-text_line = wa_tab-banker.
append wa_bapisdtext to it_bapisdtext.
clear wa_bapisdtext.
endif.
if wa_tab-fwd_age <> ''.
wa_bapisdtext-text_id = 'ZKT1'.
wa_bapisdtext-langu = 'EN'.
wa_bapisdtext-text_line = wa_tab-fwd_age.
append wa_bapisdtext to it_bapisdtext.
clear wa_bapisdtext.
endif.
endon.
call function 'BAPI_SALESORDER_CREATEFROMDAT2'
exporting
* SALESDOCUMENTIN =
order_header_in = wa_bapisdhead
order_header_inx = wa_bapisdhead1x
* SENDER =
* BINARY_RELATIONSHIPTYPE =
* INT_NUMBER_ASSIGNMENT =
* BEHAVE_WHEN_ERROR =
* LOGIC_SWITCH =
* TESTRUN =
* CONVERT = ' '
* IMPORTING
* SALESDOCUMENT =
tables
return = it_errmsg
order_items_in = it_bapiitemin
order_items_inx = it_bapiiteminx
order_partners = it_bapiparnr
* ORDER_SCHEDULES_IN =
* ORDER_SCHEDULES_INX =
order_conditions_in = it_bapicond
order_conditions_inx = it_bapicondx
* 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 = it_bapisdtext
* ORDER_KEYS =
* EXTENSIONIN =
* PARTNERADDRESSES =
.
read table it_errmsg into wa_errmsg with key type = 'E'
binary search.
if sy-subrc ne 0.
call function 'BAPI_TRANSACTION_COMMIT'.
endif.
04-08-2009 2:29 PM
see this example as how to add text and multiple lines...
loop at it_tab into wa_tab.
record_no = sy-tabix.
serial_no = wa_tab-ser_no.
sales_office = wa_tab-sal_off.
sales_group = wa_tab-sal_grp.
old_ref_no = wa_tab-ref_shp_to_par.
shipping_condition = wa_tab-ship_cond.
on change of old_ref_no.
refresh it_bapisdhead.
refresh it_bapisdhead1x.
refresh it_bapiparnr.
wa_bapisdhead-doc_type = wa_tab-ord_typ.
wa_bapisdhead1x-doc_type = 'X'.
wa_bapisdhead-sales_org = '5088'.
wa_bapisdhead1x-sales_org = 'X'.
wa_bapisdhead-distr_chan = '01'.
wa_bapisdhead1x-distr_chan = 'X'.
wa_bapisdhead-division = '00'.
wa_bapisdhead1x-division = 'X'.
wa_bapisdhead-sales_grp = sales_group.
wa_bapisdhead1x-sales_grp = 'X'.
wa_bapisdhead-sales_off = sales_office.
wa_bapisdhead1x-sales_off = 'X'.
wa_bapisdhead-purch_no_c = wa_tab-po_no.
wa_bapisdhead1x-purch_no_c = 'X'.
wa_bapisdhead-purch_date = wa_tab-po_date.
wa_bapisdhead1x-purch_date = 'X'.
wa_bapisdhead-req_date_h = wa_tab-req_del_date.
wa_bapisdhead1x-req_date_h = 'X'.
wa_bapisdhead-incoterms1 = 'EXW'.
wa_bapisdhead1x-incoterms1 = 'X'.
wa_bapisdhead-incoterms2 = wa_tab-inco_terms2.
wa_bapisdhead1x-incoterms2 = 'X'.
wa_bapisdhead-ship_cond = ship_cond.
wa_bapisdhead1x-ship_cond = 'X'.
wa_bapisdhead-ref_1 = wa_tab-ref_sld_to_par.
wa_bapisdhead1x-ref_1 = 'X'.
wa_bapisdhead-ref_1_s = wa_tab-ref_shp_to_par.
wa_bapisdhead1x-ref_1_s = 'X'.
append wa_bapisdhead to it_bapisdhead.
append wa_bapisdhead1x to it_bapisdhead1x.
wa_bapiparnr-unload_pt = wa_tab-unload_pt.
wa_bapiparnr-partn_role = 'AG'.
wa_bapiparnr-partn_numb = wa_tab-sld_to_par.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
wa_bapiparnr-partn_role = 'VE'.
wa_bapiparnr-partn_numb = '777'.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
wa_bapiparnr-partn_role = 'ZM'.
wa_bapiparnr-partn_numb = '999'.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
if wa_tab-bill_to_par <> ' '.
wa_bapiparnr-partn_role = 'RE'.
wa_bapiparnr-partn_numb = wa_tab-bill_to_par.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
endif.
if wa_tab-payer <> ''.
wa_bapiparnr-partn_role = 'RG'.
wa_bapiparnr-partn_numb = wa_tab-payer.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
endif.
if wa_tab-ship_to_par <> ''.
wa_bapiparnr-partn_role = 'WE'.
wa_bapiparnr-partn_numb = wa_tab-ship_to_par.
append wa_bapiparnr to it_bapiparnr.
clear wa_bapiparnr.
endif.
wa_bapisdtext-text_id = 'Z113'.
wa_bapisdtext-langu = 'EN'.
wa_bapisdtext-text_line = wa_tab-add_txt.
append wa_bapisdtext to it_bapisdtext.
clear wa_bapisdtext.
if wa_tab-banker <> ''.
wa_bapisdtext-text_id = 'ZKT1'.
wa_bapisdtext-langu = 'EN'.
wa_bapisdtext-text_line = wa_tab-banker.
append wa_bapisdtext to it_bapisdtext.
clear wa_bapisdtext.
endif.
if wa_tab-fwd_age <> ''.
wa_bapisdtext-text_id = 'ZKT1'.
wa_bapisdtext-langu = 'EN'.
wa_bapisdtext-text_line = wa_tab-fwd_age.
append wa_bapisdtext to it_bapisdtext.
clear wa_bapisdtext.
endif.
endon.
call function 'BAPI_SALESORDER_CREATEFROMDAT2'
exporting
order_header_in = wa_bapisdhead
order_header_inx = wa_bapisdhead1x
tables
return = it_errmsg
order_items_in = it_bapiitemin
order_items_inx = it_bapiiteminx
order_partners = it_bapiparnr
order_conditions_in = it_bapicond
order_conditions_inx = it_bapicondx .