‎2009 Jul 29 3:27 PM
Hi All,
I am facing a problem in BAPI 'BAPI_SALESORDER_CHANGE'. My requirement is as below.
For a particular type of Sales Order i have to update all the ship-to PO.Basically in all these PO's we have to suffix
'old'.
I am pasting the code which I used. I am actually displaying the return message in a table.
The message says 'Schedule Order is saved'.
When i go and check the SO the ship-to PO is not updated.
Also i have one more querry.
Is thsi BAPI to be run for each item or can i collect all items in t_item_in and then call the BAPI.
Please guide me on this.
Thanks in Advance,
Saket.
LOOP AT t_vbkd INTO wa_vbkd.
CONCATENATE wa_vbkd-bstkd_e '-' v_po INTO v_po_ref.
t_item_in-purch_no_c = v_po_ref.
t_item_inx-purch_no_c = v_po_ref.
t_item_inx-updateflag = 'X'.
APPEND t_item_in.
APPEND t_item_inx.
*LOOP AT t_vbak INTO wa_vbak.
v_vbeln = wa_vbkd-vbeln.
w_headerx-updateflag = 'U'.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = v_vbeln
ORDER_HEADER_INX = w_headerx
TABLES
RETURN = t_return
ORDER_ITEM_IN = t_item_in
ORDER_ITEM_INX = t_item_inx.
READ TABLE t_return WITH KEY type = 'E'.
IF sy-subrc = 0.
t_output-rmks = t_return-message.
ELSE.
t_output-rmks = t_return-message.
ENDIF.
READ TABLE t_vbak INTO wa_vbak
WITH KEY vbeln = v_vbeln.
t_output-vbeln = v_vbeln.
t_output-auart = wa_vbak-auart.
t_output-vkorg = wa_vbak-vkorg.
t_output-bstkd_e_old = wa_vbkd-bstkd_e.
t_output-bstkd_e_new = t_item_in-purch_no_c.
APPEND t_output.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN =
.
ENDLOOP.
‎2009 Jul 29 3:51 PM
Hi,
try like below:
t_item_in-purch_no_c = v_po_ref.
t_item_inx-purch_no_c = 'X'.
APPEND t_item_in.
APPEND t_item_inx.
You can update all lines for 1 Sales Order at a time so you have loop at all the sales orders and one by one update each one of them.
Regards,
Himanshu Verma
‎2009 Jul 30 8:22 AM
REPORT ZSALESORDER_CHANGE MESSAGE-ID 38.
PARAMETERS: p_vbeln TYPE vbap-vbeln OBLIGATORY, "Order Number
p_posnr TYPE vbap-posnr OBLIGATORY, "Order Item
p_etenr TYPE vbep-etenr OBLIGATORY, "Schedule Line
p_reqqty TYPE bapischdl-req_qty OBLIGATORY. " Order Qty
DATA: i_hdr TYPE bapisdh1,
i_hdrx TYPE bapisdh1x,
i_ret TYPE bapiret2 OCCURS 0 WITH HEADER LINE,
wa_ret TYPE bapiret2.
DATA: BEGIN OF i_sched OCCURS 10.
INCLUDE STRUCTURE bapischdl.
DATA: END OF i_sched.
DATA: BEGIN OF i_schedx OCCURS 10.
INCLUDE STRUCTURE bapischdlx.
DATA: END OF i_schedx.
START-OF-SELECTION.
REFRESH: i_sched, i_schedx, i_ret.
CLEAR: i_sched, i_schedx, i_ret.
i_hdrx-updateflag = 'U'.
i_sched-itm_number = p_posnr.
i_sched-sched_line = p_etenr.
i_sched-req_qty = p_reqqty.
i_schedx-updateflag = 'U'.
i_schedx-itm_number = p_posnr.
i_schedx-sched_line = p_etenr.
i_schedx-req_qty = 'X'.
APPEND i_sched.
APPEND i_schedx.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = p_vbeln
order_header_in = i_hdr
order_header_inx = i_hdrx
TABLES
return = i_ret
schedule_lines = i_sched
schedule_linesx = i_schedx.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT i_ret.
WRITE / i_ret-message.
ENDLOOP.
.
http://abap.wikiprog.com/wiki/BAPI_SALESORDER_CHANGE
Edited by: krupa jani on Jul 30, 2009 9:22 AM
‎2009 Jul 30 11:28 AM
Hi Saket,
Make sure you are using
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X' .
Thanks,
Mandeep
‎2009 Nov 06 9:38 AM