2007 Feb 09 12:47 PM
Hello Gurus,
I have called 'BAPI_SALESORDER_CREATEFROMDAT2' n a FM and trying to create a Sales Order. I have passed the header (auart, vkorg, vtweg, spart) and partner (nmbr and role). I passed the parameters to BAPI but in the return messages it says 'Sales Document was not changed V4 E'.
I hope I am clear, if not please ask...
Suggestions would be rewarded....
Regards
Leo
2007 Feb 09 2:57 PM
DATA : HEADER TYPE BAPISDHD1 OCCURS 0 WITH HEADER LINE,
<b>HEADERX TYPE BAPISDHD1X ,</b>
PARTNER TYPE BAPIPARNR OCCURS 0 WITH HEADER LINE,
ITEMS TYPE BAPISDITM OCCURS 0 WITH HEADER LINE,
ITEMSX TYPE BAPISDITMX OCCURS 0 WITH HEADER LINE,
SAL_NUM LIKE BAPIVBELN-VBELN,
REC_NUM TYPE BAPIVBELN-VBELN,
RET TYPE BAPIRET2 OCCURS 0 WITH HEADER LINE.
HEADER-DOC_TYPE = 'TA'.
HEADER-SALES_ORG = '0001'.
HEADER-DIVISION = '01'.
HEADER-DISTR_CHAN = '01'.
APPEND HEADER.
HEADERX-UPDATEFLAG = 'I'.
PARTNER-ITM_NUMBER = '0000000020'.
PARTNER-PARTN_ROLE = 'WE'.
ITEMS-MATERIAL = '000000000000000013'.
APPEND ITEMS.
ITEMSX-UPDATEFLAG = 'I'.
SAL_NUM = '0000001234'.
*CALL FUNCTION 'CONVERSION_EXIT_PARVW_OUTPUT'
EXPORTING
input = PARTNER-PARTN_ROLE
IMPORTING
*
OUTPUT = PARTNER-PARTN_ROLE .
APPEND PARTNER.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = SAL_NUM
order_header_in = HEADER
ORDER_HEADER_INX = HEADERX
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = REC_NUM
tables
RETURN = RET
ORDER_ITEMS_IN = ITEMS
ORDER_ITEMS_INX = ITEMSX
order_partners = PARTNER.
ORDER_SCHEDULES_IN =
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =
IF NOT REC_NUM IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN = RETURN2
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
ENDIF
.
WRITE:/ REC_NUM.
WRITE:/ RET-MESSAGE, RET-ID, RET-TYPE.
copy this code & execute it if u get any error tell me the error.
DATA : HEADER TYPE BAPISDHD1 OCCURS 0 WITH HEADER LINE,
<b>HEADERX TYPE BAPISDHD1X ,</b>
PARTNER TYPE BAPIPARNR OCCURS 0 WITH HEADER LINE,
ITEMS TYPE BAPISDITM OCCURS 0 WITH HEADER LINE,
ITEMSX TYPE BAPISDITMX OCCURS 0 WITH HEADER LINE,
SAL_NUM LIKE BAPIVBELN-VBELN,
REC_NUM TYPE BAPIVBELN-VBELN,
RET TYPE BAPIRET2 OCCURS 0 WITH HEADER LINE.
HEADER-DOC_TYPE = 'TA'.
HEADER-SALES_ORG = '0001'.
HEADER-DIVISION = '01'.
HEADER-DISTR_CHAN = '01'.
APPEND HEADER.
HEADERX-UPDATEFLAG = 'I'.
PARTNER-ITM_NUMBER = '0000000020'.
PARTNER-PARTN_ROLE = 'WE'.
ITEMS-MATERIAL = '000000000000000013'.
APPEND ITEMS.
ITEMSX-UPDATEFLAG = 'I'.
SAL_NUM = '0000001234'.
*CALL FUNCTION 'CONVERSION_EXIT_PARVW_OUTPUT'
EXPORTING
input = PARTNER-PARTN_ROLE
IMPORTING
*
OUTPUT = PARTNER-PARTN_ROLE .
APPEND PARTNER.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = SAL_NUM
order_header_in = HEADER
ORDER_HEADER_INX = HEADERX
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = REC_NUM
tables
RETURN = RET
ORDER_ITEMS_IN = ITEMS
ORDER_ITEMS_INX = ITEMSX
order_partners = PARTNER.
ORDER_SCHEDULES_IN =
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =
IF NOT REC_NUM IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN = RETURN2
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
ENDIF
.
WRITE:/ REC_NUM.
WRITE:/ RET-MESSAGE, RET-ID, RET-TYPE.
copy this code & execute it if u get any error tell me the error.
2007 Feb 09 1:14 PM
Hi Leo,
The BAPI u are using is Obsolete. Try creating Slaes Order using following BAPI:
BAPI_SALESORDER_CREATEFROMDAT2 if you are working on 4.6 or latest version.
Ashven
2007 Feb 09 1:21 PM
Ashven,
I am using that BAPI only, you can check my prev message....it doesnt say any error while calling.. when executed it gives out that message... I am on ECC 5.0
Suggestions would be rewarded...
Regards
Leo
2007 Feb 09 1:41 PM
Hi Leo,
Check out the following codes:
Even I have worked in ECC 5.0.These are the mandatory parametersthat u need to pass to create a Sales Order successfully...
REPORT Z6SKS_HERSHEYS2.
data : order_header_in1 type BAPISDHD1.
data: order_partners1 type BAPIPARNR occurs 0 with header line.
data: ORDER_ITEMS_IN1 type BAPISDITM occurs 0 with header line.
DATA : SALESDOCUMENT1 TYPE BAPIVBELN-VBELN.
DATA : RETURN1 TYPE BAPIRET2 OCCURS 0.
DATA : RETURN2 TYPE BAPIRET2.
order_header_in1-doc_type = 'TA'.
order_header_in1-sales_org = '0001'.
order_header_in1-distr_chan = '01'.
order_header_in1-division = '01'.
ORDER_ITEMS_IN1-material = '000000000000000013'.
append ORDER_ITEMS_IN1.
order_partners1-PARTN_ROLE = 'WE'.
order_partners1-PARTN_NUMB = '0000000017'.
APPEND order_partners1.
Perform call_function.
&----
*& Form call_function
&----
text
----
--> p1 text
<-- p2 text
----
form call_function .
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN =
order_header_in = order_header_in1
ORDER_HEADER_INX =
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = SALESDOCUMENT1
tables
RETURN = RETURN1
ORDER_ITEMS_IN = ORDER_ITEMS_IN1
ORDER_ITEMS_INX =
order_partners = order_partners1
ORDER_SCHEDULES_IN =
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =
.
IF NOT SALESDOCUMENT1 IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN = RETURN2
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
ENDIF.
endform. " call_function
This should help u...
Please reward points if found useful...
2007 Feb 09 2:08 PM
Thanks Susanth and Ashven for your Suggestions...the code is more or less same as what Susanth gave..here the code.. still it gives a message that "Sales Document was not changed V4 E".....
It would be great..if this is resolved .
DATA : HEADER TYPE BAPISDHD1 OCCURS 0 WITH HEADER LINE,
PARTNER TYPE BAPIPARNR OCCURS 0 WITH HEADER LINE,
ITEMS TYPE BAPISDITM OCCURS 0 WITH HEADER LINE,
SAL_NUM LIKE BAPIVBELN-VBELN,
REC_NUM TYPE BAPIVBELN-VBELN,
RET TYPE BAPIRET2 OCCURS 0 WITH HEADER LINE.
HEADER-DOC_TYPE = 'TA'.
HEADER-SALES_ORG = '0001'.
HEADER-DIVISION = '01'.
HEADER-DISTR_CHAN = '01'.
APPEND HEADER.
PARTNER-ITM_NUMBER = '0000000020'.
PARTNER-PARTN_ROLE = 'WE'.
ITEMS-MATERIAL = '000000000000000013'.
APPEND ITEMS.
SAL_NUM = '0000001234'.
*CALL FUNCTION 'CONVERSION_EXIT_PARVW_OUTPUT'
EXPORTING
input = PARTNER-PARTN_ROLE
IMPORTING
*
OUTPUT = PARTNER-PARTN_ROLE .
APPEND PARTNER.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = SAL_NUM
order_header_in = HEADER
ORDER_HEADER_INX =
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = REC_NUM
tables
RETURN = RET
ORDER_ITEMS_IN = ITEMS
ORDER_ITEMS_INX =
order_partners = PARTNER.
ORDER_SCHEDULES_IN =
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =
IF NOT REC_NUM IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN = RETURN2
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
ENDIF
.
WRITE:/ REC_NUM.
WRITE:/ RET-MESSAGE, RET-ID, RET-TYPE.
Any sort of help would be rewarded....
Regards
Leo
2007 Feb 09 2:23 PM
u have to pass the update flag else it wont work.
pass values to this parameter in export.
<b>data headerx type BAPISDHD1X.
headerx-UPDATEFLAG = ' I '.
data itemx type BAPISDITMX OCCURS 0 WITH HEADER LINE.
itemx-UPDATEFLAG = ' I '.</b>
ORDER_HEADER_INX = headerx.
pass values in tables also.
ORDER_ITEMS_INX = itemx.
2007 Feb 09 2:28 PM
Hi Leo,
Why dont u try with some other parameters and check whether u r getting the same error or not....
2007 Feb 09 2:33 PM
Hi Leo,
Could you tell about data you have mentioned is actual data u are passng to bapi. e.g. Item Number are passing 10 cahracter(000000020) or six(000020)? As you have mentioned in your code.
PARTNER-ITM_NUMBER = '0000000020'.
PARTNER-PARTN_ROLE = 'WE'.
Do one thing Write BREAK-POINT before
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' and check weather all the table & structures are gettng populated correctly or not?
The code you have written seems correct.
Ashven
2007 Feb 09 2:41 PM
Hi, I tried that it says the same error ( Sales Document was not changed V4 E) but I want to know is there any diff between....
data : header type BAPISDHD and
data : header type BAPISDHD occurs 0 with header line....coz in your code and susanth code you havent specified the Occurs 0.....
if i remove that it says "header is not an internal table"......
Heres the Code....
DATA : HEADER TYPE BAPISDHD1 OCCURS 0 WITH HEADER LINE,
HEADERX TYPE BAPISDHD1X OCCURS 0 WITH HEADER LINE,
PARTNER TYPE BAPIPARNR OCCURS 0 WITH HEADER LINE,
ITEMS TYPE BAPISDITM OCCURS 0 WITH HEADER LINE,
ITEMSX TYPE BAPISDITMX OCCURS 0 WITH HEADER LINE,
SAL_NUM LIKE BAPIVBELN-VBELN,
REC_NUM TYPE BAPIVBELN-VBELN,
RET TYPE BAPIRET2 OCCURS 0 WITH HEADER LINE.
HEADER-DOC_TYPE = 'TA'.
HEADER-SALES_ORG = '0001'.
HEADER-DIVISION = '01'.
HEADER-DISTR_CHAN = '01'.
APPEND HEADER.
HEADERX-UPDATEFLAG = 'I'.
APPEND HEADERX.
PARTNER-ITM_NUMBER = '0000000020'.
PARTNER-PARTN_ROLE = 'WE'.
ITEMS-MATERIAL = '000000000000000013'.
APPEND ITEMS.
ITEMSX-UPDATEFLAG = 'I'.
APPEND ITEMSX.
SAL_NUM = '0000001234'.
*CALL FUNCTION 'CONVERSION_EXIT_PARVW_OUTPUT'
EXPORTING
input = PARTNER-PARTN_ROLE
IMPORTING
*
OUTPUT = PARTNER-PARTN_ROLE .
APPEND PARTNER.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = SAL_NUM
order_header_in = HEADER
ORDER_HEADER_INX = HEADERX
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = REC_NUM
tables
RETURN = RET
ORDER_ITEMS_IN = ITEMS
ORDER_ITEMS_INX = ITEMSX
order_partners = PARTNER.
ORDER_SCHEDULES_IN =
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =
IF NOT REC_NUM IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN = RETURN2
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
ENDIF
.
WRITE:/ REC_NUM.
WRITE:/ RET-MESSAGE, RET-ID, RET-TYPE.
it will be great if anybody try to resolve....and any sort of suggestions would be highy appreciated...
Thanks n Advance
Leo
2007 Feb 09 2:45 PM
Hey Leo,
<b>I think I have got ur answer...</b>
Please compare my code and urs...The code that i have sent is running fine at my end.When I went through ur code.....I found that u have assigned:
PARTNER-<b>ITM_NUMBER</b> = '0000000020'. instead of field
PARTNER-<b>PARTN_NUMB</b> = '0000000017'.
Your final code should be:
DATA : HEADER TYPE BAPISDHD1." OCCURS 0 WITH HEADER LINE,
DATA: PARTNER TYPE BAPIPARNR OCCURS 0 WITH HEADER LINE,
ITEMS TYPE BAPISDITM OCCURS 0 WITH HEADER LINE,
SAL_NUM LIKE BAPIVBELN-VBELN,
REC_NUM TYPE BAPIVBELN-VBELN,
RET TYPE BAPIRET2 OCCURS 0 WITH HEADER LINE.
HEADER-DOC_TYPE = 'TA'.
HEADER-SALES_ORG = '0001'.
HEADER-DIVISION = '01'.
HEADER-DISTR_CHAN = '01'.
*APPEND HEADER.
PARTNER-PARTN_NUMB = '0000000020'.
PARTNER-PARTN_ROLE = 'WE'.
APPEND PARTNER.
ITEMS-MATERIAL = '000000000000000013'.
APPEND ITEMS.
*CALL FUNCTION 'CONVERSION_EXIT_PARVW_OUTPUT'
EXPORTING
input = PARTNER-PARTN_ROLE
IMPORTING
*
OUTPUT = PARTNER-PARTN_ROLE .
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = SAL_NUM
order_header_in = HEADER
ORDER_HEADER_INX =
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = REC_NUM
tables
RETURN = RET
ORDER_ITEMS_IN = ITEMS
ORDER_ITEMS_INX =
order_partners = PARTNER.
ORDER_SCHEDULES_IN =
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =.
IF NOT REC_NUM IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN = RETURN2
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
ENDIF
.
WRITE:/ REC_NUM.
WRITE:/ RET-MESSAGE, RET-ID, RET-TYPE.
Also note that u were passing an internal table for Header.I have changed it ot Structure...
Please correct and execute it.You should have no problem now..
Please mark useful answers......
Message was edited by:
Susanth Swain
Message was edited by:
Susanth Swain
2007 Feb 09 2:50 PM
Ashven
Its 6 character and that what i debugged and did in my previous post regarding the Header one....coz while i debugged i can see the partners internal table contents but if its for header its not showin up the contents....there what i got a doubt whether to add "occurs 0 with header line...
Regards
Leo
2007 Feb 09 2:52 PM
if u use occurs 0 its an internal table without that its a work area.
instead of ' I ' use 'U' ad update flag & check.
2007 Feb 09 2:52 PM
Leo,
Please check the code I have sent the latest.You should be able to solve by now...
Please mark useful answers....
2007 Feb 09 1:48 PM
Hi,
sorry it was by mistake.
Are u passing Item number also in table ORDER_PARTNERS?
If yes can you paste the code you have written for bapi?
Ashven
2007 Feb 09 2:57 PM
DATA : HEADER TYPE BAPISDHD1 OCCURS 0 WITH HEADER LINE,
<b>HEADERX TYPE BAPISDHD1X ,</b>
PARTNER TYPE BAPIPARNR OCCURS 0 WITH HEADER LINE,
ITEMS TYPE BAPISDITM OCCURS 0 WITH HEADER LINE,
ITEMSX TYPE BAPISDITMX OCCURS 0 WITH HEADER LINE,
SAL_NUM LIKE BAPIVBELN-VBELN,
REC_NUM TYPE BAPIVBELN-VBELN,
RET TYPE BAPIRET2 OCCURS 0 WITH HEADER LINE.
HEADER-DOC_TYPE = 'TA'.
HEADER-SALES_ORG = '0001'.
HEADER-DIVISION = '01'.
HEADER-DISTR_CHAN = '01'.
APPEND HEADER.
HEADERX-UPDATEFLAG = 'I'.
PARTNER-ITM_NUMBER = '0000000020'.
PARTNER-PARTN_ROLE = 'WE'.
ITEMS-MATERIAL = '000000000000000013'.
APPEND ITEMS.
ITEMSX-UPDATEFLAG = 'I'.
SAL_NUM = '0000001234'.
*CALL FUNCTION 'CONVERSION_EXIT_PARVW_OUTPUT'
EXPORTING
input = PARTNER-PARTN_ROLE
IMPORTING
*
OUTPUT = PARTNER-PARTN_ROLE .
APPEND PARTNER.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = SAL_NUM
order_header_in = HEADER
ORDER_HEADER_INX = HEADERX
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = REC_NUM
tables
RETURN = RET
ORDER_ITEMS_IN = ITEMS
ORDER_ITEMS_INX = ITEMSX
order_partners = PARTNER.
ORDER_SCHEDULES_IN =
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =
IF NOT REC_NUM IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN = RETURN2
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
ENDIF
.
WRITE:/ REC_NUM.
WRITE:/ RET-MESSAGE, RET-ID, RET-TYPE.
copy this code & execute it if u get any error tell me the error.
2007 Feb 09 3:11 PM
Kalpa nashri and Sushanth...I have tried both your suggestions......It displays the message from BAPIRET2 " Sales Document cannot be Changed V4 E".....
Kalpa nashri...I have tried both using 'U' and 'I', same error....and
Susanth... I meant POSNR only, the diff is two fields but mandatory ORDER_PARTNERS s there......it gives same error watever i have modified...
How come me creating a Sales Order...giving a message "Sales Document cannot be changed".....
===========================================================
DATA : HEADER TYPE BAPISDHD1,
HEADERX TYPE BAPISDHD1X,
PARTNER TYPE BAPIPARNR OCCURS 0 WITH HEADER LINE,
ITEMS TYPE BAPISDITM OCCURS 0 WITH HEADER LINE,
ITEMSX TYPE BAPISDITMX OCCURS 0 WITH HEADER LINE,
SAL_NUM LIKE BAPIVBELN-VBELN,
REC_NUM TYPE BAPIVBELN-VBELN VALUE IS INITIAL,
RET TYPE BAPIRET2 OCCURS 0 WITH HEADER LINE.
HEADER-DOC_TYPE = 'TA'.
HEADER-SALES_ORG = '0001'.
HEADER-DIVISION = '01'.
HEADER-DISTR_CHAN = '01'.
*APPEND HEADER.
HEADERX-UPDATEFLAG = 'I'.
*APPEND HEADERX
PARTNER-ITM_NUMBER = '000020'.
PARTNER-PARTN_ROLE = 'WE'.
ITEMS-MATERIAL = '000000000000000013'.
APPEND ITEMS.
ITEMSX-UPDATEFLAG = 'I'.
APPEND ITEMSX.
SAL_NUM = '0000001234'.
*CALL FUNCTION 'CONVERSION_EXIT_PARVW_OUTPUT'
EXPORTING
input = PARTNER-PARTN_ROLE
IMPORTING
*
OUTPUT = PARTNER-PARTN_ROLE .
APPEND PARTNER.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = SAL_NUM
order_header_in = HEADER
ORDER_HEADER_INX = HEADERX
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = REC_NUM
tables
RETURN = RET
ORDER_ITEMS_IN = ITEMS
ORDER_ITEMS_INX = ITEMSX
order_partners = PARTNER.
ORDER_SCHEDULES_IN =
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =
IF NOT REC_NUM IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN = RETURN2
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
ENDIF
.
WRITE:/ REC_NUM.
WRITE:/ RET-MESSAGE, RET-ID, RET-TYPE.
===========================================================
Regards
Leo
2007 Feb 09 3:20 PM
Hey why dont u pass the posnr also along with kunnr(PARTN_NUMB) and parvw(PARTN_ROLE)....
This is working fine at my end..
2007 Feb 09 3:21 PM
check whether number 0000001234 already exists in VA02 transaction
2007 Feb 09 3:26 PM
Hi Leo,
I tried your code by changing the code at following place.
HEADERX-UPDATEFLAG = 'X'.
ITEMSX-UPDATEFLAG = 'X'.
Now it is throwing One more error "Please enter sold-to party or ship-to part".
So you need to pass these fields also because in documention of BAPI it mentined that these fields are MANDATORY. Pass these fields.
If you pass above mentioned entries you problem will be solved.
And you can delcare HEADER & HEADERX without occurs 0 becuse these are strucutes in bapi & you need pass these as structurs not as tables. It was showing you error because you were writing:
APPEND HEADERX
APPEND HEADER
no need of writing append if you are declaring these as wothout occurs 0.
NOTE: TAKE CARE OF THE FOLLOWING:
1. Mandatory entries:
ORDER_HEADER_IN : DOC_TYPE Sales document type
SALES_ORG Sales organization
DISTR_CHAN Distribution channel
DIVISION Division
ORDER_PARTNERS..: PARTN_ROLE Partner role, SP sold-to party
PARTN_NUMB Customer number
ORDER_ITEMS_IN..: MATERIAL Material number
2. Ship-to party:
If no ship-to party is entered, use the following: Ship-to party =
sold-to party.
3. Commit control:
The BAPI does not have a database commit. This means that the relevant application must leave the commit, in order that can be carried out on on the database. The BAPI BAPI_TRANSACTION_COMMIT is available for this.
4. German key words:
The following key words must be entered in German, independantly of
the logon language:
DOC_TYPE Sales document type, for example: TA for standard order
PARTN_ROLE Partner role, for example: WE for ship-to party
Further information
You can find further information in the OSS. The note 93091 contains general information on the BAPIs in SD.
Ashvender
2007 Feb 09 3:53 PM
Ashvendar, I have checked b4 calling BAPI and I believe if u code I or U instead of X with STP it shld not come...
Sushant, I have tried that still it says the same....
Kalpa nashri...i checked it said not n the dbase or archived....can any one do me a favour....you might have done this....can u copy the code and run it n ur system.....and pls chk wat error it says....that would be gr8...
===========================================================
DATA : HEADER TYPE BAPISDHD1,
HEADERX TYPE BAPISDHD1X,
PARTNER TYPE BAPIPARNR OCCURS 0 WITH HEADER LINE,
ITEMS TYPE BAPISDITM OCCURS 0 WITH HEADER LINE,
ITEMSX TYPE BAPISDITMX OCCURS 0 WITH HEADER LINE,
SAL_NUM LIKE BAPIVBELN-VBELN,
REC_NUM TYPE BAPIVBELN-VBELN VALUE IS INITIAL,
RET TYPE BAPIRET2 OCCURS 0 WITH HEADER LINE.
HEADER-DOC_TYPE = 'TA'.
HEADER-SALES_ORG = '0001'.
HEADER-DIVISION = '01'.
HEADER-DISTR_CHAN = '01'.
*APPEND HEADER.
HEADERX-UPDATEFLAG = 'I'.
*APPEND HEADERX
PARTNER-ITM_NUMBER = '000020'.
PARTNER-PARTN_ROLE = 'WE'.
PARTNER-PARTN_NUMB = '0000003512'.
APPEND PARTNER.
ITEMS-MATERIAL = '000000000000000013'.
APPEND ITEMS.
ITEMSX-UPDATEFLAG = 'U'.
APPEND ITEMSX.
SAL_NUM = '0000001111'.
*CALL FUNCTION 'CONVERSION_EXIT_PARVW_OUTPUT'
EXPORTING
input = PARTNER-PARTN_ROLE
IMPORTING
*
OUTPUT = PARTNER-PARTN_ROLE .
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = SAL_NUM
order_header_in = HEADER
ORDER_HEADER_INX = HEADERX
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = REC_NUM
tables
RETURN = RET
ORDER_ITEMS_IN = ITEMS
ORDER_ITEMS_INX = ITEMSX
order_partners = PARTNER.
ORDER_SCHEDULES_IN =
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =
IF NOT REC_NUM IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN = RETURN2
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
ENDIF
.
WRITE:/ REC_NUM.
WRITE:/ RET-MESSAGE, RET-ID, RET-TYPE.
===========================================================
Regards
Leo
2007 Feb 09 4:54 PM
Hi Leo,
Finally your problem has been solved. Use the following code: & replace the below mentioined data accoring to flat file data:
The error was following were not appended in the internal tables.
ITEMS-ITM_NUMBER = '000010'.
ITEMSX-ITM_NUMBER = '000010'.
-
ITEMS-ITM_NUMBER = '000010'.
ITEMS-MATERIAL = '000000000040000010'.
APPEND ITEMS.
ITEMSX-ITM_NUMBER = '000010'.
ITEMSX-UPDATEFLAG = 'U'.
APPEND ITEMSX.
Ashvender.
2007 Feb 09 5:19 PM
Ashvender I didnt get you.....Is this u want me to do....If the code works at your end can u post it plss....
=======================================================
DATA : HEADER TYPE BAPISDHD1,
HEADERX TYPE BAPISDHD1X,
PARTNER TYPE BAPIPARNR OCCURS 0 WITH HEADER LINE,
ITEMS TYPE BAPISDITM OCCURS 0 WITH HEADER LINE,
ITEMSX TYPE BAPISDITMX OCCURS 0 WITH HEADER LINE,
SAL_NUM LIKE BAPIVBELN-VBELN,
REC_NUM TYPE BAPIVBELN-VBELN VALUE IS INITIAL,
RET TYPE BAPIRET2 OCCURS 0 WITH HEADER LINE.
HEADER-DOC_TYPE = 'TA'.
HEADER-SALES_ORG = '0001'.
HEADER-DIVISION = '01'.
HEADER-DISTR_CHAN = '01'.
*APPEND HEADER.
HEADERX-UPDATEFLAG = 'I'.
*APPEND HEADERX
PARTNER-ITM_NUMBER = '000020'.
PARTNER-PARTN_ROLE = 'WE'.
PARTNER-PARTN_NUMB = '0000003512'.
APPEND PARTNER.
<b>ITEMS-ITM_NUMBER = '000020'.
ITEMS-MATERIAL = '000000000000000013'.
APPEND ITEMS.
ITEMSX-ITM_NUMBER = '000020'.
ITEMSX-UPDATEFLAG = 'U'.
APPEND ITEMSX.</b>
SAL_NUM = '0000001111'.
*CALL FUNCTION 'CONVERSION_EXIT_PARVW_OUTPUT'
EXPORTING
input = PARTNER-PARTN_ROLE
IMPORTING
*
OUTPUT = PARTNER-PARTN_ROLE .
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
SALESDOCUMENTIN = SAL_NUM
order_header_in = HEADER
ORDER_HEADER_INX = HEADERX
SENDER =
BINARY_RELATIONSHIPTYPE =
INT_NUMBER_ASSIGNMENT =
BEHAVE_WHEN_ERROR =
LOGIC_SWITCH =
TESTRUN =
CONVERT = ' '
IMPORTING
SALESDOCUMENT = REC_NUM
tables
RETURN = RET
ORDER_ITEMS_IN = ITEMS
ORDER_ITEMS_INX = ITEMSX
order_partners = PARTNER.
ORDER_SCHEDULES_IN =
ORDER_SCHEDULES_INX =
ORDER_CONDITIONS_IN =
ORDER_CONDITIONS_INX =
ORDER_CFGS_REF =
ORDER_CFGS_INST =
ORDER_CFGS_PART_OF =
ORDER_CFGS_VALUE =
ORDER_CFGS_BLOB =
ORDER_CFGS_VK =
ORDER_CFGS_REFINST =
ORDER_CCARD =
ORDER_TEXT =
ORDER_KEYS =
EXTENSIONIN =
PARTNERADDRESSES =
IF NOT REC_NUM IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
IMPORTING
RETURN = RETURN2
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
ENDIF
.
WRITE:/ REC_NUM.
WRITE:/ RET-MESSAGE, RET-ID, RET-TYPE.
===========================================================
Regards
Leo
2007 Feb 09 5:52 PM
Hi Leo,
Yes the code you have marked in BOLD Letters will work.
Execute the program.
I cannot execute your program on my system as the data is different. But I have executed with same number of fields on my system & it is working absolutely fine.
If it is not working verify the data from transaction VA03 for sales order no.
In VA03 provide the sales order no you are passing in program. Go for enter & check which item number is available e.g. '000010' etc. & also check the material number next to item number. Provide these things in program
Now Goto se16 & provide the table name VBPA. Provide the sales order no you are providing in program( ). Go for display & from here get the KUNNR(PARTNER-PARTN_NUMB) & PARVW(PARTNER-PARTN_ROLE) values. And provide these values in program & execute.
This time your program will run without errors.
Ashven
2007 Feb 09 6:52 PM
Hi Leo,
Check out the following code with the data you have(According to your flat file):
This code is working on my system & showin this message:
-
<b>SUCCESSFUL MESSAGE:</b>
2
Standard Order 2 has been saved
V1 S
-
<b>CODE:</b>
-
DATA: header TYPE bapisdhd1,
headerx TYPE bapisdhd1x,
sal_num LIKE bapivbeln-vbeln,
rec_num TYPE bapivbeln-vbeln VALUE IS INITIAL,
ret TYPE bapiret2 OCCURS 0 WITH HEADER LINE,
partner TYPE bapiparnr OCCURS 0 WITH HEADER LINE,
items TYPE bapisditm OCCURS 0 WITH HEADER LINE,
itemsx TYPE bapisditmx OCCURS 0 WITH HEADER LINE.
header-doc_type = 'TA'.
header-sales_org = '1000'.
header-division = '10'.
header-distr_chan = '10'.
headerx-updateflag = 'U'.
partner-itm_number = '000010'.
partner-partn_role = 'AG'.
partner-partn_numb = '0001000000'.
APPEND partner.
items-itm_number = '000010'.
items-material = '000000000040000010'.
APPEND items.
itemsx-itm_number = '000010'.
itemsx-updateflag = 'U'.
APPEND itemsx.
sal_num = '0000000002'.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
salesdocumentin = sal_num
order_header_in = header
order_header_inx = headerx
IMPORTING
salesdocument = rec_num
TABLES
return = ret
order_items_in = items
order_items_inx = itemsx
order_partners = partner.
IF NOT rec_num IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT =
.
ELSE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'
IMPORTING
RETURN =
.
ENDIF.
WRITE:/ rec_num.
WRITE:/ ret-message, ret-id, ret-type.
-
Reward points if it has solved your problem.
Ashvender
2007 Feb 09 7:44 PM
Ashvender...I am new to this SD but I will try wat u said but You asked me to enter the sales order that I am providing in the program in VA03 and VBAP....but the BAPI is to create a new sales order rite...if i enter the number it vil not be in the database......So kind of confused....you mean the SAL_NUM (sales order to be checked in VA03 and VBAP)....I know the rec_num is a sales order created by BAPI on its own....
Can you clear me this....plss...
Regards
Leo
2007 Feb 09 9:25 PM
Thanks Ashvendar, Kalpa nashri and Sushant.....it came out...finally...
Regards
Leo
2007 Feb 09 9:37 PM
Hi Leo,
Try the code for change order which is already available in system. If it is working fine then go for create Sales order. You can do that by changing update flags.
If this bapi is not working for create sales order then go for LSMW-BAPI method:
Here is the details of LSMW-BAPI method:
Business Object BUS2032
Method CREATEFROMDAT2
Message Type SALESORDER_CREATEFROMDAT2
Basic Type SALESORDER_CREATEFROMDAT2
Is it clear this time?
Ashvender
2007 Feb 09 9:44 PM
Hi Leo,
Can u tell me is it solved by code I mentioned or you tried different?
Ashvender
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |