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

Error during updating Sales order using BAPI

Former Member
0 Likes
1,273

Hi All,

I am creating sales order using BAPI “BAPI_SALESDOCU_CREATEFROMDATA”. Creation of sales order is fine. After create I commit and then I try to change 2 things 1.Payment Method and 2.Clear Billing Block using BAPI “BAPI_SALESORDER_CHANGE”.

Problem is when I do in debug mode it works fine. If I run in background or foreground without break points it gives 2 errors 1.Sales order locked by person who is running and 2. Sometime it says sales order doesn’t exist even after create commit (order do exist). I am using right BAPI. Do I do refresh or clear any locks?

Thanks in advance.

Regards,

Trim

3 REPLIES 3
Read only

Former Member
0 Likes
590

please specify same wait time.

that time do not edit sales order.

used commit work.

check table is locked or not.

release table lock.

Read only

0 Likes
590

YES I am doing commit. Please check code below - But some time it says even order not found....

CLEAR: GV_BAPI_VBELN, GV_SO_ERR.

CALL FUNCTION 'BAPI_SALESDOCU_CREATEFROMDATA'

EXPORTING

ORDER_HEADER_IN = GS_HEADER_P01

BUSINESS_OBJECT = 'BUS2094'

  • WITHOUT_COMMIT = ' '

  • CONVERT_PARVW_AUART = ' '

IMPORTING

SALESDOCUMENT = GV_BAPI_VBELN

  • SOLD_TO_PARTY =

  • SHIP_TO_PARTY =

  • BILLING_PARTY =

RETURN = GT_RETURN_P01

TABLES

ORDER_ITEMS_IN = GT_ITEMS_P01

ORDER_PARTNERS = GT_PARTNERS_P01

  • ORDER_ITEMS_OUT =

  • ORDER_CFGS_REF =

  • ORDER_CFGS_INST =

  • ORDER_CFGS_PART_OF =

  • ORDER_CFGS_VALUE =

  • ORDER_CFGS_BLOB =

  • ORDER_CCARD =

  • ORDER_SCHEDULE_EX =

.

IF GT_RETURN_P01-TYPE EQ 'A' OR

GT_RETURN_P01-TYPE EQ 'E'.

GV_SO_ERR = C_TRUE.

GS_OUTPUT_BAPI-LINE = GT_RETURN_P01-MESSAGE.

GS_OUTPUT_BAPI-ITEM = GT_RETURN_P01-MESSAGE_V1.

ENDIF.

  • PERFORM CHECK_BAPI_ERROR CHANGING GV_SO_ERR.

IF GV_SO_ERR IS INITIAL.

REFRESH: GT_RETURN.

CLEAR: GT_RETURN.

set update task local.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'

IMPORTING

RETURN = GT_RETURN.

      • Update - Clear billing block and Payment method

  • Header

IF P_GS_P01-PAY_METHOD EQ 'C'.

GL_BAPISDH1-PYMT_METH = 'C'.

ELSEIF P_GS_P01-PAY_METHOD EQ 'R' OR P_GS_P01-PAY_METHOD EQ 'T'.

GL_BAPISDH1-PYMT_METH = ' '.

ENDIF.

GL_BAPISDH1-BILL_BLOCK = ' '.

  • header X

GL_BAPISDH1X-BILL_BLOCK = 'X'.

GL_BAPISDH1X-PYMT_METH = 'X'.

GL_BAPISDH1X-UPDATEFLAG = 'U'.

CLEAR: GT_RETURN.

REFRESH:GT_RETURN.

CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

EXPORTING

salesdocument = GV_BAPI_VBELN

order_header_in = GL_BAPISDH1

order_header_inx = GL_BAPISDH1X

TABLES

return = GT_RETURN.

LOOP AT GT_RETURN.

IF GT_RETURN-TYPE EQ 'A' OR

GT_RETURN-TYPE EQ 'E'.

GV_SO_ERR = C_TRUE.

GS_OUTPUT_BAPI-LINE = GT_RETURN-MESSAGE.

GS_OUTPUT_BAPI-ITEM = GT_RETURN-MESSAGE_V1.

ENDIF.

ENDLOOP.

IF GV_SO_ERR IS INITIAL.

CLEAR: GT_RETURN.

REFRESH:GT_RETURN.

set update task local.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'

IMPORTING

RETURN = GT_RETURN.

IF GT_RETURN-TYPE EQ 'A' OR

GT_RETURN-TYPE EQ 'E'.

GV_SO_ERR = C_TRUE.

GS_OUTPUT_BAPI-LINE = GT_RETURN-MESSAGE.

GS_OUTPUT_BAPI-ITEM = GT_RETURN-MESSAGE_V1.

ENDIF.

ENDIF.

ENDIF.

Read only

Former Member
0 Likes
590

Updating at the end