1. When modifying the pricing conditions, LOGIC_SWITCH-cond_handl ='X'. "Change, otherwise insert ( even if condx-updateflag ='U' )
2. Modify the quantity is to change the plan line, not the item quantity
3. Even if you only modify the price, the unit of lt_cond must be passed, otherwise the price will increase 10 times
4. You can modify the va32 plan agreement
5. When modifying the item, pass order_item_inx-updateflag ='U'. Otherwise, report some strange errors, such as: item category XX does not exist, etc.
demo
Modify sales order
DATA:
IS_ORDER_HEADER_INX TYPE BAPISDH1X,
IT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE,
IT_SCHEDULE_LINES TYPE TABLE OF BAPISCHDL WITH HEADER LINE,
IT_SCHEDULE_LINESX TYPE TABLE OF BAPISCHDLX WITH HEADER LINE.
IS_ORDER_HEADER_INX-UPDATEFLAG = 'U'. "UPDATE
LOOP AT IT_CHANGES.
IT_SCHEDULE_LINES-ITM_NUMBER = IT_CHANGES-POSNR.
IT_SCHEDULE_LINES-SCHED_LINE = 1.
IT_SCHEDULE_LINES-SCHED_TYPE = IT_CHANGES-ETTYP.
APPEND IT_SCHEDULE_LINES.
IT_SCHEDULE_LINESX-UPDATEFLAG = 'U'.
IT_SCHEDULE_LINESX-ITM_NUMBER = IT_CHANGES-POSNR.
IT_SCHEDULE_LINESX-SCHED_LINE = 1.
IT_SCHEDULE_LINESX-SCHED_TYPE = 'X'.
APPEND IT_SCHEDULE_LINESX.
AT END OF VBELN.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
SALESDOCUMENT = IT_CHANGES-VBELN
ORDER_HEADER_INX = IS_ORDER_HEADER_INX
TABLES
RETURN = IT_RETURN
SCHEDULE_LINES = IT_SCHEDULE_LINES
SCHEDULE_LINESX = IT_SCHEDULE_LINESX.
CALL FUNCTION 'OXT_MESSAGE_TO_POPUP'
EXPORTING
IT_MESSAGE = IT_RETURN[].
ENDAT.
ENDLOOP.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.