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

BAPI_SALESORDER_CHANGE

Former Member
0 Likes
1,121

hi,

i am updating the values of two zfields in vbep table through BAPI_SALESORDER_CHANGE.

two fields are appended in vbep. and below is my part of code where i am calling bapi. it gives two success messages

1) ORDER_HEADER_IN processed successfully

2) no data changed for so

below is my code: could anyone plz say what is wrong in it and why the fields are not updating?

FORM update_vbep_zzedatu_zzedatudat TABLES pr_i_return TYPE t_bapiret2

USING pr_lwa_final type gt_final

pr_lwa_VBEP1 TYPE GT_VBEP1

CHANGING pr_i_final TYPE t_final1.

  • Local data declaration

DATA :

lv_vbeln TYPE vbeln,

ls_bapisdh1x TYPE bapisdh1x,

it_return TYPE STANDARD TABLE OF bapiret2,

it_extn TYPE STANDARD TABLE OF bapiparex,

lwa_extn TYPE bapiparex,

bape_vbep TYPE bape_vbep,

bape_vbepx TYPE bape_vbepx.

  • local constants

CONSTANTS: lc_bape_vbep TYPE te_struc VALUE 'BAPE_VBEP',

lc_bape_vbepx TYPE te_struc VALUE 'BAPE_VBEPX',

lc_u TYPE updkz_d VALUE 'U',

lc_flag TYPE char01 VALUE 'X'.

CLEAR lv_vbeln.

lv_vbeln = pr_lwa_VBEP1-vbeln.

ls_bapisdh1x-updateflag = lc_u.

  • populating bape_vbep structure And bape_vbepx structure

bape_vbep-vbeln = lv_vbeln.

bape_vbep-POSNR = pr_lwa_VBEP1-posnr.

bape_vbep-ETENR = pr_lwa_VBEP1-ETENR.

bape_vbep-zzedatu = pr_lwa_VBEP1-edatu.

bape_vbep-zzedatudat = sy-datum.

bape_vbepx-vbeln = lv_vbeln .

bape_vbepx-POSNR = pr_lwa_VBEP1-posnr.

bape_vbepx-ETENR = PR_LWA_VBEP1-ETENR.

bape_vbepx-zzedatu = lc_flag.

bape_vbepx-zzedatudat = lc_flag.

  • populating data into table it_extn.

CLEAR lwa_extn.

lwa_extn-structure = lc_bape_vbep.

lwa_extn-valuepart1 = bape_vbep. "#EC ENHOK

APPEND lwa_extn TO it_extn.

  • populating data into table it_extn.

CLEAR lwa_extn.

lwa_extn-structure = lc_bape_vbepx.

lwa_extn-valuepart1 = bape_vbepx. "#EC ENHOK

APPEND lwa_extn TO it_extn.

REFRESH it_return.

*call BAPI_SALESORDER_CHANGE to update ZZEDATU and ZZEDATUDAT

CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

EXPORTING

salesdocument = lv_vbeln

  • ORDER_HEADER_IN =

order_header_inx = ls_bapisdh1x

tables

RETURN = it_return

  • SCHEDULE_LINES =

  • SCHEDULE_LINESX =

EXTENSIONIN = it_extn

.

READ TABLE it_return INTO gwa_return WITH KEY type = 'S'.

  • CLEAR gv_rcount.

IF sy-subrc = 0.

  • gv_rcount = gv_rcount + 1.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

  • MESSAGE s482.

ENDIF.

READ TABLE it_return INTO gwa_return WITH KEY type = 'E'.

IF sy-subrc = 0.

  • gv_flag = gc_x.

DELETE TABLE pr_i_final FROM pr_lwa_final.

ENDIF.

APPEND LINES OF it_return TO pr_i_return.

CLEAR gwa_return.

ENDFORM. " UPDATE_VBEP_ZZEDATU_ZZEDATUDAT

hi,

i am updating the values of two zfields in vbep table through BAPI_SALESORDER_CHANGE.

two fields are appended in vbep. and below is my part of code where i am calling bapi. it gives two success messages

1) ORDER_HEADER_IN processed successfully

2) no data changed for so

below is my code: could anyone plz say what is wrong in it and why the fields are not updating?

FORM update_vbep_zzedatu_zzedatudat TABLES pr_i_return TYPE t_bapiret2

USING pr_lwa_final type gt_final

pr_lwa_VBEP1 TYPE GT_VBEP1

CHANGING pr_i_final TYPE t_final1.

  • Local data declaration

DATA :

lv_vbeln TYPE vbeln,

ls_bapisdh1x TYPE bapisdh1x,

it_return TYPE STANDARD TABLE OF bapiret2,

it_extn TYPE STANDARD TABLE OF bapiparex,

lwa_extn TYPE bapiparex,

bape_vbep TYPE bape_vbep,

bape_vbepx TYPE bape_vbepx.

  • local constants

CONSTANTS: lc_bape_vbep TYPE te_struc VALUE 'BAPE_VBEP',

lc_bape_vbepx TYPE te_struc VALUE 'BAPE_VBEPX',

