BAPI_SALESORDER_CHANGE modify sales order

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

 

Guess you like

Origin blog.csdn.net/cylcylcylcylwo/article/details/113929361