‎2007 Nov 14 1:06 PM
Hi Gurus,
I am using the BAPI BAPI_SALESORDER_CREATEFROMDAT2 for creating the sales order and it is working fine (properly creating sales order) but I am facing few problems:
1) In the ORDER_ITEMS_IN table after creating the order all other e.g. short_text or EAN_UPC fields are not getting populated
2) In table ORDER_ITEMS_IN it gives me all the material in the output after creating the order if material does not present in SAP ie I want only the correct material for which the sales order is created
Please reply me as soon as possible as I urgently need your help.
Sagar
‎2007 Nov 14 1:21 PM
hi,
kindly post the code such that i can help you out fastly
regards,
pavan
‎2007 Nov 14 1:32 PM
Hi Pavan,
Thanks for your quick reply
But first I would like to inform you that I have created the ZBAPI as it need commit work and there is a third party solution which will be calling this ZBAPI and creating the sales order
Below is the fields which I am possing and also the code in the ZBAPI
<b>INPUT DATA:</b>
) ORDER_HEADER_IN-DOC_TYPE value OR (constant value)
2) ORDER_HEADER_IN-SALES_ORG value AN01
3) ORDER_HEADER_IN-DISTR_CHAN value DI
4) ORDER_HEADER_IN-DIVISION value 01
5) ORDER_HEADER_IN-PURCH_NO_C value Test_spi
6) BEHAVE_WHEN_ERROR value P (constant value)
Input parameters with multiple value:
1) ORDER_ITEMS_IN-MATERIAL value 352213
2) ORDER_ITEMS_IN-MATERIAL value 14
3) ORDER_ITEMS_IN-MATERIAL value 788752522
4) ORDER_ITEMS_IN-MATERIAL value 352215
5) ORDER_ITEMS_IN-TARGET_QTY value 1
6) ORDER_ITEMS_IN-TARGET_QTY value 1
7) ORDER_ITEMS_IN-TARGET_QTY value 1
😎 ORDER_ITEMS_IN-TARGET_QTY value 1
9) ORDER_PARTNERS-PARTN_ROLE value SH (constant value)
10) ORDER_PARTNERS-PARTN_ROLE value SP (constant value)
11) ORDER_PARTNERS-PARTN_NUMB value 44
12) ORDER_PARTNERS-PARTN_NUMB value 44
Code of the ZBAPI:
FUNCTION z_bapi_salesorder_createomdat2.
*"----
""Local interface:
*" IMPORTING
*" VALUE(SALESDOCUMENTIN) LIKE BAPIVBELN-VBELN OPTIONAL
*" VALUE(ORDER_HEADER_IN) LIKE BAPISDHD1 STRUCTURE BAPISDHD1
*" VALUE(ORDER_HEADER_INX) LIKE BAPISDHD1X STRUCTURE BAPISDHD1X
*" OPTIONAL
*" VALUE(SENDER) LIKE BAPI_SENDER STRUCTURE BAPI_SENDER OPTIONAL
*" VALUE(BINARY_RELATIONSHIPTYPE) LIKE BAPIRELTYPE-RELTYPE
*" OPTIONAL
*" VALUE(INT_NUMBER_ASSIGNMENT) LIKE BAPIFLAG-BAPIFLAG OPTIONAL
*" VALUE(BEHAVE_WHEN_ERROR) LIKE BAPIFLAG-BAPIFLAG OPTIONAL
*" VALUE(LOGIC_SWITCH) LIKE BAPISDLS STRUCTURE BAPISDLS OPTIONAL
*" VALUE(TESTRUN) LIKE BAPIFLAG-BAPIFLAG OPTIONAL
*" VALUE(CONVERT) LIKE BAPIFLAG-BAPIFLAG DEFAULT SPACE
*" EXPORTING
*" VALUE(SALESDOCUMENT) LIKE BAPIVBELN-VBELN
*" TABLES
*" RETURN STRUCTURE BAPIRET2 OPTIONAL
*" ORDER_ITEMS_IN STRUCTURE BAPISDITM OPTIONAL
*" ORDER_ITEMS_INX STRUCTURE BAPISDITMX OPTIONAL
*" ORDER_PARTNERS STRUCTURE BAPIPARNR
*" ORDER_SCHEDULES_IN STRUCTURE BAPISCHDL OPTIONAL
*" ORDER_SCHEDULES_INX STRUCTURE BAPISCHDLX OPTIONAL
*" ORDER_CONDITIONS_IN STRUCTURE BAPICOND OPTIONAL
*" ORDER_CFGS_REF STRUCTURE BAPICUCFG OPTIONAL
*" ORDER_CFGS_INST STRUCTURE BAPICUINS OPTIONAL
*" ORDER_CFGS_PART_OF STRUCTURE BAPICUPRT OPTIONAL
*" ORDER_CFGS_VALUE STRUCTURE BAPICUVAL OPTIONAL
*" ORDER_CFGS_BLOB STRUCTURE BAPICUBLB OPTIONAL
*" ORDER_CFGS_VK STRUCTURE BAPICUVK OPTIONAL
*" ORDER_CFGS_REFINST STRUCTURE BAPICUREF OPTIONAL
*" ORDER_CCARD STRUCTURE BAPICCARD OPTIONAL
*" ORDER_TEXT STRUCTURE BAPISDTEXT OPTIONAL
*" ORDER_KEYS STRUCTURE BAPISDKEY OPTIONAL
*" EXTENSIONIN STRUCTURE BAPIPAREX OPTIONAL
*" PARTNERADDRESSES STRUCTURE BAPIADDR1 OPTIONAL
*" ERROR_MATERIALS STRUCTURE BAPISDITM OPTIONAL
*"----
DATA: l_count TYPE bapischdl-itm_number.
CLEAR l_count.
LOOP AT order_items_in.
LOGIC FOR APPENDING THE ITEM NO. AND TARGET QTY.
l_count = l_count + 10.
order_schedules_in-itm_number = l_count.
order_schedules_in-req_qty = order_items_in-target_qty.
APPEND order_schedules_in.
CLEAR order_schedules_in.
Get all the materials which does not exist or is set as deletion
SELECT SINGLE matnr
FROM mara
INTO error_materials-material
WHERE matnr EQ order_items_in-material
AND lvorm NE 'X'.
IF sy-subrc NE 0.
APPEND error_materials.
CLEAR error_materials.
ENDIF.
ENDLOOP.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
salesdocumentin = salesdocumentin
order_header_in = order_header_in
order_header_inx = order_header_inx
sender = sender
binary_relationshiptype = binary_relationshiptype
int_number_assignment = int_number_assignment
behave_when_error = behave_when_error
logic_switch = logic_switch
testrun = testrun
convert = ' '
IMPORTING
salesdocument = salesdocument
TABLES
return = return
order_items_in = order_items_in
order_items_inx = order_items_inx
order_partners = order_partners
order_schedules_in = order_schedules_in
order_schedules_inx = order_schedules_inx
order_conditions_in = order_conditions_in
order_cfgs_ref = order_cfgs_ref
order_cfgs_inst = order_cfgs_inst
order_cfgs_part_of = order_cfgs_part_of
order_cfgs_value = order_cfgs_value
order_cfgs_blob = order_cfgs_blob
order_cfgs_vk = order_cfgs_vk
order_cfgs_refinst = order_cfgs_refinst
order_ccard = order_ccard
order_text = order_text
order_keys = order_keys
extensionin = extensionin
partneraddresses = partneraddresses.
IF NOT salesdocument IS INITIAL.
COMMIT WORK.
ELSE.
ROLLBACK WORK.
ENDIF.
ENDFUNCTION.
Please let me know if you requires some more information
Regards,
Sagar
‎2007 Nov 14 1:41 PM
where you are updating index files i am not getting, r u doing index updateflag = 'I' or that is not required for your program
correct me if i am wrong, i am talking as per my knowledge
pls respond fastly
regards,
pavan
‎2007 Nov 14 1:44 PM
this is the program i wrote :
may be this may useful for you to understand fastly
REPORT ZSKCREA .
*types : begin of xml_line,
data(256) type x,
end of xml_line.
*
*data: xml_table type table of xml_line,
xml_table_size type i,
istream type ref to if_ixml_istream.
*
*call function 'GUI_UPLOAD'
exporting
filename = 'c:\slcreaorder2.xml'
FILETYPE = 'BIN'
IMPORTING
FILELENGTH = xml_table_size
tables
data_tab = xml_table
*.
data : salesorderheader like BAPISDHD1 occurs 0 with header line,
salesorderheaderx like BAPISDHD1X occurs 0 with header line,
salesorderitems like BAPISDITM occurs 0 with header line,
salesorderitemsx like BAPISDITMX occurs 0 with header line,
salesorderpartners like BAPIPARNR occurs 0 with header line,
salesorderschdule like BAPISCHDL occurs 0 with header line,
salesorderschdulex like BAPISCHDLX occurs 0 with header line,
salesordercondition like bapicond occurs 0 with header line,
salesorderconditionx like bapicondx occurs 0 with header line,
return1 like BAPIRET2 occurs 0 with header line.
salesorderheader-doc_type = 'TA'.
salesorderheader-sales_org = 'JNJ1'.
salesorderheader-distr_chan = '02'.
salesorderheader-division = 'J1'.
salesorderheader-sales_off = 'JNJ1'.
salesorderheader-purch_no_c = 'testbapipo'.
salesorderheader-purch_date = sy-datum.
salesorderheader-req_date_h = sy-datum.
append salesorderheader.
salesorderitems-material = '000000000000000727'.
salesorderitems-plant = 'JNJ1'.
salesorderitems-target_qu = 'EA'.
append salesorderitems.
salesorderpartners-partn_role = 'AG'.
salesorderpartners-partn_numb = '0000000036'.
append salesorderpartners.
salesorderschdule-itm_number = '10'.
salesorderschdule-req_qty = '10'.
append salesorderschdule.
salesordercondition-cond_type = 'zpr1'.
salesordercondition-cond_value = '40'.
append salesordercondition.
salesorderheaderx-updateflag = 'I'.
salesorderheaderx-doc_type = 'X'.
salesorderheaderx-sales_org = 'X'.
salesorderheaderx-distr_chan = 'X'.
salesorderheaderx-division = 'X'.
salesorderheaderx-sales_off = 'X'.
salesorderheaderx-purch_no_c = 'X'.
salesorderheaderx-purch_date = 'X'.
salesorderheaderx-req_date_h = 'X'.
salesorderitemsx-updateflag = 'I'.
salesorderitemsx-material = 'X'.
salesorderitemsx-plant = 'X'.
salesorderitemsx-division = 'X'.
salesorderitemsx-target_qu = 'X'.
append salesorderitemsx.
salesorderschdulex-updateflag = 'I'.
salesorderschdulex-itm_number = 'X'.
salesorderschdulex-req_qty = 'X'.
append salesorderschdulex.
salesorderconditionx-updateflag = 'I'.
salesorderconditionx-cond_type = 'X'.
salesorderconditionx-cond_value = 'X'.
append salesorderconditionx.
call function 'BAPI_SALESORDER_CREATEFROMDAT2'
exporting
SALESDOCUMENTIN =
order_header_in = salesorderheader
ORDER_HEADER_INX = salesorderheaderx
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = 'c:\msk2.xml '
IMPORTING
SALESDOCUMENT = salesdocument
tables
RETURN = return1
ORDER_ITEMS_IN = salesorderitems
ORDER_ITEMS_INX = salesorderitemsx
order_partners = salesorderpartners
ORDER_SCHEDULES_IN = salesorderschdule
ORDER_SCHEDULES_INX = salesorderschdulex
ORDER_CONDITIONS_IN =
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 =
.
call function 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN =
.
regards,
pavan
‎2007 Nov 14 2:03 PM
Hi Pavan,
I tried the your code and I have added the values ORDER_ITEMS_INX but still in the ORDER_ITEMS_IN is filled with no extra fields. But I want some extra fields related to material master.
And do in need to pass index field in schedule line table too.
And also how we would be know for which material the sales order was created if the data we pass has some incorrect material
Regards
Sagar
‎2007 Nov 15 4:13 AM
hi sagar,
if we pass incorrect material, As per my knowledge, it won't create sales order, you will error/warning message in return structure of Bapi, by that message you can know that it is wrong material entry is happened.
for forther clariffication, kindly take help of SD consultant.
correct me if i am wrong
regards,
pavan
Message was edited by:
pavan kumar pisipati