lc_u TYPE updkz_d VALUE 'U',

lc_flag TYPE char01 VALUE 'X'.

CLEAR lv_vbeln.

lv_vbeln = pr_lwa_VBEP1-vbeln.

ls_bapisdh1x-updateflag = lc_u.

  • populating bape_vbep structure And bape_vbepx structure

bape_vbep-vbeln = lv_vbeln.

bape_vbep-POSNR = pr_lwa_VBEP1-posnr.

bape_vbep-ETENR = pr_lwa_VBEP1-ETENR.

bape_vbep-zzedatu = pr_lwa_VBEP1-edatu.

bape_vbep-zzedatudat = sy-datum.

bape_vbepx-vbeln = lv_vbeln .

bape_vbepx-POSNR = pr_lwa_VBEP1-posnr.

bape_vbepx-ETENR = PR_LWA_VBEP1-ETENR.

bape_vbepx-zzedatu = lc_flag.

bape_vbepx-zzedatudat = lc_flag.

  • populating data into table it_extn.

CLEAR lwa_extn.

lwa_extn-structure = lc_bape_vbep.

lwa_extn-valuepart1 = bape_vbep. "#EC ENHOK

APPEND lwa_extn TO it_extn.

  • populating data into table it_extn.

CLEAR lwa_extn.

lwa_extn-structure = lc_bape_vbepx.

lwa_extn-valuepart1 = bape_vbepx. "#EC ENHOK

APPEND lwa_extn TO it_extn.

REFRESH it_return.

*call BAPI_SALESORDER_CHANGE to update ZZEDATU and ZZEDATUDAT

CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

EXPORTING

salesdocument = lv_vbeln

  • ORDER_HEADER_IN =

order_header_inx = ls_bapisdh1x

tables

RETURN = it_return

  • SCHEDULE_LINES =

  • SCHEDULE_LINESX =

EXTENSIONIN = it_extn

.

READ TABLE it_return INTO gwa_return WITH KEY type = 'S'.

  • CLEAR gv_rcount.

IF sy-subrc = 0.

  • gv_rcount = gv_rcount + 1.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

  • MESSAGE s482.

ENDIF.

READ TABLE it_return INTO gwa_return WITH KEY type = 'E'.

IF sy-subrc = 0.

  • gv_flag = gc_x.

DELETE TABLE pr_i_final FROM pr_lwa_final.

ENDIF.

APPEND LINES OF it_return TO pr_i_return.

CLEAR gwa_return.

ENDFORM. " UPDATE_VBEP_ZZEDATU_ZZEDATUDAT

6 REPLIES 6
Read only

Former Member
0 Likes
944

Hi Rakhi,

Try this-

Set LOGIC_SWITCH-NOSTRUCTURE = 'X' in import parameter of BAPI.

Regards,

Aparna Gaikwad

Read only

0 Likes
944

hi,

thanks for your suggesion.

but it still showing the same messages

ORDER_HEADER_IN has been processed successfully

No data was changed

Read only

0 Likes
944

Hi,

When u pass order_header_inx = ls_bapisdh1x,

it may expect value in order_header_in as well. Try that.

Regards

Meenakshi

Read only

0 Likes
944

sometimes,if we dont change anything in header, this BAPI does not work. So plz try with changing any 1 minor field (not much imp field) in header.

Also dont forget to set-

order_header_inx-updateflag = 'U'.

and 'BAPI_TRANSACTION_COMMIT' after successful sales order change.

Regards,

Aparna Gaikwad

Read only

0 Likes
944

Hi,

Please refer the below mentioned code. It is a working solution.

LOOP AT gt_vbep INTO gs_vbep.

  • header

PERFORM map_hdr.

  • line items

READ TABLE gt_vbfarf INTO gs_vbfarf WITH KEY vbelv = gs_vbep-vgbel

posnv = gs_vbep-vgpos.

IF sy-subrc = c_0.

gs_order_item-itm_number = gs_vbep-posnr.

gs_order_item-ref_1_s = gs_vbfarf-vbeln.

gs_order_item-poitm_no_s = gs_vbfarf-posnn.

APPEND gs_order_item TO gt_order_item.

gs_order_itemx-itm_number = gs_vbep-posnr.

gs_order_itemx-updateflag = c_u.

gs_order_itemx-ref_1_s = c_x.

gs_order_itemx-poitm_no_s = c_x.

APPEND gs_order_itemx TO gt_order_itemx.

CLEAR: gs_vbfarf.

ENDIF.

  • schedule lines

gs_schd_lines-itm_number = gs_vbep-posnr.

gs_schd_lines-sched_line = gs_vbep-etenr.

gs_schd_lines-req_date = gs_vbak-zback.

APPEND gs_schd_lines TO gt_schd_lines.

gs_schd_linesx-itm_number = gs_vbep-posnr.

gs_schd_linesx-sched_line = gs_vbep-etenr.

gs_schd_linesx-updateflag = c_u.

gs_schd_linesx-req_date = c_x.

APPEND gs_schd_linesx TO gt_schd_linesx.

  • change BAPI

AT END OF vbeln.

----


  • change pick-up order

----


CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

EXPORTING

salesdocument = gv_newsalesdoc

order_header_in = gs_ord_hdr

order_header_inx = gs_ord_hdrx

TABLES

return = gt_return_chg

order_item_in = gt_order_item

order_item_inx = gt_order_itemx

schedule_lines = gt_schd_lines

schedule_linesx = gt_schd_linesx

extensionin = gt_extensionin.

  • check for error captured

READ TABLE gt_return_chg INTO gs_return_chg WITH KEY type = c_e.

IF sy-subrc = c_0.

gs_final-vbeln = gs_vbak-vbeln.

gs_final-new_vbeln = gv_newsalesdoc.

gv_fname = 'BAPI_SALESORDER_CHANGE'.

PERFORM error_handle USING gt_return_chg gs_return_chg.

ELSE.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = c_x.

  • change user status of fillup

PERFORM chg_usr_stat.

ENDIF. " sy-subrc

CLEAR: gt_schd_lines[],

gt_schd_linesx[],

gt_order_item[],

gt_order_itemx[],

gt_return_chg[],

gs_ord_hdr,

gs_ord_hdrx,

gt_extensionin[].

ENDAT. " AT END OF vbeln

ENDLOOP. " gt_vbep

***************************************************************************

FORM map_hdr .

CLEAR gs_vbak.

READ TABLE gt_vbak INTO gs_vbak WITH KEY pckup = gs_vbep-vbeln.

CHECK sy-subrc = c_0.

gv_newsalesdoc = gs_vbak-pckup.

  • header

gs_ord_hdr-req_date_h = gs_vbak-back. " Req delivery date

gs_ord_hdr-purch_no_c = gs_vbak-vbeln. " Cust PO Number

gs_ord_hdr-po_method = c_auto. " PO method

gs_ord_hdrx-updateflag = c_u. " checkbox: Update Flag

gs_ord_hdrx-req_date_h = c_x. " checkbox: Req delivery date

gs_ord_hdrx-purch_no_c = c_x. " checkbox: Cust PO Number

gs_ord_hdrx-po_method = c_x. " checkbox: PO method

----


IF gt_extensionin IS INITIAL.

  • mapping the z fields

gs_extensionin-structure = 'BAPE_VBAK'.

gs_extensionin-valuepart1+0(10) = gv_newsalesdoc.

gs_extensionin-valuepart1+10(1) = gs_vbak-zstatus.

gs_extensionin-valuepart1+11(8) = gs_vbak-zdate.

gs_extensionin-valuepart1+19(6) = gs_vbak-ztime.

gs_extensionin-valuepart1+25(3) = gs_vbak-ztype.

gs_extensionin-valuepart1+28(20) = gs_vbak-znt.

gs_extensionin-valuepart1+48(1) = gs_vbak-zgr.

gs_extensionin-valuepart1+49(5) = gs_vbak-zcoe.

gs_extensionin-valuepart1+54(1) = gs_vbak-zom.

gs_extensionin-valuepart1+55(1) = gs_vbak-zht.

gs_extensionin-valuepart1+56(8) = gs_vbak-zback.

gs_extensionin-valuepart1+64(1) = gs_vbak-zant.

gs_extensionin-valuepart1+65(1) = gs_vbak-z1.

gs_extensionin-valuepart1+66(1) = gs_vbak-z2.

gs_extensionin-valuepart1+67(1) = gs_vbak-z3.

gs_extensionin-valuepart1+68(1) = gs_vbak-z4.

APPEND gs_extensionin TO gt_extensionin.

----


  • mapping the checkboxes for z fields

gs_extensionin-structure = 'BAPE_VBAKX'.

gs_extensionin-valuepart1+0(10) = gv_newsalesdoc.

gs_extensionin-valuepart1+10(1) = c_x.

gs_extensionin-valuepart1+11(1) = c_x.

gs_extensionin-valuepart1+12(1) = c_x.

gs_extensionin-valuepart1+13(1) = c_x.

gs_extensionin-valuepart1+14(1) = c_x.

gs_extensionin-valuepart1+15(1) = c_x.

gs_extensionin-valuepart1+16(1) = c_x.

gs_extensionin-valuepart1+17(1) = c_x.

gs_extensionin-valuepart1+18(1) = c_x.

gs_extensionin-valuepart1+19(1) = c_x.

gs_extensionin-valuepart1+20(1) = c_x.

gs_extensionin-valuepart1+21(1) = c_x.

gs_extensionin-valuepart1+22(1) = c_x.

gs_extensionin-valuepart1+23(1) = c_x.

gs_extensionin-valuepart1+24(1) = c_x.

APPEND gs_extensionin TO gt_extensionin.

CLEAR gs_extensionin.

ENDIF. " gt_extensionin

ENDFORM. " map_hdr

******************************************************

Please let me know if you need some more help.

Please do give points if the above code is useful.

regards,

Edited by: Sharad Dubey on Aug 11, 2008 2:12 PM

Read only

Former Member
0 Likes
944

This message was moderated.