To delete sales order using BAPI_SALESORDER_CHANGE
HI ,
I am using BAPI_SALESORDER_CHANGE to delete a bulk of order lines for an order.But the issue is...the entries are deleted in VBEP and VBUP tables for all the order lines where in VBAP only few order lines are deleted.This is happening repeatedly.
I am passing data like this...
CLEAR: l_vbap_inx.
l_vbap_inx-itm_number = t_vbap-posnr. " will have value
l_vbap_inx-updateflag = 'D'.
APPEND l_vbap_inx.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = i_vbeln "will have order number
order_header_inx = l_vbak_inx " will be paased with values 'U'
order_header_in = header "will not hold any value
simulation = i_simulate "space
TABLES
return = l_return
order_item_in = l_vbap "bulk of order lines with 'D' flag
order_item_inx = l_vbap_inx
extensionin = l_vbap_ext.
can you please suggest on this......
Thanks in advance.
HI ,
Can any one of you please suggest me to amend the below given code which is used to delete bulk of order lines from VBAP table.presently it is deleting first few order lines from VBAP and all order lines from VBEP and VBUP tables.when i execute the same program for second time first left out order lines are getting deleted again.So..can any one please check the below code and suggest me something on this.
REFRESH: l_return, l_vbap, l_vbap_inx, l_vbap_ext.
IF xorder_delete = 'X'.
l_vbak_inx-updateflag = 'D'.
Even though all the order lines are to be deleted, the delete complete
order flag says don't delete the header data
IF i_cleanup = space.
l_vbak_inx-updateflag = 'U'.
PERFORM validate_line_count TABLES l_vbap_ext "iw150709
USING i_vbeln. "iw150709
ENDIF.
ELSE.
l_vbak_inx-updateflag = 'U'.
PERFORM validate_line_count TABLES l_vbap_ext "iw150709
USING i_vbeln. "iw150709
ENDIF.
LOOP AT t_vbap WHERE delete = 'X'.
CLEAR: l_vbap.
l_vbap-itm_number = t_vbap-posnr.
APPEND l_vbap.
CLEAR: l_vbap_inx.
l_vbap_inx-itm_number = t_vbap-posnr.
l_vbap_inx-updateflag = 'D'.
APPEND l_vbap_inx.
CLEAR: l_vbap_ext, l_extension_vbapx.
l_vbap_ext-structure = 'BAPE_VBAPX'.
l_extension_vbapx-vbeln = i_vbeln.
l_extension_vbapx-posnr = t_vbap-posnr.
l_extension_vbapx-zzco_reason = 'X'.
l_vbap_ext+30 = l_extension_vbapx.
APPEND l_vbap_ext.
CLEAR: l_vbap_ext, l_extension_vbap.
l_vbap_ext-structure = 'BAPE_VBAP'.
l_extension_vbap-vbeln = i_vbeln.
l_extension_vbap-posnr = t_vbap-posnr.
l_extension_vbap-zzco_reason = i_reason.
l_vbap_ext+30 = l_extension_vbap.
APPEND l_vbap_ext.
ENDLOOP.
Only call BAPI if NOT in test mode.
IF i_simulate = space.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = i_vbeln
order_header_inx = l_vbak_inx
order_header_in = header
simulation = i_simulate
TABLES
return = l_return
order_item_in = l_vbap
order_item_inx = l_vbap_inx
extensionin = l_vbap_ext.
ENDIF.
LOOP AT l_return WHERE type = 'E' OR type = 'A'.
MOVE-CORRESPONDING l_return TO t_messages.
t_messages-field = 'VBELN'.
APPEND t_messages.
ENDLOOP.
No ERRORs
IF sy-subrc <> 0.
IF i_simulate = space.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
IMPORTING
return = l_return.
Edited by: manj1325 on Apr 9, 2010 8:19 AM
Similar Messages
-
Delete Sales order through BAPI_SALESORDER_CHANGE
Hoi folks,..
Can we delete the entire Sales order using BAPI_SALESORDER_CHANGE. If yes, pls let me know the process?
ThxHI,
You can try to pass 'D' in the update flag of the header Structure.
ie.. ORDER_HEADER_INX-UPDATEFLAG = 'D'
and SALESDOCUMENT = 'The SO# to be deleted'.
Hope this helps.
Gary -
Update ship-to partner in sales order using BAPI_SALESORDER_CHANGE
Dear all,
We are trying to update the ship-to partner in a sales order using BAPI_SALESORDER_CHANGE. This is working correctly for most of our orders, so we do fill the BAPI correctly. However for some of our orders on item level a different payer is specified than on header level. However in that case the BAPI will not update the ship-to partner, but given an error message VPD 034 u2018The document must contain the same credit control areas for all payersu2019. Debugging already learned that actually the message is given not because of different credit control areas, but due to the fact that the payers and therefore the credit customers are different (although in the same credit control areas). For this reason we can not update the ship-to party of a large number of our sales orders with this BAPI. Actually we have 2 questions:
· Has somebody experienced the same issue and did you manage to solve it somehow, so the BAPI could be used for this purpose of updating partner data?
· Do you know other ways of updating the partners or partner address of an existing sales order in the background?
Thanks in advance for your assistance.
Regards,
Satish.It was caused by standard SAP.
-
Change sales order using BAPI_SALESORDER_CHANGE
Hi i want to add a new line item to the existing sales order using BAPI_SALESORDER_CHANGE
but when i am trying it is giving
'Schedule line 0001 for item 000020 does not exist ' error..
please help me..*********I wanted to add an new line item.***.. this is my code..********
LOOP AT gt_input3 INTO st_input3.
*Finding Max No of line Items
IF fl_set IS INITIAL.
READ TABLE gt_vbap INTO st_vbap WITH KEY vbeln = st_input3-vbeln.
IF sy-subrc EQ 0.
lv_posnr = st_vbap-posnr.
fl_set = 'X'.
ENDIF.
ENDIF.
*Populate Item details
lv_posnr = lv_posnr + 10.
lv_vbeln = st_input3-vbeln.
lv_order_header_inx-updateflag = 'U'.
st_order_item_in-itm_number = lv_posnr.
st_order_item_in-material = st_input3-matnr.
st_order_item_in-target_qty = st_input3-imv_qty.
st_order_item_in-plant = st_input3-werks.
st_order_item_in-store_loc = st_input3-lgort.
st_order_item_in-store_loc = st_input3-lgort.
APPEND st_order_item_in TO lt_order_item_in.
*Populate item updation Details
st_order_item_inx-itm_number = lv_posnr.
st_order_item_inx-updateflag = 'U'.
st_order_item_inx-material = 'X'.
st_order_item_inx-plant = 'X'.
st_order_item_inx-store_loc = 'X'.
st_order_item_inx-target_qty = 'X'.
APPEND st_order_item_inx TO lt_order_item_inx.
*Populate the Schedule Lines
st_schedule_lines-itm_number = lv_posnr.
st_schedule_lines-sched_line = '0001'.
st_schedule_lines-req_qty = st_input3-imv_qty.
APPEND st_schedule_lines TO lt_schedule_lines.
*Populate the update details of schedule lines
st_schedule_linesx-itm_number = lv_posnr.
st_schedule_linesx-sched_line = '0001'.
st_schedule_linesx-req_qty = 'X'.
st_schedule_linesx-updateflag = 'U'.
APPEND st_schedule_linesx TO lt_schedule_linesx.
AT END OF vbeln.
*Call BAPI Sales order change
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = lv_vbeln
order_header_inx = lv_order_header_inx
TABLES
return = lt_return
order_item_in = lt_order_item_in
order_item_inx = lt_order_item_inx
schedule_lines = lt_schedule_lines
schedule_linesx = lt_schedule_linesx.
*Save Sales Order
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CLEAR lv_posnr.
READ TABLE lt_return INTO st_return WITH KEY type = 'E'.
st_ipfile_err3-message = st_return-message.
*Error Log
LOOP AT gt_temp3 INTO st_temp3.
IF st_ipfile_err3-message IS NOT INITIAL.
MOVE st_temp3-record TO st_ipfile_err3-record.
IF fl_set1 IS INITIAL.
APPEND st_temp_err TO gt_ipfile_err3.
fl_set1 = 'X'.
ENDIF.
APPEND st_ipfile_err3 TO gt_ipfile_err3.
ELSE.
APPEND st_temp3 TO gt_audit3.
ENDIF.
CLEAR : st_temp3,
st_temp_err,
st_ipfile_err3,
fl_set.
ENDLOOP.
REFRESH : gt_zrman, -
Remove Reason For Rejection From Sales Order Using BAPI_SALESORDER_CHANGE
Hi
I have a sales order and would like to remove the rejection reason.
I am trying to use BAPI_SALESORDER_CHANGE with the following code:
(0000xxxxxxx is my material #. i just removed the actual #).
MOVE: '0000050106' TO SALESDOCUMENT.
MOVE: 'U' TO T_HEADER_INX-UPDATEFLAG.
MOVE: 30 to t_order_item_in-ITM_NUMBER,
' ' to t_order_item_in-REASON_REJ,
'0000000000xxxxxxxx' to t_order_item_in-material.
APPEND t_order_item_in.
MOVE: 'U' TO t_order_item_inx-updateflag.
MOVE: 'X' to t_order_item_inx-REASON_REJ,
'X' TO t_order_item_inx-material.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = SALESDOCUMENT
order_header_inx = T_HEADER_INX
tables
RETURN = T_RETURN
ORDER_ITEM_IN = T_ORDER_ITEM_IN
ORDER_ITEM_INX = T_ORDER_ITEM_INX
WAIT UP TO 5 SECONDS.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = t_return
WAIT UP TO 5 SECONDS.
can anybody help?
the BAPI returns success messages saying the item was processed successfully but the reason code is still there.
However, if i pass in any other reason code like 02 or 06, it works!.
thanks.Thanks for your help. =)
I also realized that I forgot to add the SO Item # into the T_ORDER_ITEM_INX-ITM_NUMBER fields.
But now it works. -
Update sales order using BAPI_SALESORDER_CHANGE --- URGENT!!!!
Hello,
<b> I want to update Batch, Pricing date, Header text & Item text using BAPI_SALESORDER_CHANGE.</b>
But i am not able to do it.
i have written a code, but it's still not updating:
PARAMETERS: p_vbeln LIKE vbak-vbeln.
TYPES: BEGIN OF t_return.
INCLUDE STRUCTURE bapiret2.
TYPES: END OF t_return.
TYPES: BEGIN OF t_order_item_in.
INCLUDE STRUCTURE bapisditm.
TYPES: END OF t_order_item_in.
TYPES: BEGIN OF t_order_item_inx.
INCLUDE STRUCTURE bapisditmx.
TYPES: END OF t_order_item_inx.
TYPES: BEGIN OF t_schedule_lines.
INCLUDE STRUCTURE bapischdl.
TYPES: END OF t_schedule_lines.
TYPES: BEGIN OF t_schedule_linesx.
INCLUDE STRUCTURE bapischdlx.
TYPES: END OF t_schedule_linesx.
TYPES: BEGIN OF t_order_text.
INCLUDE STRUCTURE bapisdtext.
TYPES: END OF t_order_text.
DATA: l_vbeln LIKE bapivbeln-vbeln,
i_order_header_inx LIKE bapisdh1x,
i_order_header_in LIKE bapisdh1,
i_return TYPE TABLE OF t_return,
i_order_item_in TYPE TABLE OF t_order_item_in,
wa_order_item_in LIKE LINE OF i_order_item_in,
i_order_item_inx TYPE TABLE OF t_order_item_inx,
wa_order_item_inx LIKE LINE OF i_order_item_inx,
i_schedule_lines TYPE TABLE OF t_schedule_lines,
wa_schedule_lines LIKE LINE OF i_schedule_lines,
i_schedule_linesx TYPE TABLE OF t_schedule_linesx,
wa_schedule_linesx LIKE LINE OF i_schedule_linesx,
i_order_text TYPE TABLE OF t_order_text,
wa_order_text LIKE LINE OF i_order_text,
w_return LIKE bapiret2,
l_date TYPE char10.
CLEAR l_vbeln.
l_vbeln = p_vbeln.
UPDATE REJECTION REASON IN SALES ORDER *
*WRITE sy-datum TO l_date.
i_order_header_inx-updateflag = 'U'.
REFRESH i_order_item_in.
CLEAR wa_order_item_in.
wa_order_item_in-itm_number = '000010'.
wa_order_item_in-batch = '2007450027'.
wa_order_item_in-price_date = sy-datum.
wa_order_item_in-reason_rej = '00'.
APPEND wa_order_item_in TO i_order_item_in.
REFRESH i_order_item_inx.
CLEAR wa_order_item_inx.
wa_order_item_inx-itm_number = '000010'.
wa_order_item_inx-updateflag = 'U'.
wa_order_item_in-batch = 'X'.
wa_order_item_in-price_date = 'X'.
wa_order_item_inx-reason_rej = 'X'.
APPEND wa_order_item_inx TO i_order_item_inx.
*wa_order_text-doc_number = l_vbeln.
**wa_order_text-TDOBJECT = 'EHSWA_MAN'.
***wa_order_text-text_id = '0001'.
**wa_order_text-TDTEXT = 'Header Texts'.
*wa_order_text-text_line = 'SYNGENTA HEADER'.
***wa_order_text-function = 'U'.
wa_order_text-doc_number = l_vbeln.
wa_order_text-itm_number = '000010'.
*wa_order_text-TDOBJECT = 'EBAN'.
wa_order_text-text_id = '0001'.
*wa_order_text-TDTEXT = 'Item text'.
wa_order_text-text_line = 'SYNGENTA TEXT'.
wa_order_text-function = '004'.
APPEND wa_order_text TO i_order_text.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = l_vbeln
ORDER_HEADER_IN =
order_header_inx = i_order_header_inx
SIMULATION =
BEHAVE_WHEN_ERROR = ' '
INT_NUMBER_ASSIGNMENT = ' '
LOGIC_SWITCH =
NO_STATUS_BUF_INIT = ' '
TABLES
return = i_return
order_item_in = i_order_item_in
order_item_inx = i_order_item_inx
PARTNERS =
PARTNERCHANGES =
PARTNERADDRESSES =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
schedule_lines = i_schedule_lines
schedule_linesx = i_schedule_linesx
order_text = i_order_text
ORDER_KEYS =
CONDITIONS_IN =
CONDITIONS_INX =
EXTENSIONIN =
IF sy-subrc = 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'
IMPORTING
return = w_return.
ENDIF.
Please help out.
Please send the code of it.
Thanks in advance...START-OF-SELECTION.
Get Blocked Orders
PERFORM sub_select_orders.
PERFORM order_reason_for_reject.
END-OF-SELECTION.
Display output
PERFORM sub_display_output.
*& Form sub_select_orders
text
FORM sub_select_orders .
SELECT a~vbeln
a~erdat
a~erzet
a~auart
b~posnr
FROM ( vbak as A
INNER JOIN VBAP AS B
on Bvbeln = AVBELN )
INTO TABLE i_order_data
WHERE a~vbeln IN s_ordno AND
A~auart IN s_auart AND
A~erdat IN s_orddt AND
A~vkorg IN s_vkorg AND
A~vtweg IN s_vtweg AND
A~spart IN s_spart .
IF sy-subrc NE 0.
MESSAGE i001.
No data selected
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " sub_get_blocked_orders
*& Form order_reason_for_reject
text
--> p1 text
<-- p2 text
FORM order_reason_for_reject .
LOOP AT i_order_data INTO w_order_data.
w_output-vbeln = w_order_data-vbeln.
w_ordhdrx-updateflag = c_update.
Update Order Reason for rejection .
w_orditem-ITM_NUMBER = w_order_data-posnr.
w_orditem-reason_rej = p_abgru.
append w_orditem to i_orditem .
w_orditemx-ITM_NUMBER = w_order_data-posnr.
w_orditemx-updateflag = c_update.
w_orditemx-reason_rej = 'X'.
append w_orditemx to i_orditemx .
At end of vbeln .
w_output-vbeln = w_order_data-vbeln .
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = w_order_data-vbeln
order_header_in = w_ordhdr
order_header_inx = w_ordhdrx
TABLES
ORDER_ITEM_IN = i_orditem
ORDER_ITEM_INX = i_orditemx
return = i_bapiret.
READ TABLE i_bapiret WITH KEY type = c_error
TRANSPORTING NO FIELDS.
IF sy-subrc EQ '0'.
move 'Order Reason for rejection update Failed' to
w_output-message .
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = c_check
IMPORTING
return = i_return.
move 'Order Reason for rejection update successful' to
w_output-message .
endif .
refresh :i_orditemx , i_orditem .
Endat .
APPEND w_output TO i_output.
CLEAR w_output.
endloop .
ENDFORM. " order_reason_for_reject -
Problem while changing Sales order using 'BAPI_SALESORDER_CHANGE'
Hi all,
Below is my code to update delivery block value:
FORM call_bapi_salesorder_change .
DATA: iv_bapi_view LIKE order_view.
DATA: gt_sales_doc TYPE STANDARD TABLE OF sales_key, " Document Numbers to Be Selected
gt_items TYPE STANDARD TABLE OF bapisdit. " Order Item Data for Document Numbers
*************************************************************8
DATA:order_headers_out LIKE bapisdhd OCCURS 0 WITH HEADER LINE.
DATA:order_header_inx LIKE bapisdh1x.
DATA: lv_salesdocument LIKE bapivbeln-vbeln.
data: lv_matnr(10) type c.
DATA:
gt_schdule TYPE STANDARD TABLE OF bapischdl, " for gl date & load date
gt_schdulex TYPE STANDARD TABLE OF bapischdlx, " for partner role and partner function.
gt_return TYPE STANDARD TABLE OF bapiret2,
gt_itemin TYPE STANDARD TABLE OF bapisditm,
gt_iteminx TYPE STANDARD TABLE OF bapisditmx ,
gt_bapisdh1 TYPE STANDARD TABLE OF bapisdh1.
DATA:gs_head_bapi TYPE bapisdh1x,
gs_schdule TYPE bapischdl,
gs_schdulex TYPE bapischdlx,
gs_return TYPE bapiret2,
gs_itemin TYPE bapisditm,
gs_iteminx TYPE bapisditmx,
gs_bapisdh1 TYPE bapisdh1.
CLEAR : gt_schdule,gt_schdulex,gs_return.
REFRESH gt_return.
gs_head_bapi-updateflag = 'U'.
SORT gt_final BY vbeln.
CLEAR gs_vbep.
REFRESH gt_vbep[].
CLEAR gs_final.
LOOP AT gt_final1 INTO gs_final.
gs_itemin-itm_number = gs_final-posnr.
*move gs_final-matnr to lv_matnr."qx94162
gs_itemin-material = gs_final-matnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = gs_final-matnr
IMPORTING
output = gs_final-matnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_matnr
IMPORTING
output = lv_matnr.
gs_itemin-material = lv_matnr.
gs_itemin-material = gs_final-matnr.
gs_iteminx-itm_number = gs_final-posnr.
gs_iteminx-updateflag = 'U'.""changed to I
gs_iteminx-material = 'X'.
" gs_schdule-req_dlv_bl = gs_final-lifsp. " Delivery block
gs_schdule-itm_number = gs_final-posnr.
gs_schdulex-itm_number = gs_final-posnr.
gs_schdule-sched_line = '0001'.
gs_schdulex-sched_line = '0001'.
MOVE gs_final-lifsp to gs_schdule-req_dlv_bl.
gs_schdule-req_dlv_bl = gs_final-lifsp.
gs_schdulex-req_dlv_bl = 'X'. " Delivery block
gs_schdulex-updateflag = 'U'.
gs_bapisdh1-sales_org = gs_final-vkorg.
APPEND gs_schdule TO gt_schdule.
APPEND gs_schdulex TO gt_schdulex.
APPEND gs_itemin TO gt_itemin.
APPEND gs_iteminx TO gt_iteminx.
Append gs_BAPISDH1 to gt_BAPISDH1.
lv_salesdocument = gs_final-vbeln.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = lv_salesdocument
ORDER_HEADER_IN = gs_BAPISDH1
order_header_inx = gs_head_bapi
SIMULATION =
BEHAVE_WHEN_ERROR = ' '
INT_NUMBER_ASSIGNMENT = ' '
LOGIC_SWITCH =
NO_STATUS_BUF_INIT = ' '
TABLES
return = gt_return
order_item_in = gt_itemin
order_item_inx = gt_iteminx
PARTNERS =
PARTNERCHANGES =
PARTNERADDRESSES =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
schedule_lines = gt_schdule
schedule_linesx = gt_schdulex
ORDER_TEXT =
ORDER_KEYS =
CONDITIONS_IN =
CONDITIONS_INX =
EXTENSIONIN =
NFMETALLITMS =
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
REFRESH: gt_schdule, gt_schdulex, gt_itemin , gt_iteminx.
LOOP AT gt_return INTO gs_return.
WRITE / gs_return-message .
ENDLOOP .
ENDLOOP.
ENDFORM. " CALL_BAPI_SALESORDER_CHANGE
When I am using material value as 18342 using CONVERSION_EXIT_ALPHA_OUTPUT:
ORDER_HEADER_IN has been processed successfully
Material is not defined for sales org.A101, distr.chan.00, language DE
Error in ITEM_IN 000030
SCHEDULE_IN has been processed successfully
The sales document is not yet complete: Edit data
Sales document 5010000715 was not changed
and when I am using CONVERSION_EXIT_ALPHA_INPUT (000000000000018342)or while debuging when I am changing value to 0018342 :
I am getting below dump:
Runtime Errors DATA_LENGTH_0
Exception CX_SY_RANGE_OUT_OF_BOUNDS
Date and Time 21.10.2010 07:22:17
Information on where terminated
Termination occurred in the ABAP program "SAPLVBAK" - in
"MAP_VBAP_TO_BAPISDIT".
The main program was "RS_TESTFRAME_CALL ".
In the source code you have the termination point in line 168
of the (Include) program "LVBAK001".
The termination is caused because exception "CX_SY_RANGE_OUT_OF_BOUNDS"
occurred in
procedure "MAP_VBAP_TO_BAPISDIT" "(FORM)", but it was neither handled local
nor declared
in the RAISING clause of its signature.
The procedure is in program "SAPLVBAK "; its source code begins in line
99 of the (Include program "LVBAK001 ".
The same dump I am getting while executing this above BAPI from SE37 tcode with the same test data.
but I am able to change it though Va02 tcode.
Edited by: Arora26 on Oct 21, 2010 7:58 AMHi,
have you searched for OSS notes? The note 1137897 looks like related to your problem. It mentions different BAPI but I assume that both BAPI reuse same routines and therefore it might solve your problem as well.
Cheers -
When trying to change a Sales order using BAPI_SALESORDER_CHANGE, I am getting the following error.
SD document 15704 is not in the database or has been archived.
Please let me know what could be the problemyou have the error message, which is self explanatory.
SD document 15704 is not in the database or has been archived.
if you knat that the sales document indeed exists, and the message is deceiving, then check why are yopu gettign that. maybe you didn;t provide the order# will leading zeros, or you are tryingto change an order immediately after creating, in which case DB commit might not be completed. -
Deleting Sales Order Details using BAPI_SALESORDER_CHANGE And Reinserting
Hi All,
I need to <b>change a Sales Order</b> in such a way that I would <b>delete all the existing Line Items</b> of that SO And <b>then reinsert new Line Items</b> as generally is the practice of saving a document.(Update Header-Delete Old Item Entries-Reinsert New Present Entries).
I coded a small test program in ABAP using the <b>BAPI_SALESORDER_GETLIST And BAPI_SALESORDER_CHANGE</b>.
In order to affect the Qty I have to update the Schedule Parameter also of the BAPI_SALESORDER_CHANGE Function.But this causes a new entry in VBEP.
eg:
<b>Before BAPI Calls</b>
SO-Number:9001
Header:9001,etc......
Detail:ItemNo=10,Material=xyz,TargetQty=100,etc..
Scedule:ItemNo=10,Scheduleline=1,Req_Qty=100,etc...
I coded the program such that
1.I <b>Get the List of Items</b> using BAPI_SALESORDER_GETLIST.
2.Call the <b>BAPI_SALESORDER_CHANGE</b> filling appropraite values in Parameters <b>with UpdateFlag = 'D'</b>
3.<b>Insert new values</b> in OrderItems And Schedule Parameters
say:
Detail:ItemNo=10,Material=xyz,TargetQty=25,etc..
Scedule:ItemNo=10,Scheduleline=1,Req_Qty=25,etc...
4.<b>Call the BAPI_SALESORDER_CHANGE</b> filling appropraite values in Parameters <b>with UpdateFlag = 'I'</b>
<b>The output now becomes.</b>Header:9001,etc......
Detail:ItemNo=10,Material=xyz,TargetQty=100,etc..
Scedule:ItemNo=10,Scheduleline=1,Req_Qty=100,etc...
ItemNo=10,Scheduleline=2,Req_Qty=25,etc...
Now After Commit when I see my <b>SO it shows me a qty of
125</b>.
I am attaching the code for your analysis.
Thanx in advance.
*& Report ZSM_CHANGESALESORDER *
REPORT ZSM_CHANGESALESORDER .
DATA:
For Calling the GetList BAPI Function
CUSTOMER_NUMBER LIKE BAPI1007-CUSTOMER,
SALES_ORGANIZATION LIKE BAPIORDERS-SALES_ORG,
IT_SALES_ORDERS LIKE TABLE OF BAPIORDERS,
WA_SALES_ORDERS LIKE LINE OF IT_SALES_ORDERS,
IT_RETURN LIKE TABLE OF BAPIRETURN,
WA_RETURN LIKE LINE OF IT_RETURN.
For Calling the ChangeFromData BAPI Function
DATA:
SALESDOCUMENT LIKE BAPIVBELN-VBELN,
WA_ORDER_HEADER_IN LIKE BAPISDH1,
WA_ORDER_HEADER_INX LIKE BAPISDH1X,
IT_ORDER_ITEM_IN LIKE TABLE OF BAPISDITM ,
WA_ORDER_ITEM_IN LIKE LINE OF IT_ORDER_ITEM_IN,
IT_ORDER_ITEM_INX LIKE TABLE OF BAPISDITMX ,
WA_ORDER_ITEM_INX LIKE LINE OF IT_ORDER_ITEM_INX,
IT_SCHEDULE_LINES LIKE TABLE OF BAPISCHDL ,
WA_SCHEDULE_LINES LIKE LINE OF IT_SCHEDULE_LINES,
IT_SCHEDULE_LINESX LIKE TABLE OF BAPISCHDLX ,
WA_SCHEDULE_LINESX LIKE LINE OF IT_SCHEDULE_LINESX,
IT_RETURN_CHG LIKE TABLE OF BAPIRET2,
WA_RETURN_CHG LIKE LINE OF IT_RETURN_CHG.
DATA:
IT_RETURN_CT LIKE BAPIRET2.
PARAMETERS:
P_SO LIKE VBAK-VBELN,
P_CUSTNO LIKE BAPI1007-CUSTOMER,
P_SORG LIKE BAPIORDERS-SALES_ORG.
START-OF-SELECTION.
SALESDOCUMENT = P_SO.
CUSTOMER_NUMBER = P_CUSTNO.
SALES_ORGANIZATION = P_SORG.
Retrieve the Existing Sales Order details for that Sales Order.
PERFORM GETREQSODETAILS.
Delete the Existing Sales Order details from that Sales Order.
PERFORM DELETEOLDSODETAILS.
Insert New details for that Sales Order.
PERFORM ADDNEWSODETAILS.
END-OF-SELECTION.
PERFORM COMMITTRANS.
*& Form GetReqSODetails
FORM GETREQSODETAILS .
CALL FUNCTION 'BAPI_SALESORDER_GETLIST'
EXPORTING
CUSTOMER_NUMBER = CUSTOMER_NUMBER
SALES_ORGANIZATION = SALES_ORGANIZATION
IMPORTING
RETURN = WA_RETURN
TABLES
SALES_ORDERS = IT_SALES_ORDERS.
*delete the Sales Order Details of Sales Orders other than the req.One
IF NOT IT_SALES_ORDERS[] IS INITIAL.
SORT IT_SALES_ORDERS BY SD_DOC.
LOOP AT IT_SALES_ORDERS INTO WA_SALES_ORDERS.
IF WA_SALES_ORDERS-SD_DOC NE SALESDOCUMENT.
DELETE IT_SALES_ORDERS.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. " GetReqSODetails
*& Form deleteOldSODetails
FORM DELETEOLDSODETAILS .
DATA: IRECCOUNT TYPE I.
IRECCOUNT = 1.
*Clear all the Inernal Tables And Work Areas
*and Update the SO Header Index
PERFORM CLEARDATA.
PERFORM SOHEADERINDEX.
LOOP AT IT_SALES_ORDERS INTO WA_SALES_ORDERS.
*Fill the Order Details Index Internal Table
PERFORM FILLSODELETEDTLS_INDEX_PARAM
USING WA_SALES_ORDERS-ITM_NUMBER 'D'.
*Fill the Order Scedule Index Internal Table
PERFORM FILLSODELETESCH_INDEX_PARAM
USING WA_SALES_ORDERS-ITM_NUMBER IRECCOUNT 'D'.
ENDLOOP.
*call the Sales Order Change Fumction to delete the Existing Data
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = SALESDOCUMENT
ORDER_HEADER_INX = WA_ORDER_HEADER_INX
TABLES
RETURN = IT_RETURN_CHG
ORDER_ITEM_INX = IT_ORDER_ITEM_INX
SCHEDULE_LINESX = IT_SCHEDULE_LINESX.
ENDFORM. " deleteOldSODetails
*& Form SOHeaderIndex
FORM SOHEADERINDEX .
WA_ORDER_HEADER_INX-UPDATEFLAG = 'U'.
ENDFORM. " SOHeaderIndex
*& Form FillSODeleteDtls_Index_param
FORM FILLSODELETEDTLS_INDEX_PARAM
USING VALUE(P_ITM_NUMBER) VALUE(P_FLAG).
WA_ORDER_ITEM_INX-ITM_NUMBER = P_ITM_NUMBER.
WA_ORDER_ITEM_INX-UPDATEFLAG = P_FLAG.
APPEND WA_ORDER_ITEM_INX TO IT_ORDER_ITEM_INX.
ENDFORM. " FillSODeleteDtls_Index_param
*& Form FILLSODELETEsch_Index_PARAM
FORM FILLSODELETESCH_INDEX_PARAM
USING VALUE(P_ITM_NUMBER) VALUE(P_RECCOUNT) VALUE(P_FLAG).
WA_SCHEDULE_LINESX-ITM_NUMBER = P_ITM_NUMBER.
WA_SCHEDULE_LINESX-SCHED_LINE = P_RECCOUNT.
WA_SCHEDULE_LINESX-UPDATEFLAG = P_FLAG.
APPEND WA_SCHEDULE_LINESX TO IT_SCHEDULE_LINESX.
ENDFORM. " FILLSODELETEsch_Index_PARAM
*& Form addnewSODETAILS
FORM ADDNEWSODETAILS .
DATA: IRECCOUNT TYPE I, ITEMNO TYPE I.
IRECCOUNT = 1.
*Clear all the Inernal Tables And Work Areas
*and Update the SO Header Index
PERFORM CLEARDATA.
PERFORM SOHEADERINDEX.
WHILE IRECCOUNT <= 1.
ITEMNO = IRECCOUNT * 10.
*Fill the New Order Details in the Internal Table
PERFORM FILLSODTLDATA USING ITEMNO 'TEST FG' 37 .
*Fill the Order Details Index Internal Table
PERFORM FILLSODELETEDTLS_INDEX_PARAM USING ITEMNO 'I'.
*Fill the New Schedule Details in the Internal Table
PERFORM FILLSOSCHDATA USING ITEMNO IRECCOUNT 37 .
*Fill the Order Scedule Index Internal Table
PERFORM FILLSODELETESCH_INDEX_PARAM
USING ITEMNO IRECCOUNT 'I'.
IRECCOUNT = IRECCOUNT + 1.
ENDWHILE.
*call the Sales Order Change Fumction to Insert New Data
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = SALESDOCUMENT
ORDER_HEADER_INX = WA_ORDER_HEADER_INX
TABLES
RETURN = IT_RETURN_CHG
ORDER_ITEM_IN = IT_ORDER_ITEM_IN
ORDER_ITEM_INX = IT_ORDER_ITEM_INX
SCHEDULE_LINES = IT_SCHEDULE_LINES
SCHEDULE_LINESX = IT_SCHEDULE_LINESX.
ENDFORM. " addnewSODETAILS
*& Form clearData
FORM CLEARDATA .
CLEAR WA_ORDER_HEADER_INX.
CLEAR WA_ORDER_ITEM_INX.
REFRESH IT_ORDER_ITEM_INX.
CLEAR WA_SCHEDULE_LINESX.
REFRESH IT_SCHEDULE_LINESX.
CLEAR WA_RETURN.
REFRESH IT_RETURN.
CLEAR WA_ORDER_ITEM_IN.
REFRESH IT_ORDER_ITEM_IN.
CLEAR WA_SCHEDULE_LINES.
REFRESH IT_SCHEDULE_LINES.
ENDFORM. " clearData
*& Form FILLSODTLDATA
FORM FILLSODTLDATA USING VALUE(P_ITEMNO) VALUE(P_MATERIAL)
VALUE(P_TARGET_QTY) .
WA_ORDER_ITEM_IN-ITM_NUMBER = P_ITEMNO.
WA_ORDER_ITEM_IN-MATERIAL = P_MATERIAL.
WA_ORDER_ITEM_IN-TARGET_QTY = P_TARGET_QTY.
APPEND WA_ORDER_ITEM_IN TO IT_ORDER_ITEM_IN.
ENDFORM. " FILLSODTLDATA
*& Form FILLSOschDATA
FORM FILLSOSCHDATA USING VALUE(P_ITEMNO)
VALUE(P_RECCOUNT)
VALUE(P_REQ_QTY) .
WA_SCHEDULE_LINES-ITM_NUMBER = P_ITEMNO.
WA_SCHEDULE_LINES-SCHED_LINE = P_RECCOUNT.
WA_SCHEDULE_LINES-REQ_QTY = P_REQ_QTY.
APPEND WA_SCHEDULE_LINES TO IT_SCHEDULE_LINES.
ENDFORM. " FILLSOschDATA
*& Form committrans
FORM COMMITTRANS .
DATA:SUCCESSFLAG(1).
LOOP AT IT_RETURN_CHG INTO WA_RETURN_CHG.
IF WA_RETURN_CHG-TYPE = 'S'
AND WA_RETURN_CHG-ID = 'V1'
AND WA_RETURN_CHG-NUMBER = 311
AND SUCCESSFLAG IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = IT_RETURN_CT.
SUCCESSFLAG = 'X'.
ENDIF.
ENDLOOP.
IF SUCCESSFLAG IS INITIAL.
WRITE: 'SORRY SOME ERROR'.
ELSE.
WRITE: 'SUCCESSFUL'.
ENDIF.
ENDFORM. " committransThanx wolfgang,
I needed that info.
As I had mentioned in the earlier posts, I want to delete the old Sales Order Item Details,
Schedule Details,Basic Price data And Reinsert data in the same.
I am giving u the algo that I have used.
1.<b>Get the SalesOrder Details</b> for a particular Sales Order using BAPI_SALESORDER_GETLIST(para:customer & sales Org and then deleting unwanted SO data).
2.<b>Delete</b> the Sales Order <b>Item Details,Schedule Details</b> using BAPI_SALESORDER_CHANGE.
3.<b>Commit</b> Transaction(<b>If I dont use this commit Error comes in Step No.7 while Commiting</b>)
using BAPI_TRANSACTION_COMMIT.
4.Check <b>Return Table</b> of both BAPI_SALESORDER_CHANGE and BAPI_TRANSACTION_COMMIT.
5.if Step No.4 is <b>Not okay</b> <b>then Rollback</b>(BAPI_TRANSACTION_TRANSACTIN) <b>and Exit</b> <b>else move to step 6</b>.
6.<b>Add New</b> Sales Order <b>Item Details,Schedule Details, Basic Price</b> using BAPI_SALESORDER_CHANGE.
7.<b>Commit Transaction</b> using BAPI_TRANSACTION_COMMIT.
8.<b>Check Return</b> Log of both BAPI_SALESORDER_CHANGE and BAPI_TRANSACTION_COMMIT.
9.if Step No.9 is okay then Exit else Rollback(BAPI_TRANSACTION_TRANSACTIN) and move to step 10.
10.Add Old Sales Order Item Details,Schedule Details, Basic Price from Data available in Internal
table(Filled in step.1 ) using BAPI_SALESORDER_CHANGE.
11.Commit Transaction using BAPI_TRANSACTION_COMMIT.
This <b>works fine in 1 server in which I get the message of Incomplete Data,etc...when I make a Sales Order from va01</b>.
But in another server where I dont this message,I get <b>error in step 7 or 11 as per the flow</b>.
The return structure of BAPI_TRANSACTION_COMMIT contains error with Message 'Updating was not possible'. Also the message 'Updation was terminated' cms frm the SAP server.
What could be the reason?
Thanx in advance -
Change of open sales order : using BAPI
Hi
this is ravi
can any one help me on this topic
1)change of open sales order using BAPI .With appropriate reason( like header level reason)
thanks & regardshI,
chk this FM BAPI_SALESORDER_PROXY_UPLOAD how the FM BAPI_SALESORDER_CHANGE was used
Check this code,
REPORT Z_SALES_ORDER_CHANGE
NO STANDARD PAGE HEADING
LINE-SIZE 132
LINE-COUNT 65(0)
MESSAGE-ID ZZ.
TABLES: VBAP.
DATA:
V_FILEIN(90) TYPE C,
V_RECIN TYPE I,
V_RECVBAP TYPE I,
V_RECORDER TYPE I,
V_VBELN LIKE VBAP-VBELN,
ORDERHEADERINX LIKE BAPISDH1X.
DATA: BEGIN OF I_ORDERS OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
BRGEW(18) TYPE C,
VOLUM(18) TYPE C,
END OF I_ORDERS.
DATA: BEGIN OF I_OUTPUT OCCURS 0,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
GEWEI LIKE VBAP-GEWEI,
BRGEW LIKE VBAP-BRGEW,
VOLUM LIKE VBAP-VOLUM,
CKWGT TYPE C,
CKVOL TYPE C,
END OF I_OUTPUT.
DATA: BEGIN OF ORDERITEMIN OCCURS 0.
INCLUDE STRUCTURE BAPISDITM.
DATA: END OF ORDERITEMIN.
DATA: BEGIN OF ORDERITEMINX OCCURS 0.
INCLUDE STRUCTURE BAPISDITMX.
DATA: END OF ORDERITEMINX.
DATA: BEGIN OF RETURN OCCURS 0.
INCLUDE STRUCTURE BAPIRET2.
DATA: END OF RETURN.
DATA: BEGIN OF BAPIRETURN OCCURS 0.
INCLUDE STRUCTURE BAPIRET2.
DATA: END OF BAPIRETURN.
PARAMETERS:
P_PATH(45) TYPE C DEFAULT '/usr/users/ftpsapom/' LOWER CASE,
P_FNAME(32) TYPE C DEFAULT '/sweetjo.txt' LOWER CASE.
START-OF-SELECTION.
CONCATENATE PATH AND FILE NAME INTO ONE VARIABLE
CONCATENATE P_PATH P_FNAME INTO V_FILEIN.
OPEN DATASET
IF V_FILEIN IS INITIAL.
MESSAGE E002 WITH 'FILE' V_FILEIN 'DOES NOT CONTAIN ANY DATA!'.
ELSE.
OPEN DATASET V_FILEIN
FOR INPUT
IN TEXT MODE.
IF SY-SUBRC = 0.
READ DATASET
DO.
READ DATASET V_FILEIN INTO I_ORDERS.
IF SY-SUBRC = 0.
APPEND I_ORDERS.
ELSE.
EXIT.
ENDIF.
ENDDO.
CLOSE DATASET
CLOSE DATASET V_FILEIN.
IF SY-SUBRC <> 0.
MESSAGE E002 WITH 'ERROR - CLOSING' V_FILEIN.
ENDIF.
ELSE.
MESSAGE E002 WITH 'ERROR - COULD NOT OPEN' V_FILEIN.
ENDIF.
ENDIF.
SORT AND REMOVE DUPLICATES FROM I_ORDERS
SORT I_ORDERS BY VBELN POSNR.
DELETE ADJACENT DUPLICATES FROM I_ORDERS.
POPULATE I_OUTPUT
LOOP AT I_ORDERS.
SHIFT I_ORDERS-POSNR LEFT DELETING LEADING SPACE.
CONCATENATE '0' I_ORDERS-POSNR INTO I_ORDERS-POSNR.
SELECT SINGLE BRGEW VOLUM
FROM VBAP
INTO (VBAP-BRGEW, VBAP-VOLUM)
WHERE VBELN = I_ORDERS-VBELN
AND POSNR = I_ORDERS-POSNR.
IF SY-SUBRC = 0.
IF VBAP-BRGEW = 0.
I_OUTPUT-CKWGT = 'X'.
ENDIF.
IF VBAP-VOLUM = 0.
I_OUTPUT-CKVOL = 'X'.
ENDIF.
I_OUTPUT-VBELN = I_ORDERS-VBELN.
I_OUTPUT-POSNR = I_ORDERS-POSNR.
I_OUTPUT-GEWEI = 'ST'.
I_OUTPUT-BRGEW = I_ORDERS-BRGEW.
I_OUTPUT-VOLUM = I_ORDERS-VOLUM.
APPEND I_OUTPUT.
CLEAR: I_OUTPUT.
ENDIF.
V_RECIN = V_RECIN + 1.
ENDLOOP.
POPULATE BAPI DATA AND RUN BAPI
CLEAR: ORDERHEADERINX, ORDERITEMIN, ORDERITEMINX,
RETURN, BAPIRETURN.
REFRESH: ORDERITEMIN, ORDERITEMINX, RETURN, BAPIRETURN.
ORDERHEADERINX-UPDATEFLAG = 'U'.
LOOP AT I_OUTPUT WHERE CKWGT = 'X' OR CKVOL = 'X'.
V_RECVBAP = V_RECVBAP + 1.
IF I_OUTPUT-VBELN <> V_VBELN AND SY-TABIX <> 1.
V_RECORDER = V_RECORDER + 1.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = V_VBELN
ORDER_HEADER_INX = ORDERHEADERINX
TABLES
RETURN = RETURN
ORDER_ITEM_IN = ORDERITEMIN
ORDER_ITEM_INX = ORDERITEMINX.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = BAPIRETURN.
WRITE OUT RETURN
LOOP AT RETURN.
WRITE: / RETURN.
ENDLOOP.
WRITE: / BAPIRETURN.
SKIP.
CLEAR: ORDERITEMIN, ORDERITEMINX,
RETURN, BAPIRETURN.
REFRESH: ORDERITEMIN, ORDERITEMINX, RETURN, BAPIRETURN.
ENDIF.
ORDERITEMIN-ITM_NUMBER = I_OUTPUT-POSNR.
ORDERITEMIN-UNTOF_WGHT = I_OUTPUT-GEWEI.
IF NOT I_OUTPUT-CKWGT IS INITIAL.
ORDERITEMIN-GROSS_WGHT = I_OUTPUT-BRGEW.
ORDERITEMINX-GROSS_WGHT = 'X'.
ENDIF.
IF NOT I_OUTPUT-CKVOL IS INITIAL.
ORDERITEMIN-VOLUME = I_OUTPUT-VOLUM.
ORDERITEMINX-VOLUME = 'X'.
ENDIF.
APPEND ORDERITEMIN.
ORDERITEMINX-ITM_NUMBER = I_OUTPUT-POSNR.
ORDERITEMINX-UNTOF_WGHT = 'X'.
ORDERITEMINX-UPDATEFLAG = 'U'.
APPEND ORDERITEMINX.
V_VBELN = I_OUTPUT-VBELN.
ENDLOOP.
RUN BAPI ON LAST ORDER
IF NOT ORDERITEMIN IS INITIAL.
V_RECORDER = V_RECORDER + 1.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = V_VBELN
ORDER_HEADER_INX = ORDERHEADERINX
TABLES
RETURN = RETURN
ORDER_ITEM_IN = ORDERITEMIN
ORDER_ITEM_INX = ORDERITEMINX.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN = BAPIRETURN.
WRITE OUT RETURN
LOOP AT RETURN.
WRITE: / RETURN.
ENDLOOP.
WRITE: / BAPIRETURN.
SKIP.
ENDIF.
WRITE OUT RECORD COUNT FROM FILE
WRITE: / 'RECORD COUNT FROM FILE ', V_RECIN.
SKIP.
WRITE OUT RECORD COUNT FROM FILE
WRITE: / 'RECORD COUNT OF LINES TO CHANGE ', V_RECVBAP.
SKIP.
WRITE OUT RECORD COUNT FROM FILE
WRITE: / 'RECORD COUNT OF ORDERS TO CHANGE ', V_RECORDER.
SKIP.
TOP OF PAGE
TOP-OF-PAGE.
WRITE:/1(5) TEXT-H01, 6(8) SY-DATUM MM/DD/YY,
100(8) TEXT-H02, 126(8) SY-PAGNO.
WRITE:/1(5) TEXT-H03, 6(8) SY-UZEIT USING EDIT MASK '__:__:__',
20(77) TEXT-H04,
100(8) TEXT-H05, 108(25) SY-REPID.
WRITE:/1(6) TEXT-H06, 8(12) SY-UNAME,
20(4) TEXT-H07, 25(32) SY-HOST,
100(13) TEXT-H08, 121(8) SY-SYSID,
129 '/', 130(3) SY-MANDT.
ULINE.
SKIP
<b>Reward points</b>
Regards -
Can I delete my sales order using a BAPI. I know it is possible using the screen transaction.
But I need to do it using a BAPI ?
Thanks in advance.use 'BAPI_SALESORDER_DELETE'
and
Set UPDATEFLAG in ORDER_HEADER_INX.
Possible UPDATEFLAGS:
U = change
D = delete
I = add
PARAMETERS: p_vbeln TYPE vbap-vbeln OBLIGATORY.
DATA: i_hdrx TYPE bapisdh1x.
i_hdrx-updateflag = 'D'.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = p_vbeln
order_header_inx = i_hdrx
TABLES
return = i_ret.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
LOOP AT i_ret.
WRITE / i_ret-message.
ENDLOOP.
After dont forget to use bapi
Use BAPI_TRANSACTION_COMMIT after you use BAPI_SALESORDER_CHANGE.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'. -
Delete Sales order and Purchase Order
Hello Experts,
Scenario 1: I would like to delete a Purchase Order using PORDCH03 idoc. I tried passing 'X', 'Y' and also 'D' to the deletion indicator at the header level, but the purchase order is not getting deleted. Can you let me know how can I delete an purchase order using IDOC.
Scenario 2: I would also like to delete a Sales order using ORDER05? Is this possible? I mean deleting Sales order. I do not want to update the reason for rejection, but I want to completly get rid of the sales order from the database.
Appreciate your help.
Thanks,
Suresh GantiHello Rob,
I am able to set the deletion indicator for the purchase order and it works fine. But for Sales orders we are using ORDERS05 and want to delete the Sales order. I was able to delete the line item, but not the whole order.
As you know we can delete the whole order using the BAPI.
sd_head_x_ls-updateflag = 'D'.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = vbeln_lv
order_header_inx = sd_head_x_ls.
I want to achieve the same functionality using ORDERS05 IDOC.
Thanks,
Suresh Ganti -
Report on deleted sales orders ( va02)
hi,
i got one requirement to write a program to display the list of deleted sales orders (through VA02 Tcode).
to my knowledge when a sales order is deleted through VA02 the order will be deleted from the database itself and will be deleted from all the SAP tables.
if that is correct, is there any possibility that we can create a Ztable and update the data before deletion or any other solution for the above requirement?
thanks in advance,
Rajani yelurihi rajani,
u will get deleted data from using tables CDHDR,CDPOS,CDRED and function module ' CHANGEDOCUMENT_READ'.
i am sending u some sample code, i hope it will helps u
DATA: it_editpos LIKE cdred OCCURS 0 WITH HEADER LINE,
"Change documents, display structure
it_editpos1 LIKE cdred OCCURS 0 WITH HEADER LINE,
"Change documents, display structure
x_editpos1 LIKE cdred, "Change documents, display structure
x_editpos LIKE it_editpos,
"Change documents,display structure
*-----Calling FM to populate the structure 'EDITPOS'
CLEAR it_editpos.
CALL FUNCTION 'CHANGEDOCUMENT_READ'
EXPORTING
objectclass = ' '
TABLES
editpos = it_editpos
EXCEPTIONS
no_position_found = 1
wrong_access_to_archive = 2
time_zone_conversion_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR: x_editpos,
it_editpos1.
LOOP AT it_editpos
INTO x_editpos
WHERE tcode = 'ME21N' OR "Here u have 2 pass 'VA02'
tcode = 'ME22N' OR
tcode = 'ME23N'.
APPEND x_editpos TO it_editpos1.
CLEAR x_editpos.
ENDLOOP.
now it_edipos1 has all CHANGENR numbers, so now u have to fetch data from F_NEW and F_OLD Fields
i hope this will helps u
Regards,
prasad -
Reg:Deleting sales orders in bulk
Hi Gurus,
Can anybody through some light on the below mentioned queries.I faced this in one of my interviews .
1.How to delete sales orders in bulk ?
2.How to print invoices in bulk ?
Thanking you in advance.
With Regards,
Sash......Dear sash
1) To delete sale orders in bulk (subject to no subsequent documents), either you can use LSMW or BDC
2) To print invoices in bulk, two options are there. One is foreground and another one is background
- To schedule foreground, run T.Code VF31
- To schedule background, run T.Code VF06 where you can see a tab [Job started on] If you fix a date and time here, that time, invoice will be printed out in mass
thanks
G. Lakshmipathi -
Line item data is not saving while creating a Sales order using Interactive
Hi all,
I am creating a sales order Using Interactive forms. In the form i am having Header data and line item data.I had created two structures one for Header data and one for Line item data. For entering the LINE ITEM DATA i had created a Dynamic table with Buttons ADD ROW and DELETE ROW.
User will Add the Row or Delete the Row based on the requirement.
My issue is When ever the user clicks the SUBMIT button after entering the header data and 3 line items data , Sales order has been created with only first line item and the remaining two line items are not created.
My Interactive form is like below
HEADER DATA
DOC_TYPE
SALES_ORG
DIST_CHN
DIVISION
PURCH_NO
PARTN_ROLE
PART_NO
LINE ITEM DATA
ITEM_NO MATERIAL PLANT QTY COND_TYPE COND_VALUE
ADD ROW
DELETE ROW
SUBMIT
My code for the method ONACTIONCLICK is like below
method ONACTIONCLICK .
data:
Node_Adobe type ref to If_Wd_Context_Node,
Node_Zsaleheader type ref to If_Wd_Context_Node,
Elem_Zsaleheader type ref to If_Wd_Context_Element,
Stru_Zsaleheader type If_Main=>Element_Zsaleheader,
Node_Zsaleitem type ref to If_Wd_Context_Node,
Elem_Zsaleitem type ref to If_Wd_Context_Element,
Stru_Zsaleitem type If_Main=>Element_Zsaleitem.
data: header_data type BAPISDHEAD.
data: item_wa type BAPIITEMIN.
data: item_data type table of BAPIITEMIN.
data: partner_wa type BAPIPARTNR.
data: partner_data type table of BAPIPARTNR.
data: sales_order type BAPIVBELN-VBELN.
data: Errorlog type BAPIRETURN1.
navigate from <CONTEXT> to <ADOBE> via lead selection
Node_Adobe = wd_Context->get_Child_Node( Name = IF_MAIN=>wdctx_Adobe ).
navigate from <ADOBE> to <Zsaleheader> via lead selection
Node_Zsaleheader = Node_Adobe->get_Child_Node( Name = IF_MAIN=>wdctx_Zsaleheader ).
Node_Zsaleitem = Node_Adobe->get_Child_Node( Name = IF_MAIN=>wdctx_Zsaleitem ).
get element via lead selection
Elem_Zsaleheader = Node_Zsaleheader->get_Element( ).
Elem_Zsaleitem = Node_Zsaleitem->get_Element( ).
get all declared attributes
Elem_Zsaleheader->get_Static_Attributes(
importing
Static_Attributes = Stru_Zsaleheader ).
header_data-DOC_TYPE = Stru_Zsaleheader-DOC_TYPE.
header_data-SALES_ORG = Stru_Zsaleheader-SALES_ORG.
header_data-DISTR_CHAN = Stru_Zsaleheader-DISTR_CHAN.
header_data-DIVISION = Stru_Zsaleheader-DIVISION.
header_data-PURCH_NO = Stru_Zsaleheader-PURCH_NO.
partner_wa-PARTN_ROLE = Stru_Zsaleheader-PARTN_ROLE.
partner_wa-PARTN_NUMB = Stru_Zsaleheader-PARTN_NUMB.
append partner_wa to partner_data.
Elem_Zsaleitem->get_Static_Attributes(
importing
Static_Attributes = Stru_Zsaleitem ).
item_wa-ITM_NUMBER = Stru_Zsaleitem-ITM_NUMBER.
item_wa-MATERIAL = Stru_Zsaleitem-MATERIAL.
item_wa-PLANT = Stru_Zsaleitem-PLANT.
item_wa-REQ_QTY = Stru_Zsaleitem-REQ_QTY.
item_wa-COND_TYPE = Stru_Zsaleitem-COND_TYPE.
item_wa-COND_VALUE = Stru_Zsaleitem-COND_VALUE.
append item_wa to item_data.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT1'
EXPORTING
ORDER_HEADER_IN = header_data
WITHOUT_COMMIT = ' '
CONVERT_PARVW_AUART = ' '
IMPORTING
SALESDOCUMENT = sales_order
SOLD_TO_PARTY =
SHIP_TO_PARTY =
BILLING_PARTY =
RETURN = errorlog
TABLES
ORDER_ITEMS_IN = item_data
ORDER_PARTNERS = partner_data
ORDER_ITEMS_OUT =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CCARD =
ORDER_CFGS_BLOB =
ORDER_SCHEDULE_EX =
endmethod.
PLEASE SUGGEST ME IF ANY CODE CHANGE IS REQUIRED
Thanks in advance
AjayHi,
The item data is not read because, the dynamically added rows should also reflect back to the Web Dynpro context. When the user clicks on Add Row, use the Onsubmit event to add a empty line to internal table and then bind it to the context. And if the user removes a row, remove a row from internal table and bind it back to the context.
You may refer this article.
http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/802f0ed1-a17a-2c10-7db4-d515a5b047ed
Regards,
Runal
Maybe you are looking for
-
Phone stuck on connect to itunes screen after update attempt
Hi, hope someone can help me. I connected my iPhone to my computer to transfer my photos from the phone to the PC. I have automatic syncing turned off. When I connected, I was prompted to update the iTunes version, which I did. It's now version 9. Th
-
How increase external disk size used for an existing file system, Solaris10
Configuration: Server: Sun T5220 S/O: Solaris 10 5/08 s10s_u5wos_10 SPARC Storage: EMC AX4-5 EMC PowerPath: PowerPath Version 5.2 I have the following scenario: In AX4-5 storage array, I created two LUNs into RAID Group 10, with Raid Type1/0: LUN 101
-
Safari Errors When Uploading/Download
Whenever I download/upload a file the whole DrWatson thing pops up and Safari exits. I've tried completely reinstalling Safari, but no use. Any ideas? Only started happening recently (not even a week ago). On a side note, I noticed Safari hangs a lot
-
How to dowload photos from my ipad in facebook?
Just new in ipad world. Would like to dowload photos from my ipad to facebook. How do I do that?
-
I wish to uninstal lMozilla in Control Panel and it does not go
How do I uninstall Mozilla. It will not uninstall when try to remove it in Control Panel