2009 May 25 3:19 AM
Hi All,
I have a requirement to change the reasons for rejection for selective items in the sales order.
but when i use BAPI_SALESORDER_CHANGE. i get the error:
Field ABGRU cannot be changed VBAPKOM 0003000ready for input.
Sales document not changed.
These are the following values i pass:
IMPORT PARAMETERS:
Salesdocument :' 100000356'
Order_header_inx-Updateflag = 'X'
TABLES:
order_item_in-item_number = '003000'.
order_item_in-plant = '1000'.
order_item_in-reason_rej = ' '.
order_item_inx-item_number = '003000'.
order_item_inx-updateflag = 'U'.
order_item_inx-reason_rej = 'X'.
order_item_inx-plant = 'X'.
do i have to input any other values .Pls help.
thanks,
Kavitha
2009 May 25 4:35 AM
Hi,
Try with following Code it will help you.
1) In this we need Valid reason for that we are selecting data from TVAG table.
2) Fill BAPi related internal table
3) Pass IT_TVAGT-ABGRU in the reason filed of bapi.
4) Use Transaction Commit.
SELECT * FROM TVAG INTO TABLE IT_TVAG.
SELECT * FROM TVAGT INTO TABLE IT_TVAGT
FOR ALL ENTRIES IN IT_TVAG
WHERE SPRAS = 'E' AND
ABGRU = IT_TVAG-ABGRU.
ZORDERHEADERINX-UPDATEFLAG ='U'.
APPEND ZORDERHEADERINX.
ZDORDER_ITEM_IN-ITM_NUMBER = IST_FINAL-POSNR.
ZDORDER_ITEM_IN-REASON_REJ = IT_TVAGT-ABGRU.
APPEND ZDORDER_ITEM_IN.
UNPACK IST_FINAL-POSNR TO IST_FINAL-POSNR.
ZDORDER_ITEM_INX-ITM_NUMBER = IST_FINAL-POSNR.
ZDORDER_ITEM_INX-REASON_REJ = 'X'.
ZDORDER_ITEM_INX-UPDATEFLAG = 'U'.
APPEND ZDORDER_ITEM_INX.
UNPACK IST_FINAL-VBELN TO IST_FINAL-VBELN.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = IST_FINAL-VBELN
ORDER_HEADER_INX = ZORDERHEADERINX
TABLES
RETURN = ZRETURN
ORDER_ITEM_IN = ZDORDER_ITEM_IN
ORDER_ITEM_INX = ZDORDER_ITEM_INX.
IF SY-SUBRC = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
WAIT UP TO 3 SECONDS.
ENDIF.
Salil....
Edited by: salil chavan on May 25, 2009 5:35 AM
Hi,
Try with following Code it will help you.
1) In this we need Valid reason for that we are selecting data from TVAG table.
2) Fill BAPi related internal table
3) Pass IT_TVAGT-ABGRU in the reason filed of bapi.
4) Use Transaction Commit.
SELECT * FROM TVAG INTO TABLE IT_TVAG.
SELECT * FROM TVAGT INTO TABLE IT_TVAGT
FOR ALL ENTRIES IN IT_TVAG
WHERE SPRAS = 'E' AND
ABGRU = IT_TVAG-ABGRU.
ZORDERHEADERINX-UPDATEFLAG ='U'.
APPEND ZORDERHEADERINX.
ZDORDER_ITEM_IN-ITM_NUMBER = IST_FINAL-POSNR.
ZDORDER_ITEM_IN-REASON_REJ = IT_TVAGT-ABGRU.
APPEND ZDORDER_ITEM_IN.
UNPACK IST_FINAL-POSNR TO IST_FINAL-POSNR.
ZDORDER_ITEM_INX-ITM_NUMBER = IST_FINAL-POSNR.
ZDORDER_ITEM_INX-REASON_REJ = 'X'.
ZDORDER_ITEM_INX-UPDATEFLAG = 'U'.
APPEND ZDORDER_ITEM_INX.
UNPACK IST_FINAL-VBELN TO IST_FINAL-VBELN.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = IST_FINAL-VBELN
ORDER_HEADER_INX = ZORDERHEADERINX
TABLES
RETURN = ZRETURN
ORDER_ITEM_IN = ZDORDER_ITEM_IN
ORDER_ITEM_INX = ZDORDER_ITEM_INX.
IF SY-SUBRC = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
WAIT UP TO 3 SECONDS.
ENDIF.
Salil....
Edited by: salil chavan on May 25, 2009 5:35 AM
2009 May 25 4:35 AM
Hi,
Try with following Code it will help you.
1) In this we need Valid reason for that we are selecting data from TVAG table.
2) Fill BAPi related internal table
3) Pass IT_TVAGT-ABGRU in the reason filed of bapi.
4) Use Transaction Commit.
SELECT * FROM TVAG INTO TABLE IT_TVAG.
SELECT * FROM TVAGT INTO TABLE IT_TVAGT
FOR ALL ENTRIES IN IT_TVAG
WHERE SPRAS = 'E' AND
ABGRU = IT_TVAG-ABGRU.
ZORDERHEADERINX-UPDATEFLAG ='U'.
APPEND ZORDERHEADERINX.
ZDORDER_ITEM_IN-ITM_NUMBER = IST_FINAL-POSNR.
ZDORDER_ITEM_IN-REASON_REJ = IT_TVAGT-ABGRU.
APPEND ZDORDER_ITEM_IN.
UNPACK IST_FINAL-POSNR TO IST_FINAL-POSNR.
ZDORDER_ITEM_INX-ITM_NUMBER = IST_FINAL-POSNR.
ZDORDER_ITEM_INX-REASON_REJ = 'X'.
ZDORDER_ITEM_INX-UPDATEFLAG = 'U'.
APPEND ZDORDER_ITEM_INX.
UNPACK IST_FINAL-VBELN TO IST_FINAL-VBELN.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = IST_FINAL-VBELN
ORDER_HEADER_INX = ZORDERHEADERINX
TABLES
RETURN = ZRETURN
ORDER_ITEM_IN = ZDORDER_ITEM_IN
ORDER_ITEM_INX = ZDORDER_ITEM_INX.
IF SY-SUBRC = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
WAIT UP TO 3 SECONDS.
ENDIF.
Salil....
Edited by: salil chavan on May 25, 2009 5:35 AM
2009 May 25 10:33 AM
REPORT ZSALESORDER_CHANGE MESSAGE-ID 38.
*----
Selection Screen Definitions *
*----
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
*----
Internal Tables/Structures/Variables for calling BAPI. *
*----
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 Event *
*----
START-OF-SELECTION.
*"----
*" Initialize internal tables.
*"----
REFRESH: i_sched, i_schedx, i_ret.
CLEAR: i_sched, i_schedx, i_ret.
*"----
*" Fill required ORDER_HEADER_IN data.
*"----
i_hdrx-updateflag = 'U'.
*"----
*" Fill required SCHEDULE_LINES data.
*"----
*P_POSNR = P_POSNR + 10.
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'.
*i_schedx-ITM_NUMBER = 'X'.
*i_schedx-SCHED_LINE = '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.
2009 May 25 10:52 AM
Hi,
We cannot update the fields for the orders which are already delivered as such the fields ABGRU is not updating because the field is in disable mode for that order numbers and the orders are delivred.
check for another order which is not delivered, check the tcode va02 for that order the field ABGRU will be in change mode than you can update the field through 'BAPI_SALESORDER_CHANGE'.
I have tried the same it is updating correctly, check field ( reason for reject 'ABGRU') in your orders.
Try this code
loop at gt_final_update into gs_final_update.
clear gs_header_inx.
gs_header_inx-updateflag = 'U'.
clear gs_items.
gs_items-itm_number = gs_final_update-posnr.
gs_items-plant = gs_final_update-werks.
gs_items-reason_rej = '02'.
append gs_items to gt_items.
clear gs_itemsx.
gs_itemsx-itm_number = gs_final_update-posnr.
gs_itemsx-updateflag = 'U'.
gs_itemsx-reason_rej = 'X'.
gs_itemsx-plant = 'X'.
append gs_itemsx to gt_itemsx.
at end of vbeln.
call function 'BAPI_SALESORDER_CHANGE'
exporting
salesdocument = gs_final_update-vbeln
order_header_inx = gs_header_inx
tables
return = gt_return
order_item_in = gt_items
order_item_inx = gt_itemsx.
extensionin = gt_extension.
endat.
endloop.
Thanks.
2009 May 28 3:19 AM
Thanks all of you. i checked with an SO without greyed out row and am able to change.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |