Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Problem in BAPI 'BAPI_SALESORDER_CHANGE'.

Former Member
0 Likes
870

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.

4 REPLIES 4
Read only

Former Member
0 Likes
695

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

Read only

Former Member
0 Likes
695

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

Read only

Former Member
0 Likes
695

Hi Saket,

Make sure you are using

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X' .

Thanks,

Mandeep

Read only

Former Member
0 Likes
695

BAPI_TRANSACTION_COMMIT helped