EDI Sales order creation in CRM
Hello CRM Experts,
I'm an EDI/SAP professional new to CRM. My team has been asked to interface EDI POs to CRM sales orders using CRMXIF_ORDER_SAVE, with little information on how to map it. So, my questions are:
Is it even possible to use ORDERS05 to create sales orders in CRM?
Can anyone tell me which CRMXIF_ORDER_SAVE IDoc segments/fields need to be populated to create a sales order?
Any information provided would be greatly appreciated!
Thank you in advance,
Donna
Hello,
Please check the sap note 448742,this is general note for XIF interface.
Hope this helps you.
Regards,
Deepa
Similar Messages
-
EDI Sales order creation in CRM through inbound IDocs from non SAP system
Hi Friends,
We are having a scenario where we need to create a Sales Order in CRM for a B2B EDI transmission through IDoc. Customer is sending the EDI Transmission of his Sales order , which is passing through PI and then reaching to CRM to create a Sales order.This is the design we need to follow to make it happen,we are initially trying to create an order using WE19 for testing and the details are:
Basic Type - CRMXIF_ORDER_SAVE_M01
Message Type - CRMXIF_ORDER_SAVE_M
Functional Module - APPL_IDOC_INPUTI which is automatically giving a status text as " Function module CRMXIF_ORDER_SAVE has been called successfully", but no sales order is saved in CRM.
We are getting idocs posted successfully with status 53 with the statuses sequence 74, 50 ,64, 62 and 53.Our issue is inspire of the Idoc having status 53 and the FM called successfully we are not seeing the sales order created in CRM.
We are stuck here no sales order is created in CRM.
Are we missing any config. - set up - Prerequisit - Any OSS note need to be applied -- ANy middle ware setting ?
Any help will be greatly appreciated.
Thanks
VijayHi Christophe,
Awesome!!!!!! it worked, You are the best.
I could able to create a sales order in CRM,but below are the valid data I passed in the respective segment fields.Except for first 3 values rest all did not get reflected in teh Sales order.I feel i am missing some qualifiers.
Can you kindly share the IDoc data to be passed in...along with respective segments and fields:
Segment Field
E101CRMXIF_BUSTRANS OBJECT_TASK
E101CRMXIF_BUSTRANS PROCESS_TYPE
E101CRMXIF_BUSTRANS POSTING_DATE
E101CRMXIF_PARTNER PARTNER_NO
E101CRMXIF_PARTNER RELATION_PARTNER_NO
E101CRMXIF_ORGMAN SALES_ORG
E101CRMXIF_ORGMAN DIS_CHANNEL
E101CRMXIF_ORGMAN DIVISION
E101CRMXIF_SALES PO_NUMBER_SOLD
E101CRMXIF_SALES YOUR_REF_SOLD
E101CRMXIF_SALES PO_NUMBER_SHIP
E101CRMXIF_BUSTRANS_ITEM ITEM_NUMBER
E101CRMXIF_BUSTRANS_ITEM ITEM_TYPE
E101CRMXIF_BUSTRANS_ITEM ORDERED_PRODUCT
E101CRMXIF_PRODUCT_I PROCESS_QTY_UNIT
E101CRMXIF_PRODUCT_I PROCESS_QTY_UNIT_ISO
E101CRMXIF_PRODUCT_I BASE_QTY_UNIT
E101CRMXIF_PRODUCT_I BASE_QTY_UNIT_ISO
E101CRMXIF_SCHEDLIN_I ORDER_QTY
Thanks a ton in advance .
Vijay -
Sales order Creation in CRM using Interface
Hi Experts,
I am developing Interface to create Sales order/s in CRM.
As per my requirement I need to create with below mentioned parameters.
Process type
Sold to party
Organization data
Parties involved
Transaction History
Item Data
However, I got CRM_SALESORDER_MASS_UPDATE & BAPI_SLSTRANSACT_CREATEMULTI.
As per my requirement these FMs are not usefull.
Please suggest me right function module.
Thanks in advance.
SaiHi Sai,
you will need to use the FMs CRM_ORDER_MAINTAIN and CRM_ORDER_SAVE to create the orders.
Put a break point in CRM_ORDER_MAINTAIN and try creating an Order in the transaction CRMD_ORDER in GUI. This FM will be called a couple of times. Note the inputs being passed to this FM.
You need to pass all those inputs at one go to the FM 'CRM_ORDER_MAINTAIN' and after that call the FM 'CRM_ORDER_SAVE'.
Note that you need to call the FM 'GUID_CREATE' to create the header and line item GUIDs.
This is for one order. If you need to create multiple orders at one go, loop at this code. If you are calling this code from another system, make this a remote enabled function module.
Regards,
Kris.
Edited by: Kris on Aug 2, 2011 9:25 PM -
Error in EDI sales order creation.
Hi SAP gurus,
Presently we are having a scenario, While creating a sales order through EDI we are presently getting an error
Status - 51 "Update Error, Transaction VA01".
When I again reprocess the idoc, It is creating order successfully.
This is a rare occrance and we are not able to get a concrete clue because out of 50 edi order only 2 orders are
having this kind of issue. .
T code - WE02 :
When I click on the message information, it gives the below mentioned details :
Message - No 00377 "Update error, transaction VA01"
Diagnosis:
An error occured in CALL TRANSACTION USING or CALL DIALOG USING during the synchronous update.
The error is caused y the transaction VA01.
*T code - SM13 *
In SM13 - system gives the Error (no entry) in
Functional module "RV_SALES_DOCUMENT_ADD".
ABAP/4 processor: SAPSQL_ARRAY_INSERT_DUPREC
Status : Update was terminated
Could you please provide some inputs for to fix the issue
Thanks in advance
Thanks&Regards,
Pugal Stalin.hI,
It's mentioned below :
Information on where terminated
Termination occurred in the ABAP program "SAPLV05I" - in "SD_PARTNER_UPDATE".
The main program was "RSM13000 ".
In the source code you have the termination point in line 480
of the (Include) program "LV05IU15".
The program "SAPLV05I" was started in the update system.
The termination is caused because exception "CX_SY_OPEN_SQL_DB" occurred in
procedure "SD_PARTNER_UPDATE" "(FUNCTION)", but it was neither handled locally
nor declared
in the RAISING clause of its signature.
The procedure is in program "SAPLV05I "; its source code begins in line
1 of the (Include program "LV05IU15 ".
Source Code Extract
POSNR = I_XVBPA-POSNR
PARVW = I_XVBPA-PARVW.
IF I_YVBPA-STCD1 <> I_XVBPA-STCD1 OR
I_YVBPA-STCD2 <> I_XVBPA-STCD2 OR
I_YVBPA-STCD3 <> I_XVBPA-STCD3 OR
I_YVBPA-STCD4 <> I_XVBPA-STCD4 OR
I_YVBPA-STCDT <> I_XVBPA-STCDT OR
I_YVBPA-STKZN <> I_XVBPA-STKZN OR
I_YVBPA-J_1KFREPRE <> I_XVBPA-J_1KFREPRE OR
I_YVBPA-J_1KFTBUS <> I_XVBPA-J_1KFTBUS OR
I_YVBPA-J_1KFTIND <> I_XVBPA-J_1KFTIND.
MOVE-CORRESPONDING I_XVBPA TO WA_XVBPA3I.
APPEND WA_XVBPA3I TO DA_XVBPA3I.
ENDIF.
ENDIF.
ENDIF.
WHEN UPDKZ_OLD.
IF DA_VBPA-ADRDA CA GCF_ADDR_IND_COMB_MAN_OLD OR
DA_VBPA-ADRDA CA GCF_ADDR_IND_COMB_MAN_ADRC.
YADR-ADRNR = DA_VBPA-ADRNR. COLLECT YADR.
ENDIF.
IF DA_VBPA-ADRDA CA GCF_ADDR_IND_COMB_MAN_OLD OR
DA_VBPA-ADRDA CA GCF_ADDR_IND_COMB_MAN_ADRC.
XADR-ADRNR = DA_VBPA-ADRNR. COLLECT XADR.
ENDIF.
ENDCASE.
ENDLOOP.
UPDATE (OBJECT) FROM TABLE DA_XVBPAU.
UPDATE VBPA3 FROM TABLE DA_XVBPA3U.
INSERT (OBJECT) FROM TABLE DA_XVBPAI.
INSERT VBPA3 FROM TABLE DA_XVBPA3I.
IF SY-SUBRC > 0.
MESSAGE A700 WITH OBJECT SY-SUBRC DA_XVBPAI(21).
ENDIF.
Sonderfall neue VBPA (VBPA2) für Rollen AA und AW
LOOP AT I_XVBPA2.
DA_VBPA2 = I_XVBPA2.
CASE DA_VBPA2-UPDKZ.
WHEN UPDKZ_NEW.
IF DA_VBPA2-ADRDA CA GCF_ADDR_IND_COMB_MAN_OLD OR
DA_VBPA2-ADRDA CA GCF_ADDR_IND_COMB_MAN_ADRC.
XADR-ADRNR = DA_VBPA2-ADRNR. COLLECT XADR.
ENDIF.
I_XVBPA-MANDT = SY-MANDT.
IF I_XVBPA2-VBELN IS INITIAL.
I_XVBPA2-VBELN = F_VBELN.
ENDIF.
Thanks in Advance
Thanks & Regards,
Pugal
Edited by: Pugal Stalin on Feb 15, 2010 1:17 PM -
Error on EDI Sales Order Creation ?
Hi Gurus,
I have the following error when trying to create an order through EDI. Function module 'IDOC_INPUT_ORDERS"
Error is
"Field RV45A-VBAP_SELKZ (2) is not an input field
Message no. 00347"
I have check the data on the Idoc (orders05) and everything looks good to me when I compared the data with succesfull idocs.
Has anybody has had this problem before?
Any ideas how to fix it?
Thanks,
Joel RamirezHi Joel,
I think you are creating SD Orders with reference to scheduling agreements by means of SD EDI
please apply OSS note 457605
Regards,
Santosh -
Hi,
I am trying to generate the test script(ecatt) for sales order creation in CRM system. i go through crmd_order transaction and enter the partner, product and organizational data. When i reply in foreground tool fills up partner and product data.
But it simply refuses to goto Organization Tab with error
"Check of the intial element failed".
How do i obtain the id of the control for this screen element. I know its some script to run with the control.
But what is this script and how do i run this script with the control.
Any geeks help please.
Thanks and Regards
VinayHi Raj
Check link for info on eCatt:
http://help.sap.com/saphelp_crm60/helpdata/en/8e/df9f40eb72371be10000000a1550b0/frameset.htm
Hope it helps
Rupesh -
Sales order creation, standard event trigger is taking long time .
We have a requirement where we are sending data to CRM system using RFC function module. This data is sent while sales order creation or change. We have used standard event BUS2032.CREATED to trigger CRM FM in sales order creation mode. In sales order change mode, we are using custom event. In production system, our custom change event is getting triggered fine and data is sent to CRM system with small time lag of around 1 minute. But, while sales order creation, standard event trigger is taking long time ( sometimes about 20 minutes) in production system.
We tried triggering same custom event at the time of sales order creation using FM u2018SWE_EVENT_CREATE_IN_UPD_TASKu2019 as well but, still we are not able to improve performance of the event trigger at sales order creation.
Regards,
Sushee JoshiHI,
we have written SWE_EVENT_CREATE in update task
I think instead of calling in update task simply call to function module CALL FUNCTION "SWE_EVENT_CREATE" might trigger the event immediately.. Did you try to check in this way..
OR
And I also suggest you to check the entry in SWE2 txn with respect to your workflow tempalte, may be you have enable the option ENABLE EVENT QUEUE, this could be one of the reasons.. If it is enabled please disable it (uncheck)
Please check..
Regards
Pavan -
Error while creating and opening a ERP sales order in SAP CRM
Hi,
I am getting an error while creating or opening a ERP sales order from SAP CRM.
"Creation of the ERP Transaction failed" this is the error i'm getting while creating. when i try to open an existing sales order I'm getting a dump.
Attached the dump screen shot. From the dump analyasis it seems the transactions are not loaded through LORD framework.
The RFC connection seems to fine as i have tested accessing an ECC RFC FM through a sample program and its successful..
please help..
Thanks
KrishnaHello Krishna,
Did you get a solution to this? I have the same dump message.
As a matter of fact, we already use ERP Sales Order and it works fine. But I have recently configured a new sales order document type, and the dump occurs only for this new Z order type.
Thanks a lot,
Luis. -
Hi Friends,
Greetings.
If all transaction are taking place in R/3 including Sales order creation, Is there any visibility of these sales order from CRM.
Regards,
JayHi Jay
The standard order data exchange will download orders from R/3 to CRM. They are visible in CRM but they cannot be processed there.
This is also present implicitly in exchange scenarios X, Y, and Z. See note 541113 for more details.
In some CRM deployments this is enough as visibility is all that is required.
Cheers
Dom -
Sales Order Creation Process.....!!
All,
I have been trying to call "BAPI_BUSPROCESSND_CREATEMULTI" remotely (from .Net environment with SAP .Net Connector ). I understand this is the FM, which is being called from most of other important FM, like BAPI_ACTIVITYCRM_CREATEMULTI or from Sale Order creation BAPI.
Anyway the issue I am facing is that, I have to call "BAPI_BUSPROCESSND_PROCSETTINGS" before calling "BAPI_BUSPROCESSND_CREATEMULTI" to persist the data in Data base tables (even if I am using Transaction Commit).
While calling these FMs remotely, if I call "BAPI_BUSPROCESSND_PROCSETTINGS" and then "BAPI_BUSPROCESSND_CREATEMULTI", it does not work. But If make a wrapper BAPI in CRM with call to "BAPI_BUSPROCESSND_PROCSETTINGS" and then to "BAPI_BUSPROCESSND_CREATEMULTI" within the same LUW, it works.
Now my problem is that I want to use Std BAPIs only (like "BAPI_BUSPROCESSND_CREATEMULTI") and don't want to use any wrapper BAPI..
Anybody could guide me how to surmount the issue I am facing..?Also if somebody knows what this "BAPI_BUSPROCESSND_PROCSETTINGS" is suppose to do?
Thanking all in advance....I had faced the similar issue while calling the RFC's exists remotely.
I was calling couple of BAPI's in the same session and failing to commit the work in the same LUW.
I have resolved it by calling BAPI_TRANSACTION_COMMIT sequentially in the same LUW.Try to do this.
Do you mention the 'DESTINATION' parameter to the BAPI's ?
And using wrapper RFC's is also recommended.
Thanks,
Thirumala. -
Error while saving a Sales Order in the CRM Mobile Application
Hi,
I am facing issues while saving a Sales Order in the CRM Mobile Application. I am getting the error message "Value Field KvLangu is not valid (Error: 236 / 1102)".
I would be very grateful if somebody had faced this issue before and this way could help me with some information.
Best Regards,
Rogerio Prado.Hi Rogerio,
You should put mobile sales related messages in the forum "CRM Mobile applications"
This error message is coming because the language table SMOT002 might be empty in your mobile client OR it does not have all the values which have been customized in the system.
You need to have subscription based on publication "customizing objects" assigned to your site.
Regards
Vivek -
Hi All, We are in to Release 11.5.10.2.There is a specific requirement to Prevent users from creating Manual Sales Orders in Oracle and yet users should be able to book the Sales Orders Imported from CRM system into Orcale.Please advise.
Thanks for your advise.
However, I missed to mention that we have two set of users One is for Finished Goods and another for Spares.
Only Spares users need to be prevented from creating Direct/Manual Sales Orders in Oracle.
As you suggested, if this will be done at Form level, that may Disallow FG users also to create Manula Sales Orders which should not be the case.
Further, I tried to test one scenario through Processing Constraints but it did not work.
Application
OM
Validation Type
Entity
Temp
Short Name
TBL
Validation Semantics
Created By
Equal To
User(Myself)
Processing Cosntraint
Application
OM
Entity
Order Header
Constraint
Operation
User Action
Create
Not Allowed
Conditions
Group
Scope
Validation Entity
Record Set
Validation Template
101
Any
Order Header
Order
Above Created
Please advise. -
Sales order creation with bapi in webdynpro using table control
When i use table control to update the line items only first row is getting updated in the sale order creation and the loop is not updating the other row to header only the first row is getting saved, for the same set of data sale order is getting created in va01 for multiple line items. Pls give me some idea to resolve this issue, here is the code i am using for creating sale order using bapi 'BAPI_SALESORDER_CREATEFROMDAT2' method CREATE_SALES_ORDER .
Declaration for Order Header Node DATA: node_order_header TYPE REF TO if_wd_context_node, elem_order_header TYPE REF TO if_wd_context_element, stru_order_header TYPE if_componentcontroller=>element_order_header . * Declaration for Order Items Node DATA: node_order_items TYPE REF TO if_wd_context_node, elem_order_items TYPE REF TO if_wd_context_element, stru_order_items TYPE if_componentcontroller=>element_order_items . * Declaration for Order Partners Node DATA: node_order_partners TYPE REF TO if_wd_context_node, elem_order_partners TYPE REF TO if_wd_context_element, stru_order_partners TYPE if_componentcontroller=>element_order_partners . node_order_header = wd_context->get_child_node( name = if_componentcontroller=>wdctx_order_header ). elem_order_header = node_order_header->get_element( ). elem_order_header->get_static_attributes( IMPORTING static_attributes = stru_order_header ). * via lead selection node_order_items = wd_context->get_child_node( name = if_componentcontroller=>wdctx_order_items ). elem_order_items = node_order_items->get_element( ). elem_order_items->get_static_attributes( IMPORTING static_attributes = stru_order_items ). * via lead selection node_order_partners = wd_context->get_child_node( name = if_componentcontroller=>wdctx_order_partners ). elem_order_partners = node_order_partners->get_element( ). elem_order_partners->get_static_attributes( IMPORTING static_attributes = stru_order_partners ). DATA: v_sales_doc TYPE bapivbeln-vbeln. DATA: w_order_header_in TYPE bapisdhd1, i_order_header_in TYPE table of bapisdhd1," i_order_partners TYPE TABLE OF bapiparnr, w_order_partners TYPE bapiparnr, i_return TYPE TABLE OF bapiret2, w_return TYPE bapiret2, i_order_items_in TYPE TABLE OF bapisditm, w_order_items_in TYPE bapisditm, i_order_conditions_in TYPE TABLE OF bapicond, w_order_conditions_in TYPE bapicond, w_order_SCHDL type BAPISCHDL, i_order_SCHDL type table of BAPISCHDL. * Order Header Details CLEAR: w_order_header_in, i_order_partners, i_return, i_order_items_in, i_order_conditions_in, w_order_SCHDL, i_order_SCHDL. refresh : i_order_partners, i_return, i_order_items_in, i_order_conditions_in, i_order_SCHDL. w_order_header_in-doc_type = stru_order_header-doc_type. w_order_header_in-sales_org = stru_order_header-sales_org. w_order_header_in-distr_chan = stru_order_header-distr_chan. w_order_header_in-division = stru_order_header-division. w_order_header_in-req_date_h = stru_order_header-req_date_h. w_order_header_in-sales_dist = stru_order_header-sales_dist. w_order_header_in-purch_no_c = stru_order_header-purch_no_c. * Order Item Details CLEAR: i_order_items_in,w_order_items_in. * w_order_items_in-itm_num = stru_order_items-itm_num. w_order_items_in-ITM_NUMBER = stru_order_items-ITM_NUMBER. w_order_items_in-material = stru_order_items-material. w_order_items_in-target_qty = stru_order_items-target_qty."'5'. w_order_items_in-target_qu = stru_order_items-target_qu."'5'. w_order_items_in-plant = stru_order_items-plant. w_order_items_in-target_val = stru_order_items-target_val. w_order_items_in-currency = stru_order_items-currency. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = w_order_items_in-material IMPORTING output = w_order_items_in-material. APPEND w_order_items_in TO i_order_items_in. * Order Partner Details CLEAR: i_order_partners,w_order_partners. w_order_partners-partn_role = stru_order_partners-partn_role. w_order_partners-partn_numb = stru_order_partners-partn_numb. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = w_order_partners-partn_numb IMPORTING output = w_order_partners-partn_numb. APPEND w_order_partners TO i_order_partners. * Order Condition Details w_order_SCHDL-ITM_NUMBER = stru_order_items-itm_number." '000010'. w_order_SCHDL-req_qty = stru_order_items-target_qty." '5'. APPEND w_order_SCHDL to i_order_SCHDL. * Create Sales Order BAPI Call *loop at i_order_header_in into w_order_header_in. CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = w_order_header_in IMPORTING salesdocument = v_sales_doc TABLES return = i_return order_items_in = i_order_items_in order_partners = i_order_partners order_schedules_in = i_order_SCHDL order_conditions_in = i_order_conditions_in. * Get message manager DATA: l_current_controller TYPE REF TO if_wd_controller, l_message_manager TYPE REF TO if_wd_message_manager. l_current_controller ?= wd_this->wd_get_api( ). CALL METHOD l_current_controller->get_message_manager RECEIVING message_manager = l_message_manager. DATA: v_message_text TYPE string. * When Sales Order is created commit the data IF NOT v_sales_doc IS INITIAL. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. CONCATENATE 'Sales Document' v_sales_doc 'has been created.' INTO v_message_text SEPARATED BY space. * Report Success message CALL METHOD l_message_manager->report_success EXPORTING message_text = v_message_text. ELSE. v_message_text = 'Error Creating Sales Order'. * Report Error message CALL METHOD l_message_manager->report_error_message EXPORTING message_text = v_message_text. ENDIF. *endloop. endmethod. and code for table control i am using is method WDDOINIT . Types : Begin of item_tab, itm_number type bapisditm-itm_number, material type bapisditm-material, plant type bapisditm-plant , target_qty type bapisditm-target_qty, target_qu type bapisditm-target_qu, target_val type bapisditm-target_val, currency type bapisditm-currency, end of item_tab. *Creating internal table and Work Area of the same structure *as that of the Node created. Data : it_item type standard table of item_tab, wa_item type item_tab. *Appending Blank Work Area to Internal table. ***********************************************888 *LOOP AT it_item INTO wa_item. **wa_item-itm_number to bapisditm-itm_number. **wa_item-material to bapisditm-material. **wa_item-plant to bapisditm-plant. **wa_item-target_qty to bapisditm-target_qty. **wa_item-target_qu to bapisditm-target_qu. **wa_item-target_val to bapisditm-target_val. **wa_item-currency to bapisditm-currency. ** * APPEND wa_item TO it_item. *ENDLOOP. **********************************************88 ******** Do 10 times. Append wa_item to it_item. enddo. ********* "Binding the table DATA lo_nd_order_items TYPE REF TO if_wd_context_node. * DATA lt_material TYPE wd_this->Elements_material. * navigate from to via lead selection lo_nd_order_items = wd_context->get_child_node( name = wd_this->wdctx_order_items ). * @TODO handle non existant child * IF lo_nd_material IS INITIAL. * ENDIF. ** @TODO compute values ** e.g. call a model function * lo_nd_order_items->bind_table( new_items = it_item set_initial_elements = abap_true ). endmethod.DATA: node_order_header TYPE REF TO if_wd_context_node, elem_order_header TYPE REF TO if_wd_context_element, stru_order_header TYPE if_componentcontroller=>element_order_header . * Declaration for Order Items Node DATA: node_order_items TYPE REF TO if_wd_context_node, elem_order_items TYPE REF TO if_wd_context_element, stru_order_items TYPE if_componentcontroller=>element_order_items . * Declaration for Order Partners Node DATA: node_order_partners TYPE REF TO if_wd_context_node, elem_order_partners TYPE REF TO if_wd_context_element, stru_order_partners TYPE if_componentcontroller=>element_order_partners . node_order_header = wd_context->get_child_node( name = if_componentcontroller=>wdctx_order_header ). elem_order_header = node_order_header->get_element( ). elem_order_header->get_static_attributes( IMPORTING static_attributes = stru_order_header ). * via lead selection node_order_items = wd_context->get_child_node( name = if_componentcontroller=>wdctx_order_items ). elem_order_items = node_order_items->get_element( ). elem_order_items->get_static_attributes( IMPORTING static_attributes = stru_order_items ). * via lead selection node_order_partners = wd_context->get_child_node( name = if_componentcontroller=>wdctx_order_partners ). elem_order_partners = node_order_partners->get_element( ). elem_order_partners->get_static_attributes( IMPORTING static_attributes = stru_order_partners ). DATA: v_sales_doc TYPE bapivbeln-vbeln. DATA: w_order_header_in TYPE bapisdhd1, i_order_header_in TYPE table of bapisdhd1," i_order_partners TYPE TABLE OF bapiparnr, w_order_partners TYPE bapiparnr, i_return TYPE TABLE OF bapiret2, w_return TYPE bapiret2, i_order_items_in TYPE TABLE OF bapisditm, w_order_items_in TYPE bapisditm, i_order_conditions_in TYPE TABLE OF bapicond, w_order_conditions_in TYPE bapicond, w_order_SCHDL type BAPISCHDL, i_order_SCHDL type table of BAPISCHDL. * Order Header Details CLEAR: w_order_header_in, i_order_partners, i_return, i_order_items_in, i_order_conditions_in, w_order_SCHDL, i_order_SCHDL. refresh : i_order_partners, i_return, i_order_items_in, i_order_conditions_in, i_order_SCHDL. w_order_header_in-doc_type = stru_order_header-doc_type. w_order_header_in-sales_org = stru_order_header-sales_org. w_order_header_in-distr_chan = stru_order_header-distr_chan. w_order_header_in-division = stru_order_header-division. w_order_header_in-req_date_h = stru_order_header-req_date_h. w_order_header_in-sales_dist = stru_order_header-sales_dist. w_order_header_in-purch_no_c = stru_order_header-purch_no_c. * Order Item Details CLEAR: i_order_items_in,w_order_items_in. * w_order_items_in-itm_num = stru_order_items-itm_num. w_order_items_in-ITM_NUMBER = stru_order_items-ITM_NUMBER. w_order_items_in-material = stru_order_items-material. w_order_items_in-target_qty = stru_order_items-target_qty."'5'. w_order_items_in-target_qu = stru_order_items-target_qu."'5'. w_order_items_in-plant = stru_order_items-plant. w_order_items_in-target_val = stru_order_items-target_val. w_order_items_in-currency = stru_order_items-currency. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = w_order_items_in-material IMPORTING output = w_order_items_in-material. APPEND w_order_items_in TO i_order_items_in. * Order Partner Details CLEAR: i_order_partners,w_order_partners. w_order_partners-partn_role = stru_order_partners-partn_role. w_order_partners-partn_numb = stru_order_partners-partn_numb. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = w_order_partners-partn_numb IMPORTING output = w_order_partners-partn_numb. APPEND w_order_partners TO i_order_partners. * Order Condition Details w_order_SCHDL-ITM_NUMBER = stru_order_items-itm_number." '000010'. w_order_SCHDL-req_qty = stru_order_items-target_qty." '5'. APPEND w_order_SCHDL to i_order_SCHDL. * Create Sales Order BAPI Call *loop at i_order_header_in into w_order_header_in. CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = w_order_header_in IMPORTING salesdocument = v_sales_doc TABLES return = i_return order_items_in = i_order_items_in order_partners = i_order_partners order_schedules_in = i_order_SCHDL order_conditions_in = i_order_conditions_in. * Get message manager DATA: l_current_controller TYPE REF TO if_wd_controller, l_message_manager TYPE REF TO if_wd_message_manager. l_current_controller ?= wd_this->wd_get_api( ). CALL METHOD l_current_controller->get_message_manager RECEIVING message_manager = l_message_manager. DATA: v_message_text TYPE string. * When Sales Order is created commit the data IF NOT v_sales_doc IS INITIAL. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. CONCATENATE 'Sales Document' v_sales_doc 'has been created.' INTO v_message_text SEPARATED BY space. * Report Success message CALL METHOD l_message_manager->report_success EXPORTING message_text = v_message_text. ELSE. v_message_text = 'Error Creating Sales Order'. * Report Error message CALL METHOD l_message_manager->report_error_message EXPORTING message_text = v_message_text. ENDIF. *endloop. endmethod. and code for table control i am using is method WDDOINIT . Types : Begin of item_tab, itm_number type bapisditm-itm_number, material type bapisditm-material, plant type bapisditm-plant , target_qty type bapisditm-target_qty, target_qu type bapisditm-target_qu, target_val type bapisditm-target_val, currency type bapisditm-currency, end of item_tab. *Creating internal table and Work Area of the same structure *as that of the Node created. Data : it_item type standard table of item_tab, wa_item type item_tab. *Appending Blank Work Area to Internal table. ***********************************************888 *LOOP AT it_item INTO wa_item. **wa_item-itm_number to bapisditm-itm_number. **wa_item-material to bapisditm-material. **wa_item-plant to bapisditm-plant. **wa_item-target_qty to bapisditm-target_qty. **wa_item-target_qu to bapisditm-target_qu. **wa_item-target_val to bapisditm-target_val. **wa_item-currency to bapisditm-currency. ** * APPEND wa_item TO it_item. *ENDLOOP. **********************************************88 ******** Do 10 times. Append wa_item to it_item. enddo. ********* "Binding the table DATA lo_nd_order_items TYPE REF TO if_wd_context_node. * DATA lt_material TYPE wd_this->Elements_material. * navigate from to via lead selection lo_nd_order_items = wd_context->get_child_node( name = wd_this->wdctx_order_items ). * @TODO handle non existant child * IF lo_nd_material IS INITIAL. * ENDIF. ** @TODO compute values ** e.g. call a model function * lo_nd_order_items->bind_table( new_items = it_item set_initial_elements = abap_true ). endmethod.
-
Sales order creation with bapi in webdynpro
When i use table control to update the line items only first row is getting updated in the sale order creation and the loop is not updating the other row to header only the first row is getting saved, for the same set of data sale order is getting created in va01 for multiple line items.
Pls give me some idea to resolve this issue,
here is the code i am using for creating sale order using bapi 'BAPI_SALESORDER_CREATEFROMDAT2'
method CREATE_SALES_ORDER .
Declaration for Order Header Node
DATA: node_order_header TYPE REF TO if_wd_context_node,
elem_order_header TYPE REF TO if_wd_context_element,
stru_order_header TYPE if_componentcontroller=>element_order_header .
Declaration for Order Items Node
DATA: node_order_items TYPE REF TO if_wd_context_node,
elem_order_items TYPE REF TO if_wd_context_element,
stru_order_items TYPE if_componentcontroller=>element_order_items .
Declaration for Order Partners Node
DATA: node_order_partners TYPE REF TO if_wd_context_node,
elem_order_partners TYPE REF TO if_wd_context_element,
stru_order_partners TYPE if_componentcontroller=>element_order_partners .
node_order_header = wd_context->get_child_node(
name = if_componentcontroller=>wdctx_order_header
elem_order_header = node_order_header->get_element( ).
elem_order_header->get_static_attributes(
IMPORTING static_attributes = stru_order_header
<ORDER_ITEMS> via lead selection
node_order_items = wd_context->get_child_node(
name = if_componentcontroller=>wdctx_order_items ).
elem_order_items = node_order_items->get_element( ).
elem_order_items->get_static_attributes(
IMPORTING static_attributes = stru_order_items ).
<ORDER_PARTNERS> via lead selection
node_order_partners = wd_context->get_child_node(
name = if_componentcontroller=>wdctx_order_partners ).
elem_order_partners = node_order_partners->get_element( ).
elem_order_partners->get_static_attributes(
IMPORTING static_attributes = stru_order_partners ).
DATA: v_sales_doc TYPE bapivbeln-vbeln.
DATA: w_order_header_in TYPE bapisdhd1,
i_order_header_in TYPE table of bapisdhd1,"
i_order_partners TYPE TABLE OF bapiparnr,
w_order_partners TYPE bapiparnr,
i_return TYPE TABLE OF bapiret2,
w_return TYPE bapiret2,
i_order_items_in TYPE TABLE OF bapisditm,
w_order_items_in TYPE bapisditm,
i_order_conditions_in TYPE TABLE OF bapicond,
w_order_conditions_in TYPE bapicond,
w_order_SCHDL type BAPISCHDL,
i_order_SCHDL type table of BAPISCHDL.
Order Header Details
CLEAR: w_order_header_in, i_order_partners, i_return, i_order_items_in,
i_order_conditions_in, w_order_SCHDL, i_order_SCHDL.
refresh : i_order_partners, i_return, i_order_items_in,
i_order_conditions_in, i_order_SCHDL.
w_order_header_in-doc_type = stru_order_header-doc_type.
w_order_header_in-sales_org = stru_order_header-sales_org.
w_order_header_in-distr_chan = stru_order_header-distr_chan.
w_order_header_in-division = stru_order_header-division.
w_order_header_in-req_date_h = stru_order_header-req_date_h.
w_order_header_in-sales_dist = stru_order_header-sales_dist.
w_order_header_in-purch_no_c = stru_order_header-purch_no_c.
Order Item Details
CLEAR: i_order_items_in,w_order_items_in.
w_order_items_in-itm_num = stru_order_items-itm_num.
w_order_items_in-ITM_NUMBER = stru_order_items-ITM_NUMBER.
w_order_items_in-material = stru_order_items-material.
w_order_items_in-target_qty = stru_order_items-target_qty."'5'.
w_order_items_in-target_qu = stru_order_items-target_qu."'5'.
w_order_items_in-plant = stru_order_items-plant.
w_order_items_in-target_val = stru_order_items-target_val.
w_order_items_in-currency = stru_order_items-currency.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = w_order_items_in-material
IMPORTING output = w_order_items_in-material.
APPEND w_order_items_in TO i_order_items_in.
Order Partner Details
CLEAR: i_order_partners,w_order_partners.
w_order_partners-partn_role = stru_order_partners-partn_role.
w_order_partners-partn_numb = stru_order_partners-partn_numb.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING input = w_order_partners-partn_numb
IMPORTING output = w_order_partners-partn_numb.
APPEND w_order_partners TO i_order_partners.
Order Condition Details
w_order_SCHDL-ITM_NUMBER = stru_order_items-itm_number." '000010'.
w_order_SCHDL-req_qty = stru_order_items-target_qty." '5'.
APPEND w_order_SCHDL to i_order_SCHDL.
Create Sales Order BAPI Call
*loop at i_order_header_in into w_order_header_in.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
order_header_in = w_order_header_in
IMPORTING
salesdocument = v_sales_doc
TABLES
return = i_return
order_items_in = i_order_items_in
order_partners = i_order_partners
order_schedules_in = i_order_SCHDL
order_conditions_in = i_order_conditions_in.
Get message manager
DATA: l_current_controller TYPE REF TO if_wd_controller,
l_message_manager TYPE REF TO if_wd_message_manager.
l_current_controller ?= wd_this->wd_get_api( ).
CALL METHOD l_current_controller->get_message_manager
RECEIVING
message_manager = l_message_manager.
DATA: v_message_text TYPE string.
When Sales Order is created commit the data
IF NOT v_sales_doc IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CONCATENATE 'Sales Document' v_sales_doc 'has been created.'
INTO v_message_text SEPARATED BY space.
Report Success message
CALL METHOD l_message_manager->report_success
EXPORTING message_text = v_message_text.
ELSE.
v_message_text = 'Error Creating Sales Order'.
Report Error message
CALL METHOD l_message_manager->report_error_message
EXPORTING message_text = v_message_text.
ENDIF.
*endloop.
endmethod.
and code for table control i am using is
method WDDOINIT .
Types : Begin of item_tab,
itm_number type bapisditm-itm_number,
material type bapisditm-material,
plant type bapisditm-plant ,
target_qty type bapisditm-target_qty,
target_qu type bapisditm-target_qu,
target_val type bapisditm-target_val,
currency type bapisditm-currency,
end of item_tab.
*Creating internal table and Work Area of the same structure
*as that of the Node created.
Data : it_item type standard table of item_tab,
wa_item type item_tab.
*Appending Blank Work Area to Internal table.
***********************************************888
*LOOP AT it_item INTO wa_item.
**wa_item-itm_number to bapisditm-itm_number.
**wa_item-material to bapisditm-material.
**wa_item-plant to bapisditm-plant.
**wa_item-target_qty to bapisditm-target_qty.
**wa_item-target_qu to bapisditm-target_qu.
**wa_item-target_val to bapisditm-target_val.
**wa_item-currency to bapisditm-currency.
APPEND wa_item TO it_item.
*ENDLOOP.
**********************************************88
Do 10 times.
Append wa_item to it_item.
enddo.
"Binding the table
DATA lo_nd_order_items TYPE REF TO if_wd_context_node.
DATA lt_material TYPE wd_this->Elements_material.
navigate from <CONTEXT> to <MATERIAL> via lead selection
lo_nd_order_items = wd_context->get_child_node( name = wd_this->wdctx_order_items ).
@TODO handle non existant child
IF lo_nd_material IS INITIAL.
ENDIF.
@TODO compute values
e.g. call a model function
lo_nd_order_items->bind_table( new_items =
it_item set_initial_elements = abap_true ).
endmethod.When i use table control to update the line items only first row is getting updated in the sale order creation and the loop is not updating the other row to header only the first row is getting saved, for the same set of data sale order is getting created in va01 for multiple line items.
Pls give me some idea to resolve this issue,
here is the code i am using for creating sale order using bapi 'BAPI_SALESORDER_CREATEFROMDAT2'
method CREATE_SALES_ORDER .
Declaration for Order Header Node
DATA: node_order_header TYPE REF TO if_wd_context_node,
elem_order_header TYPE REF TO if_wd_context_element,
stru_order_header TYPE if_componentcontroller=>element_order_header .
Declaration for Order Items Node
DATA: node_order_items TYPE REF TO if_wd_context_node,
elem_order_items TYPE REF TO if_wd_context_element,
stru_order_items TYPE if_componentcontroller=>element_order_items .
Declaration for Order Partners Node
DATA: node_order_partners TYPE REF TO if_wd_context_node,
elem_order_partners TYPE REF TO if_wd_context_element,
stru_order_partners TYPE if_componentcontroller=>element_order_partners .
node_order_header = wd_context->get_child_node(
name = if_componentcontroller=>wdctx_order_header
elem_order_header = node_order_header->get_element( ).
elem_order_header->get_static_attributes(
IMPORTING static_attributes = stru_order_header
<ORDER_ITEMS> via lead selection
node_order_items = wd_context->get_child_node(
name = if_componentcontroller=>wdctx_order_items ).
elem_order_items = node_order_items->get_element( ).
elem_order_items->get_static_attributes(
IMPORTING static_attributes = stru_order_items ).
<ORDER_PARTNERS> via lead selection
node_order_partners = wd_context->get_child_node(
name = if_componentcontroller=>wdctx_order_partners ).
elem_order_partners = node_order_partners->get_element( ).
elem_order_partners->get_static_attributes(
IMPORTING static_attributes = stru_order_partners ).
DATA: v_sales_doc TYPE bapivbeln-vbeln.
DATA: w_order_header_in TYPE bapisdhd1,
i_order_header_in TYPE table of bapisdhd1,"
i_order_partners TYPE TABLE OF bapiparnr,
w_order_partners TYPE bapiparnr,
i_return TYPE TABLE OF bapiret2,
w_return TYPE bapiret2,
i_order_items_in TYPE TABLE OF bapisditm,
w_order_items_in TYPE bapisditm,
i_order_conditions_in TYPE TABLE OF bapicond,
w_order_conditions_in TYPE bapicond,
w_order_SCHDL type BAPISCHDL,
i_order_SCHDL type table of BAPISCHDL.
Order Header Details
CLEAR: w_order_header_in, i_order_partners, i_return, i_order_items_in,
i_order_conditions_in, w_order_SCHDL, i_order_SCHDL.
refresh : i_order_partners, i_return, i_order_items_in,
i_order_conditions_in, i_order_SCHDL.
w_order_header_in-doc_type = stru_order_header-doc_type.
w_order_header_in-sales_org = stru_order_header-sales_org.
w_order_header_in-distr_chan = stru_order_header-distr_chan.
w_order_header_in-division = stru_order_header-division.
w_order_header_in-req_date_h = stru_order_header-req_date_h.
w_order_header_in-sales_dist = stru_order_header-sales_dist.
w_order_header_in-purch_no_c = stru_order_header-purch_no_c.
Order Item Details
CLEAR: i_order_items_in,w_order_items_in.
w_order_items_in-itm_num = stru_order_items-itm_num.
w_order_items_in-ITM_NUMBER = stru_order_items-ITM_NUMBER.
w_order_items_in-material = stru_order_items-material.
w_order_items_in-target_qty = stru_order_items-target_qty."'5'.
w_order_items_in-target_qu = stru_order_items-target_qu."'5'.
w_order_items_in-plant = stru_order_items-plant.
w_order_items_in-target_val = stru_order_items-target_val.
w_order_items_in-currency = stru_order_items-currency.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = w_order_items_in-material
IMPORTING output = w_order_items_in-material.
APPEND w_order_items_in TO i_order_items_in.
Order Partner Details
CLEAR: i_order_partners,w_order_partners.
w_order_partners-partn_role = stru_order_partners-partn_role.
w_order_partners-partn_numb = stru_order_partners-partn_numb.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING input = w_order_partners-partn_numb
IMPORTING output = w_order_partners-partn_numb.
APPEND w_order_partners TO i_order_partners.
Order Condition Details
w_order_SCHDL-ITM_NUMBER = stru_order_items-itm_number." '000010'.
w_order_SCHDL-req_qty = stru_order_items-target_qty." '5'.
APPEND w_order_SCHDL to i_order_SCHDL.
Create Sales Order BAPI Call
*loop at i_order_header_in into w_order_header_in.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
order_header_in = w_order_header_in
IMPORTING
salesdocument = v_sales_doc
TABLES
return = i_return
order_items_in = i_order_items_in
order_partners = i_order_partners
order_schedules_in = i_order_SCHDL
order_conditions_in = i_order_conditions_in.
Get message manager
DATA: l_current_controller TYPE REF TO if_wd_controller,
l_message_manager TYPE REF TO if_wd_message_manager.
l_current_controller ?= wd_this->wd_get_api( ).
CALL METHOD l_current_controller->get_message_manager
RECEIVING
message_manager = l_message_manager.
DATA: v_message_text TYPE string.
When Sales Order is created commit the data
IF NOT v_sales_doc IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CONCATENATE 'Sales Document' v_sales_doc 'has been created.'
INTO v_message_text SEPARATED BY space.
Report Success message
CALL METHOD l_message_manager->report_success
EXPORTING message_text = v_message_text.
ELSE.
v_message_text = 'Error Creating Sales Order'.
Report Error message
CALL METHOD l_message_manager->report_error_message
EXPORTING message_text = v_message_text.
ENDIF.
*endloop.
endmethod.
and code for table control i am using is
method WDDOINIT .
Types : Begin of item_tab,
itm_number type bapisditm-itm_number,
material type bapisditm-material,
plant type bapisditm-plant ,
target_qty type bapisditm-target_qty,
target_qu type bapisditm-target_qu,
target_val type bapisditm-target_val,
currency type bapisditm-currency,
end of item_tab.
*Creating internal table and Work Area of the same structure
*as that of the Node created.
Data : it_item type standard table of item_tab,
wa_item type item_tab.
*Appending Blank Work Area to Internal table.
***********************************************888
*LOOP AT it_item INTO wa_item.
**wa_item-itm_number to bapisditm-itm_number.
**wa_item-material to bapisditm-material.
**wa_item-plant to bapisditm-plant.
**wa_item-target_qty to bapisditm-target_qty.
**wa_item-target_qu to bapisditm-target_qu.
**wa_item-target_val to bapisditm-target_val.
**wa_item-currency to bapisditm-currency.
APPEND wa_item TO it_item.
*ENDLOOP.
**********************************************88
Do 10 times.
Append wa_item to it_item.
enddo.
"Binding the table
DATA lo_nd_order_items TYPE REF TO if_wd_context_node.
DATA lt_material TYPE wd_this->Elements_material.
navigate from <CONTEXT> to <MATERIAL> via lead selection
lo_nd_order_items = wd_context->get_child_node( name = wd_this->wdctx_order_items ).
@TODO handle non existant child
IF lo_nd_material IS INITIAL.
ENDIF.
@TODO compute values
e.g. call a model function
lo_nd_order_items->bind_table( new_items =
it_item set_initial_elements = abap_true ).
endmethod. -
Sales Order Creation with reference to Contract
Hi all ,
Existing Setup in the System:
1) I have a contract created with a validity period of 30 days. When i create sales order with reference to contract, then i get a pop-up box, from the box i can select my contract.
2) I have a Lead time configured as 5 days for the Sales document type , I,e when I create sales order I can see my Requested delivery date is always system date + 5 days.
3) I have a Pricing date configured as Todays date. Therefore when I create sales order I can see pricing date becomes the system date.
Execution of Sales Order:
4) When I create Sales Order with reference to contract document. Always Requested Delivery date is compared with Contract Validity Dates.
Example: Contract Validity 01/03/2008 - 31/03/2008
Sales Order: Sales Order Creation date -> 19/03/2008, Pricing Date: 19/03/2008 Requested delivery date 24/03/2008.
REQUIREMENT IS:
But my requirement is when i create Sales Order it should consider System date or Pricing Date( since pricing date is today date) for to compare with contract validity dates.
Can it be done with standard config or do we need to some type of custom? Appreciate your help
ThanksHi ,
As said when I create Sales Order with reference to contract document. Always Requested Delivery date on Sales Order is checked against Contract Validity Dates.
But i want Pricing date in Sales Order should be checked against Contract Validity Dates.
Can someone suggest me on this?
Maybe you are looking for
-
Can I use XP, Vista and Windows Server on my Mac Pro
Looking for options to have multiple Operating Systems available for bootup. I need to have the ability to run XP, Vista, Windows 2003 and Windows 2008 server. I am currently using a Windows PC with BootCommander. I want to use my Mac Pro for its pow
-
BAPI_PO_CHANGE : Payment Terms
Hi, I have problems with BAPI_PO_CHANGE, the Payment Terms aren't updated. Some body has a suggestion, please! regards. Marisol.
-
Store user preferences accessible from view layer and ADF BC
Hi I'm working with JDeveloper 11.1.2.1 We have an application with an application-level shared application module which contains VOs with bind variables to generate language dependent LOVs. From these VOs have to access the language. We want to stor
-
Iphone4 will not power on what do i need to do?
iphone powered down and will not power back up what should i do
-
Linking Postfix to the PostfixAdmin MySQL database
I am building a hosting platform on OS X Server. Thus, I want to manage mail users and virtual domains in a database. First, I followed Pterobyte's advises in order to manage virtual domains with Postfix, using Apple's administration tools (http://do