1.修改定价条件时 LOGIC_SWITCH-cond_handl = 'X'. "更改,否则插入(即使 condx-updateflag = 'U'也不行)
2.修改数量是改计划行,不是item的数量
3.即便只修改价格,lt_cond的单位还是要传,否则价格会增加10倍
4.可以修改va32 计划协议
5.修改项目时,要传 order_item_inx-updateflag = 'U'. 否则报一些奇怪的错,如:项目类别XX不存在等等
demo
修改销售订单
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'.