‎2010 Jan 29 6:57 AM
Hi All,
When we try to change the Sales Order using BAPI_SALESORDER_CHANGE, the return table is throwing an error called "Enter Document Number'.
We have validate all the entered parameters. I believe all values are correct.. Still facing this strange error...
Can anyone help me out...???
The code is used as folows.
*---Get Sales Order number, GL_ACCOUNT and sequential number.
SELECT SINGLE VBELN FROM VBAK
INTO V_SO_VBELN
WHERE BSTNK EQ V_PO_EBELN.
*---Get the Document type, Sales Org, Distribution chan and Division.
SELECT SINGLE AUART VKORG VTWEG SPART
FROM VBAK
INTO (V_AUART,V_VKORG,V_VTWEG,V_SPART)
WHERE VBELN EQ V_SO_VBELN.
K_HEADER_CH-COLLECT_NO = V_SO_VBELN.
K_HEADER_CH-SALES_ORG = V_VKORG. "To be decided
K_HEADER_CH-DISTR_CHAN = V_VTWEG. "C_30
K_HEADER_CH-DIVISION = V_SPART. "To be decided
*---Fill Sales Order header box details.
K_HEADER_CH_INX-COLLECT_NO = C_X.
K_HEADER_CH_INX-SALES_ORG = C_X.
K_HEADER_CH_INX-DISTR_CHAN = C_X.
K_HEADER_CH_INX-DIVISION = C_X.
K_HEADER_CH_INX-UPDATEFLAG = C_U. "U
*---Fill Item details based on Purchase Order Items.
LOOP AT I_VBAP.
*---Get condition number.
CLEAR:V_KNUMV,V_KBETR, V_WAERS.
SELECT SINGLE KNUMV FROM EKKO INTO V_KNUMV WHERE EBELN = V_PO_EBELN.
IF SY-SUBRC EQ 0.
*---Get the Condition value from Purchanse order.
SELECT SINGLE KBETR WAERS INTO (V_KBETR, V_WAERS)
FROM KONV
WHERE KNUMV = V_KNUMV
AND KPOSN = I_VBAP-POSNR.
IF SY-SUBRC NE 0.
CLEAR :V_KBETR, V_WAERS.
ENDIF.
ENDIF.
*---Fill the Fields: Sales and Distribution Document Item
I_ITEMS-ITM_NUMBER = I_VBAP-POSNR.
I_ITEMS-MATERIAL = I_VBAP-MATNR.
I_ITEMS-PLANT = C_H003. "H003
I_ITEMS-TARGET_QTY = I_VBAP-KWMENG.
I_ITEMS-PROFIT_CTR = I_VBAP-PRCTR.
APPEND I_ITEMS.
CLEAR I_ITEMSEdited by: Pavan Sanganal on Jan 29, 2010 12:33 PM
‎2010 Jan 29 7:11 AM
I_ITEM_INX-ITM_NUMBER = I_VBAP-POSNR.
I_ITEM_INX-MATERIAL = C_X.
I_ITEM_INX-PLANT = C_X.
I_ITEM_INX-TARGET_QTY = C_X.
I_ITEM_INX-PROFIT_CTR = C_X.
I_ITEM_INX-UPDATEFLAG = I_VBAP-UPDKZ.
APPEND I_ITEM_INX.
CLEAR I_ITEM_INX.
I_SCHEDULES-ITM_NUMBER = I_VBAP-POSNR.
I_SCHEDULES-SCHED_LINE = C_0001. "0001.
I_SCHEDULES-REQ_QTY = I_VBAP-KWMENG.
APPEND I_SCHEDULES.
CLEAR I_SCHEDULES.
*---Fill Checkbox List for Maintaining Sales Document Schedule Line.
I_SCHEDULES_INX-ITM_NUMBER = I_VBAP-POSNR.
I_SCHEDULES_INX-SCHED_LINE = C_0001.
I_SCHEDULES_INX-REQ_QTY = C_X.
I_SCHEDULES_INX-UPDATEFLAG = I_VBAP-UPDKZ.
APPEND I_SCHEDULES_INX.
CLEAR I_SCHEDULES_INX.
I_ORDER_CONDITIONS_IN-ITM_NUMBER = I_VBAP-POSNR.
I_ORDER_CONDITIONS_IN-COND_TYPE = C_ZPR0.
I_ORDER_CONDITIONS_IN-COND_VALUE = V_KBETR * C_DEC9. "Make the 2 decimals
I_ORDER_CONDITIONS_IN-CURRENCY = V_WAERS.
* I_ORDER_CONDITIONS_IN-CURRENCY_2 = V_WAERS.
APPEND I_ORDER_CONDITIONS_IN.
CLEAR I_ORDER_CONDITIONS_IN.
*---Fill the Communication Fields for Maintaining Conditions in the Order.
I_ORDER_COND_IN_INX-ITM_NUMBER = I_VBAP-POSNR.
I_ORDER_COND_IN_INX-COND_ST_NO = C_010.
I_ORDER_COND_IN_INX-COND_COUNT = C_01.
I_ORDER_COND_IN_INX-COND_TYPE = C_ZPR0.
I_ORDER_COND_IN_INX-COND_VALUE = C_X.
I_ORDER_COND_IN_INX-CURRENCY = C_X.
I_ORDER_COND_IN_INX-UPDATEFLAG = I_VBAP-UPDKZ.
APPEND I_ORDER_COND_IN_INX .
CLEAR I_ORDER_COND_IN_INX.
ENDLOOP.
‎2010 Jan 29 7:11 AM
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = V_SO_VBELN
ORDER_HEADER_IN = K_HEADER_CH
ORDER_HEADER_INX = K_HEADER_CH_INX
TABLES
RETURN = I_RETURN
ORDER_ITEM_IN = I_ITEMS
ORDER_ITEM_INX = I_ITEM_INX
SCHEDULE_LINES = I_SCHEDULES
SCHEDULE_LINESX = I_SCHEDULES_INX
CONDITIONS_IN = I_ORDER_CONDITIONS_IN
CONDITIONS_INX = I_ORDER_COND_IN_INX.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = '2'
IMPORTING
RETURN = K_RETURN.
ENDIF.
ENDIF.
ENDIF.
‎2010 Jan 29 7:18 AM
Hi,
Try to debug the BAPI_SALESORDER_CHANGE. In the BAPI return table u ll get the message class. Go to se91 enter the message class and display. Select ur message and do where used list on the message. U ll get the exact location.
regards,
Pavan.
‎2010 Jan 29 7:31 AM
‎2010 May 19 9:45 AM
‎2013 Jun 05 4:22 AM
‎2014 Feb 27 6:53 PM