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

Need to Create a Sales Order Using BAPI....

Former Member
0 Likes
3,500

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
2,820

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.

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

27 REPLIES 27
Read only

Former Member
0 Likes
2,820

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

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

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...

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

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.

Read only

0 Likes
2,820

Hi Leo,

Why dont u try with some other parameters and check whether u r getting the same error or not....

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

if u use occurs 0 its an internal table without that its a work area.

instead of ' I ' use 'U' ad update flag & check.

Read only

0 Likes
2,820

Leo,

Please check the code I have sent the latest.You should be able to solve by now...

Please mark useful answers....

Read only

Former Member
0 Likes
2,820

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

Read only

Former Member
0 Likes
2,821

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.

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

Hey why dont u pass the posnr also along with kunnr(PARTN_NUMB) and parvw(PARTN_ROLE)....

This is working fine at my end..

Read only

0 Likes
2,820

check whether number 0000001234 already exists in VA02 transaction

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

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.

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

Thanks Ashvendar, Kalpa nashri and Sushant.....it came out...finally...

Regards

Leo

Read only

0 Likes
2,820

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

Read only

0 Likes
2,820

Hi Leo,

Can u tell me is it solved by code I mentioned or you tried different?

Ashvender