BAPI_SALESORDER_CHANGE schedule_lines

Hi experts.
I'm doing a simple order update, using FM BAPI_SALESORDER_CHANGE.
The goal is to change header data (with order_header_in and order_header_inx structures), schedule lines data (with schedule_lines and schedule_linesx structures) and  text data (with order_text structure).
The problem is that header and text data is actually changed, but schedulle data doesn't.
Can anyone help?
Best regards.
Valter Oliveira.
SAMPLE CODE:
HEADER
    CLEAR: wa_header_in.
    wa_header_in-po_dat_s   = wa_pub-data.
    wa_header_in-ref_1      = wa_pub-diario.
    wa_header_in-ref_1_s    = wa_pub-suplemento.
    wa_header_in-dlv_block  = space.
    CLEAR: wa_header_inx.
    wa_header_inx-updateflag  = 'U'.
    wa_header_inx-po_dat_s    = 'X'.
    wa_header_inx-ref_1       = 'X'.
    wa_header_inx-ref_1_s     = 'X'.
    wa_header_inx-dlv_block   = 'X'.
SCHEDULE
    SELECT posnr FROM vbap
      INTO (vl_posnr)
     WHERE vbeln = wa_pub-vbeln.
      SELECT etenr FROM vbep
        INTO (vl_etenr)
       WHERE vbeln = wa_pub-vbeln
         AND posnr = vl_posnr.
        ti_sched-itm_number = vl_posnr.
        ti_sched-sched_line = vl_etenr.
        ti_sched-req_dlv_bl = space.
        ti_sched-req_date = wa_pub-data.
        ti_sched-sched_type = 'CN'.
        ti_schedx-itm_number = vl_posnr.
        ti_schedx-sched_line = vl_etenr.
        ti_schedx-req_dlv_bl = 'X'.
        ti_schedx-sched_type = 'X'.
        ti_schedx-req_date = 'X'.
        APPEND ti_sched. APPEND ti_schedx.
      ENDSELECT.
    ENDSELECT.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
      EXPORTING
        salesdocument    = wa_pub-vbeln
        order_header_in  = wa_header_in
        order_header_inx = wa_header_inx
      TABLES
        schedule_lines   = ti_sched
        schedule_linesx  = ti_schedx
        order_text       = ti_texts
        return           = ti_ret.

Hi experts.
I'm doing a simple order update, using FM BAPI_SALESORDER_CHANGE.
The goal is to change header data (with order_header_in and order_header_inx structures), schedule lines data (with schedule_lines and schedule_linesx structures) and  text data (with order_text structure).
The problem is that header and text data is actually changed, but schedulle data doesn't.
Can anyone help?
Best regards.
Valter Oliveira.
SAMPLE CODE:
HEADER
    CLEAR: wa_header_in.
    wa_header_in-po_dat_s   = wa_pub-data.
    wa_header_in-ref_1      = wa_pub-diario.
    wa_header_in-ref_1_s    = wa_pub-suplemento.
    wa_header_in-dlv_block  = space.
    CLEAR: wa_header_inx.
    wa_header_inx-updateflag  = 'U'.
    wa_header_inx-po_dat_s    = 'X'.
    wa_header_inx-ref_1       = 'X'.
    wa_header_inx-ref_1_s     = 'X'.
    wa_header_inx-dlv_block   = 'X'.
SCHEDULE
    SELECT posnr FROM vbap
      INTO (vl_posnr)
     WHERE vbeln = wa_pub-vbeln.
      SELECT etenr FROM vbep
        INTO (vl_etenr)
       WHERE vbeln = wa_pub-vbeln
         AND posnr = vl_posnr.
        ti_sched-itm_number = vl_posnr.
        ti_sched-sched_line = vl_etenr.
        ti_sched-req_dlv_bl = space.
        ti_sched-req_date = wa_pub-data.
        ti_sched-sched_type = 'CN'.
        ti_schedx-itm_number = vl_posnr.
        ti_schedx-sched_line = vl_etenr.
        ti_schedx-req_dlv_bl = 'X'.
        ti_schedx-sched_type = 'X'.
        ti_schedx-req_date = 'X'.
        APPEND ti_sched. APPEND ti_schedx.
      ENDSELECT.
    ENDSELECT.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
      EXPORTING
        salesdocument    = wa_pub-vbeln
        order_header_in  = wa_header_in
        order_header_inx = wa_header_inx
      TABLES
        schedule_lines   = ti_sched
        schedule_linesx  = ti_schedx
        order_text       = ti_texts
        return           = ti_ret.

Similar Messages

  • Schedule lines creation with BAPI_SALESORDER_CHANGE

    Dear All,
    1. I'm trying to create a new Schedule Lines to an already existing Scheduling Agreement.
    2. For this, I'm using the BAPI --> BAPI_SALESORDER_CHANGE.
    3. This BAPI returns me a message saying that the Schedule line processed successfully.
    4. When I check the VBEP Table with the Scheduling Agreement number, I'm able to see the newly created schedule line.
    5. But, when I see the Transaction VA33, I'm not able to see the schedule lines.
    I checked in SDN and OSS notes. I found 1647069 which says to pass the line number and Item number which I'm already doing it.
    Can any one help me out ?
    Regards,
    Deepu.K

    I verified in my system that the below should work. Here, I am inserting a new schedule 0002 for item 10 with qty 1 and another date.
    Of course, you should ensure that there is sufficient quantity that is not yet confirmed by existing schedule lines.
    BAPI_SALESORDER_CHANGE
    SALESDOCUMENT = '0011827125'
    ORDER_HEADER_INX
               UPDATEFLAG = 'U'
    ORDER_ITEM_IN
               ITM_NUMBER = '000010'
    ORDER_ITEM_INX
               ITM_NUMBER = '000010'
               UPDATEFLAG = 'U'
    SCHEDULE_LINES
               ITM_NUMBER = '000010'
               SCHED_LINE = '0002'
               REQ_DATE   = '20120104'
               REQ_QTY = '1'
    SCHEDULE_LINESX
               ITM_NUMBER = '000010'
               SCHED_LINE = '0002'
               UPDATEFLAG = 'I'
               REQ_DATE   = 'X'
               REQ_QTY = 'X'.

  • How to pass Itab to "BAPI_SALESORDER_CHANGE"

    Requirment : We cancel sales order that have been created but not fulfilled within 7 days.
    At present, we do this manually.  Can we configure to have the system auto cancel the sales order
    after the said period? 
    selection screen
    u2022     Sales organization (P_VKORG like ZSD_REJECT-VKORG)
    u2022     Sales office (S_VKBUR for ZSD_REJECT-VKBUR)
    u2022     Plant (S_WERKS for ZSD_REJECT-WERKS)
    u2022     Sales order type (S_AUART for ZSD_REJECT-AUART)
    u2022     Sales order no. (S_VBELN for ZSD_REJECT-VBELN)
    u2022     Customer no. (S_KUNNR for ZSD_REJECT-KUNNR)
    u2022     Rejection date (S_REJDTE for ZSD_REJECT-REJDATE)
    Report format/columns should be as follows:
    1.     Sales organization (ZSD_REJECT-VKORG)
    2.     Sales office (ZSD_REJECT-VKBUR)
    3.     Plant (ZSD_REJECT-WERKS)
    4.     Customer no. (ZSD_REJECT-KUNNR)
    5.     Customer name (KNA1-NAME1)
    6.     Sales order no. (ZSD_REJECT-VBELN)
    7.     Sales order item (ZSD_REJECT-POSNR)
    8.     Material no. (VBAP-MATNR)
    9.     Material description (VBAP-ARKTX)
    10.     Order quantity (VBAP-KWMENG)
    11.     Rejected quantity (ZSD_REJECT-REJQTY)
    12.     Unit of measure (VBAP-VRKME)
    13.     Rejected net value (ZSD_REJECT-REJVAL)
    14.     Currency (VBAK-WAERK)
    15.     Rejection date (ZSD_REJECT-REJDATE)
    16.     Rejection time (ZSD_REJECT-REJTIME)
    17.     Rejection user (ZSD_REJECT-REJUSER)
    Program : I have created one report & calling bapi BAPI_SALESORDER_CHANGE
    TYPES: BEGIN OF t_tab,
             vkorg   TYPE zsd_reject-vkorg ,
             vkbur   TYPE zsd_reject-vkbur ,
             auart   TYPE zsd_reject-auart ,
           END OF t_tab.
    TYPES: BEGIN OF t_vbak,
            vbeln   TYPE vbak-vbeln ,
            erdat   TYPE vbak-erdat ,
            waerk   TYPE vbak-waerk,
            vbtyp   TYPE vbak-vbtyp,
            auart   TYPE vbak-auart,
            vkorg   TYPE vbak-vkorg ,
            vkbur   TYPE vbak-vkbur ,
            kunnr   TYPE vbak-kunnr ,
            cmfre   TYPE vbak-cmfre ,
           gbsta   type vpup-gbsta,
            costa   TYPE vbuk-costa ,
            fkstk   TYPE vbuk-fkstk,
          END OF t_vbak.
    TYPES: BEGIN OF t_data,
            vbeln   TYPE vbak-vbeln ,
            waerk   TYPE vbak-waerk,
            auart   TYPE vbak-auart,
            vkorg   TYPE vbak-vkorg ,
            vkbur   TYPE vbak-vkbur ,
            kunnr   TYPE vbak-kunnr ,
            cmfre   TYPE vbak-cmfre ,
          END OF t_data.
    TYPES: BEGIN OF t_vbap,
             matnr   TYPE vbap-matnr ,
             vbeln   TYPE vbap-vbeln ,
             posnr   TYPE vbap-posnr,
             arktx   TYPE vbap-arktx ,
             pstyv   TYPE vbap-pstyv,
             abgru   TYPE vbap-abgru,
             kwmeng  TYPE vbap-kwmeng,
             werks   TYPE vbap-werks ,
             END OF t_vbap.
    TABLES                                                               *
    TABLES : zsd_reject.
    INTERNAL TABLES, STRUCTURES & WORK AREAS                             *
    DATA: it_vbak  TYPE STANDARD TABLE OF  t_vbak WITH HEADER LINE,
          it_data  TYPE STANDARD TABLE OF t_data WITH HEADER LINE ,
          it_vbap  TYPE STANDARD TABLE OF t_vbap ,
          wa_vbak  TYPE t_vbak ,
          wa_vbap  TYPE t_vbap ,
          wa_data  TYPE t_data.
    PARAMETERS & SELECT-OPTIONS                                         *
    DUE TO AN SAP LIMITATION WITH CREATING / CHANGING VARIANTS,
    selection screen fields over 45 characters in length should be avoided
    SELECTION-SCREEN: BEGIN OF BLOCK a01 WITH FRAME TITLE text-001.
    PARAMETERS: p_vkorg LIKE zsd_reject-vkorg.
    SELECT-OPTIONS: s_vkbur FOR zsd_reject-vkbur,
                    s_werks FOR zsd_reject-werks,
                    s_auart FOR zsd_reject-auart,
                    s_vbeln FOR zsd_reject-vbeln,
                    s_kunnr FOR zsd_reject-kunnr,
                    s_rejdte FOR zsd_reject-rejdate.
    SELECTION-SCREEN: END OF BLOCK a01.
    DATA : p_days TYPE i VALUE 7,
           l_checkdate LIKE  sy-datum.
    START-OF-SELECTION.
      l_checkdate = sy-datum - p_days.
      SELECT vbak~vbeln
             vbak~erdat
             vbak~waerk
             vbak~vbtyp
             vbak~auart
             vbak~vkorg
             vbak~vkbur
             vbak~kunnr
             vbak~cmfre
           vbup~gbsta
             vbuk~costa
             vbuk~fkstk
      INTO  TABLE it_vbak
      FROM vbak INNER JOIN vbuk
      ON  vbakvbeln = vbukvbeln
      WHERE vbak~vkorg = p_vkorg
      AND vbak~vkbur IN s_vkbur
      AND vbak~auart IN s_auart
      AND  vbak~vbtyp = 'C'
      AND vbuk~gbstk NE 'C'.
      Requirment :
    This checking is only for those order were previously blocked and has been released, which means credit release date not equal to 00.00.0000 and hence program will check rejection logic based on credit release date vs system date > 7 calendar days.  For those orders which holding credit release date equals to 00.00.0000 will go through rejection checking
    based on order creation date vs system date > 7 calendar days respectively.
    LOOP AT it_vbak INTO wa_vbak.
        IF NOT wa_vbak-cmfre IS INITIAL.
          IF wa_vbak-cmfre > l_checkdate.
            DELETE it_vbak FROM wa_vbak.
          ENDIF.
        ELSE.
          IF wa_vbak-erdat > l_checkdate.
            DELETE it_vbak FROM wa_vbak.
          ENDIF.
        ENDIF.
      ENDLOOP.
      SELECT vbapmatnr vbapvbeln vbapposnr vbaparktx vbap~pstyv
      vbapabgru vbapkwmeng vbap~werks INTO TABLE it_vbap
      FROM vbap INNER JOIN vbup ON
      vbapvbeln = vbupvbeln AND vbapposnr = vbupposnr
      FOR ALL entries
      IN it_vbak WHERE vbap~vbeln = it_vbak-vbeln AND
      gbsta NE 'C'.
    I have taken the records in two internal table for header & item it_vbak & it_vbap
    now I need to call the BAPI_SALESORDER_CHANGE and pass the internal table to Bapi .
    Can anyone please let me know how to pass this into Bapi?
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
      EXPORTING
        salesdocument               =
      ORDER_HEADER_IN             =
        order_header_inx            =
      SIMULATION                  =
      BEHAVE_WHEN_ERROR           = ' '
      INT_NUMBER_ASSIGNMENT       = ' '
      LOGIC_SWITCH                =
    tables
       return                      =
      ORDER_ITEM_IN               =
      ORDER_ITEM_INX              =
      PARTNERS                    =
      PARTNERCHANGES              =
      PARTNERADDRESSES            =
      ORDER_CFGS_REF              =
      ORDER_CFGS_INST             =
      ORDER_CFGS_PART_OF          =
      ORDER_CFGS_VALUE            =
      ORDER_CFGS_BLOB             =
      ORDER_CFGS_VK               =
      ORDER_CFGS_REFINST          =
      SCHEDULE_LINES              =
      SCHEDULE_LINESX             =
      ORDER_TEXT                  =
      ORDER_KEYS                  =
      CONDITIONS_IN               =
      CONDITIONS_INX              =
      EXTENSIONIN                 =
    Thanks in advance
    Regards
    Rahul

    Hi,
    I am trying to cancel the  sales order that have been created but not fulfilled within 7 days.
    If this condition is true dump is coming (when I am trying to delete the records from internal table)
    if wa_vbak-erdat > l_checkdate.
              delete it_vbak from wa_vbak.
            endif.
    Error analysis
    The program attempted to interp 70000200KL " as a number, but since the value contravenes the
    this was not possible.
    types: begin of t_vbak,
            vbeln   type vbak-vbeln ,
            erdat   type vbak-erdat ,
            waerk   type vbak-waerk,
            vbtyp   type vbak-vbtyp,
            auart   type vbak-auart,
            vkorg   type vbak-vkorg ,
            vtweg   type vbak-vtweg,
            spart   type vbak-spart,
            vkbur   type vbak-vkbur ,
            kunnr   type vbak-kunnr ,
            cmfre   type vbak-cmfre ,
           gbsta   type vpup-gbsta,
            costa   type vbuk-costa ,
            fkstk   type vbuk-fkstk,
            end of t_vbak.
    data : p_days type i value 7,
           l_checkdate like  sy-datum.
    DATA: it_vbak  TYPE STANDARD TABLE OF  t_vbak WITH HEADER LINE,
          it_data  TYPE STANDARD TABLE OF t_data WITH HEADER LINE ,
    start-of-selection.
    l_checkdate = sy-datum - p_days.
    select vbak~vbeln
             vbak~erdat
             vbak~waerk
             vbak~vbtyp
             vbak~auart
             vbak~vkorg
             vbak~vtweg
             vbak~spart
             vbak~vkbur
             vbak~kunnr
             vbak~cmfre
           vbup~gbsta
             vbuk~costa
             vbuk~fkstk
      into  corresponding fields of  table it_vbak
      from vbak inner join vbuk
      on  vbakvbeln = vbukvbeln
      where vbak~vkorg = p_vkorg
      and vbak~vkbur in s_vkbur
      and vbak~auart in s_auart
      and  vbak~vbtyp = 'C'
      and vbuk~gbstk ne 'C'
      and vbak~vbeln = '0000003549'.
      sort it_vbak by vbeln.
      if not it_vbak[] is initial.
        loop at it_vbak into wa_vbak.
          if not wa_vbak-cmfre is initial.
            if wa_vbak-cmfre > l_checkdate.
              delete it_vbak from wa_vbak.
            endif.
          else.
    ******Error (short dump here  if condition true )***************************
            if wa_vbak-erdat > l_checkdate.
              delete it_vbak from wa_vbak.
            endif.
          endif.
        endloop.
      endif.
    Regards
    Rahul

  • BAPI_SALESORDER_CHANGE add new line and conditions with a condition value

    Hi,
    I am using BAPI_SALESORDER_CHANGE to add new lines to a credit memo. All works fine except that I can not seem to put a condition value on the new lines. The condition is created but with a value of 0. I can popluate the condition amount field, KBETR but not KWERT. BAPICONDX seems to only have the COND_VALUE field in it and not CONDVALUE as in BAPICOND. Does anyone have any idea how to do this? In the code below I just want to change the material on the first line of the credit memo and not add the condition. Then add new lines with the the condition.
    lw_order_header_inx-updateflag  = 'U'.
      LOOP AT i_accru INTO wa_accru.
        lv_count = lv_count + 1.
        lv_posnr = lv_count * 10.
    * Order Items
        lw_order_item_inx-itm_number = lv_posnr.
        lw_order_item_inx-material   = 'X'.
        IF lv_count = 1.
          lw_order_item_inx-updateflag    = 'U'.
        ELSE.
          lw_order_item_inx-updateflag    = 'I'.
        ENDIF.
        APPEND lw_order_item_inx TO lt_order_item_inx.
        lw_order_item_in-itm_number = lv_posnr.
        lw_order_item_in-material   = wa_accru-vakey.
        APPEND lw_order_item_in TO lt_order_item_in.
    * Conditions
        IF lv_count <> 1.
          lw_conditions_inx-itm_number = lv_posnr.
          lw_conditions_inx-cond_st_no = '905'.
          lw_conditions_inx-cond_count = '01'.
          lw_conditions_inx-cond_type  = 'ZHIE'.
          lw_conditions_inx-currency   = 'X'.
          lw_conditions_inx-updateflag = 'I'.
          APPEND lw_conditions_inx TO lt_conditions_inx.
          lw_conditions_in-itm_number = lv_posnr.
          lw_conditions_in-cond_st_no = '905' .
          lw_conditions_in-cond_count = '01'.
          lw_conditions_in-cond_type  = 'ZHIE'.
          lw_conditions_in-condvalue  = wa_accru-accru.
          lw_conditions_in-currency   = 'GBP'.
          APPEND lw_conditions_in TO lt_conditions_in.
        ENDIF.
      ENDLOOP.
    * Change the credit memo
      CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
        EXPORTING
          salesdocument               = lv_vbeln
          order_header_in             = lw_order_header_in
          order_header_inx            = lw_order_header_inx
    *   SIMULATION                  =
    *   BEHAVE_WHEN_ERROR           = ' '
    *   INT_NUMBER_ASSIGNMENT       = ' '
    *   LOGIC_SWITCH                =
    *   NO_STATUS_BUF_INIT          = ' '
        TABLES
          return                      = lt_return
          order_item_in               = lt_order_item_in
          order_item_inx              = lt_order_item_inx
    *   PARTNERS                    =
    *   PARTNERCHANGES              =
    *   PARTNERADDRESSES            =
    *   ORDER_CFGS_REF              =
    *   ORDER_CFGS_INST             =
    *   ORDER_CFGS_PART_OF          =
    *   ORDER_CFGS_VALUE            =
    *   ORDER_CFGS_BLOB             =
    *   ORDER_CFGS_VK               =
    *   ORDER_CFGS_REFINST          =
    *   SCHEDULE_LINES              =
    *   SCHEDULE_LINESX             =
    *   ORDER_TEXT                  =
    *   ORDER_KEYS                  =
         conditions_in               = lt_conditions_in
         conditions_inx              = lt_conditions_inx
    *   EXTENSIONIN                 =
      IF sy-subrc = 0.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    * EXPORTING
    *   WAIT          =
    * IMPORTING
    *   RETURN        =
      ENDIF.

    Hi Rob,
    Have you managed to solve this issue. If so, could you please share the solution.
    I am also facing similar problem.
    Thanks for your help.
    Anoop

  • Deleting Sales Order Details using BAPI_SALESORDER_CHANGE And Reinserting

    Hi All,
    I need to <b>change a Sales Order</b> in such a way that I would <b>delete all the existing Line Items</b> of that SO And <b>then reinsert new Line Items</b> as generally is the practice of saving a document.(Update Header-Delete Old Item Entries-Reinsert New Present Entries).
    I coded a small test program in ABAP using the <b>BAPI_SALESORDER_GETLIST And BAPI_SALESORDER_CHANGE</b>.
    In order to affect the Qty I have to update the Schedule Parameter also of the BAPI_SALESORDER_CHANGE Function.But this causes a new entry in VBEP.
    eg:
    <b>Before BAPI Calls</b>
    SO-Number:9001
    Header:9001,etc......
    Detail:ItemNo=10,Material=xyz,TargetQty=100,etc..
    Scedule:ItemNo=10,Scheduleline=1,Req_Qty=100,etc...
    I coded the program such that
    1.I <b>Get the List of Items</b> using BAPI_SALESORDER_GETLIST.
    2.Call the <b>BAPI_SALESORDER_CHANGE</b> filling appropraite   values in Parameters <b>with UpdateFlag = 'D'</b>
    3.<b>Insert new values</b> in OrderItems And Schedule Parameters
    say:
    Detail:ItemNo=10,Material=xyz,TargetQty=25,etc..
    Scedule:ItemNo=10,Scheduleline=1,Req_Qty=25,etc...
    4.<b>Call the BAPI_SALESORDER_CHANGE</b> filling appropraite values in Parameters <b>with UpdateFlag = 'I'</b>
    <b>The output now becomes.</b>Header:9001,etc......
    Detail:ItemNo=10,Material=xyz,TargetQty=100,etc..
    Scedule:ItemNo=10,Scheduleline=1,Req_Qty=100,etc...
    ItemNo=10,Scheduleline=2,Req_Qty=25,etc...
    Now After Commit when I see my <b>SO it shows me a qty of
    125</b>.
    I am attaching the code for your analysis.
    Thanx in advance.
    *& Report  ZSM_CHANGESALESORDER                                        *
    REPORT  ZSM_CHANGESALESORDER                    .
    DATA:
    For Calling the GetList BAPI Function
      CUSTOMER_NUMBER LIKE  BAPI1007-CUSTOMER,
      SALES_ORGANIZATION LIKE  BAPIORDERS-SALES_ORG,
      IT_SALES_ORDERS LIKE TABLE OF BAPIORDERS,
      WA_SALES_ORDERS LIKE LINE OF IT_SALES_ORDERS,
      IT_RETURN LIKE TABLE OF BAPIRETURN,
      WA_RETURN LIKE LINE OF IT_RETURN.
    For Calling the ChangeFromData BAPI Function
    DATA:
      SALESDOCUMENT LIKE  BAPIVBELN-VBELN,
      WA_ORDER_HEADER_IN LIKE  BAPISDH1,
      WA_ORDER_HEADER_INX LIKE BAPISDH1X,
      IT_ORDER_ITEM_IN LIKE TABLE OF BAPISDITM ,
      WA_ORDER_ITEM_IN LIKE LINE OF IT_ORDER_ITEM_IN,
      IT_ORDER_ITEM_INX LIKE TABLE OF BAPISDITMX ,
      WA_ORDER_ITEM_INX LIKE LINE OF IT_ORDER_ITEM_INX,
      IT_SCHEDULE_LINES LIKE TABLE OF BAPISCHDL ,
      WA_SCHEDULE_LINES LIKE LINE OF IT_SCHEDULE_LINES,
      IT_SCHEDULE_LINESX LIKE TABLE OF BAPISCHDLX ,
      WA_SCHEDULE_LINESX LIKE LINE OF IT_SCHEDULE_LINESX,
      IT_RETURN_CHG LIKE TABLE OF BAPIRET2,
      WA_RETURN_CHG LIKE LINE OF IT_RETURN_CHG.
    DATA:
      IT_RETURN_CT LIKE BAPIRET2.
    PARAMETERS:
      P_SO LIKE VBAK-VBELN,
      P_CUSTNO LIKE  BAPI1007-CUSTOMER,
      P_SORG LIKE BAPIORDERS-SALES_ORG.
    START-OF-SELECTION.
      SALESDOCUMENT = P_SO.
      CUSTOMER_NUMBER = P_CUSTNO.
      SALES_ORGANIZATION = P_SORG.
    Retrieve the Existing Sales Order details for that Sales Order.
      PERFORM GETREQSODETAILS.
    Delete the Existing Sales Order details from that Sales Order.
      PERFORM DELETEOLDSODETAILS.
    Insert New details for that Sales Order.
       PERFORM ADDNEWSODETAILS.
    END-OF-SELECTION.
      PERFORM COMMITTRANS.
    *&      Form  GetReqSODetails
    FORM GETREQSODETAILS .
      CALL FUNCTION 'BAPI_SALESORDER_GETLIST'
        EXPORTING
          CUSTOMER_NUMBER    = CUSTOMER_NUMBER
          SALES_ORGANIZATION = SALES_ORGANIZATION
        IMPORTING
          RETURN             = WA_RETURN
        TABLES
          SALES_ORDERS       = IT_SALES_ORDERS.
    *delete the Sales Order Details of Sales Orders other than the req.One
      IF NOT IT_SALES_ORDERS[] IS INITIAL.
        SORT IT_SALES_ORDERS BY SD_DOC.
        LOOP AT IT_SALES_ORDERS INTO WA_SALES_ORDERS.
          IF WA_SALES_ORDERS-SD_DOC NE SALESDOCUMENT.
            DELETE IT_SALES_ORDERS.
          ENDIF.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    " GetReqSODetails
    *&      Form  deleteOldSODetails
    FORM DELETEOLDSODETAILS .
      DATA: IRECCOUNT TYPE I.
      IRECCOUNT = 1.
    *Clear all the Inernal Tables And Work Areas
    *and Update the SO Header Index
      PERFORM CLEARDATA.
      PERFORM SOHEADERINDEX.
      LOOP AT IT_SALES_ORDERS INTO WA_SALES_ORDERS.
    *Fill the Order Details Index Internal Table
        PERFORM FILLSODELETEDTLS_INDEX_PARAM
        USING WA_SALES_ORDERS-ITM_NUMBER 'D'.
    *Fill the Order Scedule Index Internal Table
        PERFORM FILLSODELETESCH_INDEX_PARAM
        USING WA_SALES_ORDERS-ITM_NUMBER IRECCOUNT 'D'.
      ENDLOOP.
    *call the Sales Order Change Fumction to delete the Existing Data
      CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
        EXPORTING
          SALESDOCUMENT    = SALESDOCUMENT
          ORDER_HEADER_INX = WA_ORDER_HEADER_INX
        TABLES
          RETURN           = IT_RETURN_CHG
          ORDER_ITEM_INX   = IT_ORDER_ITEM_INX
          SCHEDULE_LINESX  = IT_SCHEDULE_LINESX.
    ENDFORM.                    " deleteOldSODetails
    *&      Form  SOHeaderIndex
    FORM SOHEADERINDEX .
      WA_ORDER_HEADER_INX-UPDATEFLAG = 'U'.
    ENDFORM.                    " SOHeaderIndex
    *&      Form  FillSODeleteDtls_Index_param
    FORM FILLSODELETEDTLS_INDEX_PARAM
    USING VALUE(P_ITM_NUMBER) VALUE(P_FLAG).
      WA_ORDER_ITEM_INX-ITM_NUMBER = P_ITM_NUMBER.
      WA_ORDER_ITEM_INX-UPDATEFLAG = P_FLAG.
      APPEND WA_ORDER_ITEM_INX TO IT_ORDER_ITEM_INX.
    ENDFORM.                    " FillSODeleteDtls_Index_param
    *&      Form  FILLSODELETEsch_Index_PARAM
    FORM FILLSODELETESCH_INDEX_PARAM
    USING VALUE(P_ITM_NUMBER) VALUE(P_RECCOUNT) VALUE(P_FLAG).
      WA_SCHEDULE_LINESX-ITM_NUMBER = P_ITM_NUMBER.
      WA_SCHEDULE_LINESX-SCHED_LINE = P_RECCOUNT.
      WA_SCHEDULE_LINESX-UPDATEFLAG = P_FLAG.
      APPEND WA_SCHEDULE_LINESX TO IT_SCHEDULE_LINESX.
    ENDFORM.                    " FILLSODELETEsch_Index_PARAM
    *&      Form  addnewSODETAILS
    FORM ADDNEWSODETAILS .
      DATA: IRECCOUNT TYPE I, ITEMNO TYPE I.
      IRECCOUNT = 1.
    *Clear all the Inernal Tables And Work Areas
    *and Update the SO Header Index
      PERFORM CLEARDATA.
      PERFORM SOHEADERINDEX.
      WHILE IRECCOUNT <= 1.
        ITEMNO = IRECCOUNT * 10.
    *Fill the New Order Details in the Internal Table
        PERFORM FILLSODTLDATA USING ITEMNO 'TEST FG' 37 .
    *Fill the Order Details Index Internal Table
        PERFORM FILLSODELETEDTLS_INDEX_PARAM USING ITEMNO 'I'.
    *Fill the New Schedule Details in the Internal Table
        PERFORM FILLSOSCHDATA USING ITEMNO IRECCOUNT 37 .
    *Fill the Order Scedule Index Internal Table
        PERFORM FILLSODELETESCH_INDEX_PARAM
        USING ITEMNO IRECCOUNT 'I'.
        IRECCOUNT = IRECCOUNT + 1.
      ENDWHILE.
    *call the Sales Order Change Fumction to Insert New Data
      CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
        EXPORTING
          SALESDOCUMENT    = SALESDOCUMENT
          ORDER_HEADER_INX = WA_ORDER_HEADER_INX
        TABLES
          RETURN           = IT_RETURN_CHG
          ORDER_ITEM_IN    = IT_ORDER_ITEM_IN
          ORDER_ITEM_INX   = IT_ORDER_ITEM_INX
          SCHEDULE_LINES   = IT_SCHEDULE_LINES
          SCHEDULE_LINESX  = IT_SCHEDULE_LINESX.
    ENDFORM.                    " addnewSODETAILS
    *&      Form  clearData
    FORM CLEARDATA .
      CLEAR WA_ORDER_HEADER_INX.
      CLEAR WA_ORDER_ITEM_INX.
      REFRESH IT_ORDER_ITEM_INX.
      CLEAR WA_SCHEDULE_LINESX.
      REFRESH IT_SCHEDULE_LINESX.
      CLEAR WA_RETURN.
      REFRESH IT_RETURN.
      CLEAR WA_ORDER_ITEM_IN.
      REFRESH IT_ORDER_ITEM_IN.
      CLEAR WA_SCHEDULE_LINES.
      REFRESH IT_SCHEDULE_LINES.
    ENDFORM.                    " clearData
    *&      Form  FILLSODTLDATA
    FORM FILLSODTLDATA  USING    VALUE(P_ITEMNO) VALUE(P_MATERIAL)
    VALUE(P_TARGET_QTY) .
      WA_ORDER_ITEM_IN-ITM_NUMBER = P_ITEMNO.
      WA_ORDER_ITEM_IN-MATERIAL = P_MATERIAL.
      WA_ORDER_ITEM_IN-TARGET_QTY = P_TARGET_QTY.
      APPEND WA_ORDER_ITEM_IN TO IT_ORDER_ITEM_IN.
    ENDFORM.                    " FILLSODTLDATA
    *&      Form  FILLSOschDATA
    FORM FILLSOSCHDATA  USING    VALUE(P_ITEMNO)
                                 VALUE(P_RECCOUNT)
                                 VALUE(P_REQ_QTY)  .
      WA_SCHEDULE_LINES-ITM_NUMBER = P_ITEMNO.
      WA_SCHEDULE_LINES-SCHED_LINE = P_RECCOUNT.
      WA_SCHEDULE_LINES-REQ_QTY = P_REQ_QTY.
      APPEND WA_SCHEDULE_LINES TO IT_SCHEDULE_LINES.
    ENDFORM.                    " FILLSOschDATA
    *&      Form  committrans
    FORM COMMITTRANS .
      DATA:SUCCESSFLAG(1).
      LOOP AT IT_RETURN_CHG INTO WA_RETURN_CHG.
        IF WA_RETURN_CHG-TYPE = 'S'
              AND WA_RETURN_CHG-ID = 'V1'
              AND WA_RETURN_CHG-NUMBER = 311
              AND SUCCESSFLAG IS INITIAL.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              WAIT   = 'X'
            IMPORTING
              RETURN = IT_RETURN_CT.
          SUCCESSFLAG = 'X'.
        ENDIF.
      ENDLOOP.
      IF SUCCESSFLAG IS INITIAL.
        WRITE: 'SORRY SOME ERROR'.
      ELSE.
        WRITE: 'SUCCESSFUL'.
      ENDIF.
    ENDFORM.                    " committrans

    Thanx wolfgang,
    I needed that info.
    As I had mentioned in the earlier posts, I want to delete the old Sales Order Item Details,
    Schedule Details,Basic Price data And Reinsert data in the same.
    I am giving u the algo that I have used.
    1.<b>Get the SalesOrder Details</b> for a particular Sales Order using BAPI_SALESORDER_GETLIST(para:customer & sales Org and then deleting unwanted SO data).
    2.<b>Delete</b> the Sales Order <b>Item Details,Schedule Details</b> using BAPI_SALESORDER_CHANGE.
    3.<b>Commit</b> Transaction(<b>If I dont use this commit Error comes in Step No.7 while Commiting</b>)
    using BAPI_TRANSACTION_COMMIT.
    4.Check <b>Return Table</b> of both BAPI_SALESORDER_CHANGE and BAPI_TRANSACTION_COMMIT.
    5.if Step No.4 is <b>Not okay</b> <b>then Rollback</b>(BAPI_TRANSACTION_TRANSACTIN) <b>and Exit</b> <b>else move to step 6</b>.
    6.<b>Add New</b> Sales Order <b>Item Details,Schedule Details, Basic Price</b> using BAPI_SALESORDER_CHANGE.
    7.<b>Commit Transaction</b> using BAPI_TRANSACTION_COMMIT.
    8.<b>Check Return</b> Log of both BAPI_SALESORDER_CHANGE and BAPI_TRANSACTION_COMMIT.
    9.if Step No.9 is okay then Exit else Rollback(BAPI_TRANSACTION_TRANSACTIN) and move to step 10.
    10.Add Old Sales Order Item Details,Schedule Details, Basic Price from Data available in Internal
    table(Filled in step.1 ) using BAPI_SALESORDER_CHANGE.
    11.Commit Transaction using BAPI_TRANSACTION_COMMIT.
         This <b>works fine in 1 server in which I get the message of Incomplete Data,etc...when I make a Sales Order from va01</b>.
    But in another server where I dont this message,I get <b>error in step  7 or 11 as per the flow</b>.
    The return structure of BAPI_TRANSACTION_COMMIT contains error with Message 'Updating was not possible'. Also the message 'Updation was terminated' cms frm the SAP server.  
         What could be the reason?
    Thanx in advance

  • Change sold-to party BAPI_SALESORDER_CHANGE

    Hello,
    Does anyone know how to change partner function AG (sold-to-party) in a sales order header from within ABAP code ?
    I'm using BAPI_SALESORDER_CHANGE function module to change partner functions. It works well for all other partner functions, but for the AG ("sold-to-party") function it yields a message saying that changing AG function is impossible.
    Although changing "sold-to-party" partner function is disabled in user interface (VA02 transaction -> order header details), but the user DOES have the possibility to change "sold-to-party": he can change field KUNNR in main screen of transaction VA02 (this field is mapped to VBAK-KUNNR) - after changing it, the AG partner function in header details changes to the value set in it. Does anyone have an idea how to achieve the same from ABAP code ?
    Regards,
    Flavio.

    REPORT  ZSALESORDER_CHANGE MESSAGE-ID 38.
    Selection Screen Definitions *
    PARAMETERS: p_vbeln TYPE vbap-vbeln OBLIGATORY, "Order Number
    p_posnr TYPE vbap-posnr OBLIGATORY, "Order Item
    p_etenr TYPE vbep-etenr OBLIGATORY, "Schedule Line
    p_reqqty TYPE bapischdl-req_qty OBLIGATORY. " Order Qty
    Internal Tables/Structures/Variables for calling BAPI. *
    DATA: i_hdr TYPE bapisdh1,
    i_hdrx TYPE bapisdh1x,
    i_ret TYPE bapiret2 OCCURS 0 WITH HEADER LINE,
    wa_ret TYPE bapiret2.
    DATA: BEGIN OF i_sched OCCURS 10.
    INCLUDE STRUCTURE bapischdl.
    DATA: END OF i_sched.
    DATA: BEGIN OF i_schedx OCCURS 10.
    INCLUDE STRUCTURE bapischdlx.
    DATA: END OF i_schedx.
    START-OF-SELECTION Event *
    START-OF-SELECTION.
    *" Initialize internal tables.
    REFRESH: i_sched, i_schedx, i_ret.
    CLEAR: i_sched, i_schedx, i_ret.
    *" Fill required ORDER_HEADER_IN data.
    i_hdrx-updateflag = 'U'.
    *" Fill required SCHEDULE_LINES data.
    i_sched-itm_number = p_posnr.
    i_sched-sched_line = p_etenr.
    i_sched-req_qty = p_reqqty.
    i_schedx-updateflag = 'U'.
    i_schedx-itm_number = p_posnr.
    i_schedx-sched_line = p_etenr.
    i_schedx-req_qty = 'X'.
    APPEND i_sched.
    APPEND i_schedx.
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
    EXPORTING
    salesdocument = p_vbeln
    order_header_in = i_hdr
    order_header_inx = i_hdrx
    TABLES
    return = i_ret
    schedule_lines = i_sched
    schedule_linesx = i_schedx.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    LOOP AT i_ret.
    WRITE / i_ret-message.
    ENDLOOP.

  • Error in BAPI_SALESORDER_CHANGE

    I need to post the changed incoterm value by using BAPI_SALESORDER_CHANGE. But everytime I used to get the error:
    Field header_inx-updateflag is not an input field.
    I have written the below mentioned code : 
    *& Report  ZBAPI1                                                      *
    REPORT  ZBAPI1                                  .
    TABLES: VBBE.
    DATA: BEGIN OF ITAB OCCURS 0,
          VBELN LIKE VBBE-VBELN,
          POSNR LIKE VBBE-POSNR,
          END OF ITAB.
    DATA: WA_ITAB LIKE LINE OF ITAB.
    DATA:BEGIN OF I_VBELN OCCURS 0.
            INCLUDE STRUCTURE BAPIVBELN.
    DATA:END OF I_VBELN.
    DATA: WA_I_VBELN LIKE LINE OF I_VBELN.
    DATA:BEGIN OF I_SHEADER OCCURS 0.
            INCLUDE STRUCTURE BAPISDH1X.
    DATA:END OF I_SHEADER.
    DATA: WA_I_SHEADER LIKE LINE OF I_SHEADER.
    DATA:BEGIN OF ZRETURN OCCURS 0.
            INCLUDE STRUCTURE BAPIRET2.
    DATA:END OF ZRETURN.
    DATA: WA_ZRETURN LIKE LINE OF ZRETURN.
    DATA:BEGIN OF I_SITEM OCCURS 0.
            INCLUDE STRUCTURE BAPISDITM.
    DATA:END OF I_SITEM.
    DATA: WA_I_SITEM LIKE LINE OF I_SITEM.
    DATA:BEGIN OF I_SITEMX OCCURS 0.
            INCLUDE STRUCTURE BAPISDITMX.
    DATA:END OF I_SITEMX.
    DATA: WA_I_SITEMX LIKE LINE OF I_SITEMX.
    DATA:BEGIN OF ZRETURN1 OCCURS 0.
            INCLUDE STRUCTURE BAPIRET2.
    DATA:END OF ZRETURN1.
    DATA: WA_ZRETURN1 LIKE LINE OF ZRETURN1.
    PARAMETERS: P_VBELN LIKE BAPIVBELN-VBELN,
                P_INCO1 LIKE BAPISDITEM-INCOTERMS1.
    SELECT VBELN
           POSNR FROM VBBE INTO TABLE ITAB
             WHERE VBELN = P_VBELN.
    DELETE ADJACENT DUPLICATES FROM ITAB COMPARING VBELN POSNR.
    CLEAR: I_SHEADER, I_VBELN, I_SITEM,I_SITEMX,
           ZRETURN, ZRETURN1.
    REFRESH: I_SHEADER, I_VBELN, I_SITEM,I_SITEMX,
             ZRETURN, ZRETURN1.
    LOOP AT ITAB INTO WA_ITAB.
      WA_I_SHEADER-UPDATEFLAG = 'U'.
      WA_I_SHEADER-INCOTERMS1 = 'X'.
      APPEND WA_I_SHEADER TO I_SHEADER.
      WA_I_VBELN-VBELN = WA_ITAB-VBELN.
      APPEND WA_I_VBELN TO I_VBELN.
      WA_I_SITEM-ITM_NUMBER = WA_ITAB-POSNR.
      WA_I_SITEM-INCOTERMS1 = P_INCO1.
      APPEND WA_I_SITEM TO I_SITEM.
      WA_I_SITEMX-ITM_NUMBER = WA_ITAB-POSNR.
      WA_I_SITEMX-INCOTERMS1 = 'X'.
      APPEND WA_I_SITEMX TO I_SITEMX.
      CLEAR: WA_ITAB, WA_I_VBELN, WA_I_SHEADER, WA_ZRETURN, WA_ZRETURN1,
             WA_I_SITEM, WA_I_SITEMX.
    ENDLOOP.
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
      EXPORTING
        SALESDOCUMENT               = I_VBELN
      ORDER_HEADER_IN             =
        ORDER_HEADER_INX            = I_SHEADER
      SIMULATION                  =
      BEHAVE_WHEN_ERROR           = ' '
      INT_NUMBER_ASSIGNMENT       = ' '
      LOGIC_SWITCH                =
      TABLES
        RETURN                      = ZRETURN
        ORDER_ITEM_IN               = I_SITEM
        ORDER_ITEM_INX              = I_SITEMX
      PARTNERS                    =
      PARTNERCHANGES              =
      PARTNERADDRESSES            =
      ORDER_CFGS_REF              =
      ORDER_CFGS_INST             =
      ORDER_CFGS_PART_OF          =
      ORDER_CFGS_VALUE            =
      ORDER_CFGS_BLOB             =
      ORDER_CFGS_VK               =
      ORDER_CFGS_REFINST          =
      SCHEDULE_LINES              =
      SCHEDULE_LINESX             =
      ORDER_TEXT                  =
      ORDER_KEYS                  =
      CONDITIONS_IN               =
      CONDITIONS_INX              =
      EXTENSIONIN                 =
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        WAIT   = ' '
      IMPORTING
        RETURN = ZRETURN1.
    WRITE:/'SY_SUBRC: ', SY-SUBRC.
    LOOP AT ZRETURN.
      WRITE:/ ZRETURN-MESSAGE, ZRETURN-TYPE.
    ENDLOOP.
    IF SY-SUBRC EQ 0.
    LOOP AT ZRETURN1.
        WRITE:/ ZRETURN1-MESSAGE, ZRETURN1-TYPE.
    ENDLOOP.
    ENDIF.
    CLEAR: I_SHEADER, I_VBELN, I_SITEM,I_SITEMX,
           ZRETURN, ZRETURN1.
    REFRESH: I_SHEADER, I_VBELN, I_SITEM,I_SITEMX,
             ZRETURN, ZRETURN1.
    Please do help me in solving the problem.
    thanks & regards,
    nitya

    I have added the order_header_inx but still the same error comes. I am sending you the code :
    *& Report  ZBAPI1                                                      *
    REPORT  ZBAPI1                                  .
    TABLES: VBBE, VBKD.
    DATA: BEGIN OF ITAB OCCURS 0,
          VBELN LIKE VBBE-VBELN,
          POSNR LIKE VBBE-POSNR,
          END OF ITAB.
    DATA: WA_ITAB LIKE LINE OF ITAB.
    DATA: BEGIN OF ITAB1 OCCURS 0.
            INCLUDE STRUCTURE VBKD.
    DATA: END OF ITAB1.
    DATA: ITAB2 LIKE ITAB1.
    DATA:BEGIN OF I_VBELN OCCURS 0.
            INCLUDE STRUCTURE BAPIVBELN.
    DATA:END OF I_VBELN.
    DATA: WA_I_VBELN LIKE LINE OF I_VBELN.
    DATA:BEGIN OF I_SHEADERX OCCURS 0.
            INCLUDE STRUCTURE BAPISDH1X.
    DATA:END OF I_SHEADERX.
    DATA: WA_I_SHEADERX LIKE LINE OF I_SHEADERX.
    DATA: BEGIN OF I_SHEADER OCCURS 0.
            INCLUDE STRUCTURE BAPISDH1.
    DATA: END OF I_SHEADER.
    DATA: WA_I_SHEADER LIKE LINE OF I_SHEADER.
    DATA:BEGIN OF ZRETURN OCCURS 0.
            INCLUDE STRUCTURE BAPIRET2.
    DATA:END OF ZRETURN.
    DATA: WA_ZRETURN LIKE LINE OF ZRETURN.
    DATA:BEGIN OF I_SITEM OCCURS 0.
            INCLUDE STRUCTURE BAPISDITM.
    DATA:END OF I_SITEM.
    DATA: WA_I_SITEM LIKE LINE OF I_SITEM.
    DATA:BEGIN OF I_SITEMX OCCURS 0.
            INCLUDE STRUCTURE BAPISDITMX.
    DATA:END OF I_SITEMX.
    DATA: WA_I_SITEMX LIKE LINE OF I_SITEMX.
    DATA:BEGIN OF ZRETURN1 OCCURS 0.
            INCLUDE STRUCTURE BAPIRET2.
    DATA:END OF ZRETURN1.
    DATA: WA_ZRETURN1 LIKE LINE OF ZRETURN1.
    SELECTION-SCREEN BEGIN OF BLOCK A.
    PARAMETERS: P_VBELN LIKE BAPIVBELN-VBELN,
                P_INCO1 LIKE BAPISDITEM-INCOTERMS1.
    SELECTION-SCREEN END OF BLOCK A.
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF NOT P_VBELN IS INITIAL.
          READ TABLE ITAB1 INTO ITAB2 WITH KEY VBELN = P_VBELN.
          MOVE ITAB2-INCO1 TO P_INCO1.
          MODIFY SCREEN.
        ENDIF.
        EXIT.
      ENDLOOP.
      SELECT * FROM VBKD INTO TABLE ITAB1.
    START-OF-SELECTION.
      SELECT VBELN
             POSNR FROM VBBE INTO TABLE ITAB
               WHERE VBELN = P_VBELN.
      DELETE ADJACENT DUPLICATES FROM ITAB COMPARING VBELN POSNR.
    END-OF-SELECTION.
      CLEAR: I_SHEADERX, I_VBELN, I_SITEM,I_SITEMX,I_SHEADER,
             ZRETURN, ZRETURN1.
      REFRESH: I_SHEADERX, I_VBELN, I_SITEM,I_SITEMX,I_SHEADER,
               ZRETURN, ZRETURN1.
      LOOP AT ITAB INTO WA_ITAB.
        WA_I_SHEADERX-UPDATEFLAG ='U'.
        APPEND WA_I_SHEADERX TO I_SHEADERX.
        WA_I_SHEADER-INCOTERMS1 = P_INCO1.
        APPEND WA_I_SHEADER TO I_SHEADER.
        WA_I_VBELN-VBELN = WA_ITAB-VBELN.
        APPEND WA_I_VBELN TO I_VBELN.
        WA_I_SITEM-ITM_NUMBER = WA_ITAB-POSNR.
        WA_I_SITEM-INCOTERMS1 = P_INCO1.
        APPEND WA_I_SHEADER TO I_SHEADER.
        WA_I_SITEMX-ITM_NUMBER = WA_ITAB-POSNR.
        WA_I_SITEMX-UPDATEFLAG ='U'.
        WA_I_SITEMX-INCOTERMS1 ='X'.
        APPEND WA_I_SITEMX TO I_SITEMX.
        CLEAR: WA_ITAB, WA_I_VBELN, WA_I_SHEADERX, WA_ZRETURN, WA_ZRETURN1,
               WA_I_SITEM, WA_I_SITEMX.
      ENDLOOP.
      CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
        EXPORTING
          SALESDOCUMENT               = I_VBELN
          ORDER_HEADER_IN             = I_SHEADER
          ORDER_HEADER_INX            = I_SHEADERX
    *   SIMULATION                  =
    *   BEHAVE_WHEN_ERROR           = ' '
    *   INT_NUMBER_ASSIGNMENT       = ' '
    *   LOGIC_SWITCH                =
        TABLES
          RETURN                      = ZRETURN
          ORDER_ITEM_IN               = I_SITEM
          ORDER_ITEM_INX              = I_SITEMX
    *   PARTNERS                    =
    *   PARTNERCHANGES              =
    *   PARTNERADDRESSES            =
    *   ORDER_CFGS_REF              =
    *   ORDER_CFGS_INST             =
    *   ORDER_CFGS_PART_OF          =
    *   ORDER_CFGS_VALUE            =
    *   ORDER_CFGS_BLOB             =
    *   ORDER_CFGS_VK               =
    *   ORDER_CFGS_REFINST          =
    *   SCHEDULE_LINES              =
    *   SCHEDULE_LINESX             =
    *   ORDER_TEXT                  =
    *   ORDER_KEYS                  =
    *   CONDITIONS_IN               =
    *   CONDITIONS_INX              =
    *   EXTENSIONIN                 =
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          WAIT
          ='X'
        IMPORTING
          RETURN = ZRETURN1.
      WRITE:/'SY_SUBRC: ', SY-SUBRC.
      LOOP AT ZRETURN.
        WRITE:/ ZRETURN-MESSAGE, ZRETURN-TYPE.
      ENDLOOP.
      IF SY-SUBRC EQ 0.
        LOOP AT ZRETURN1.
          WRITE:/ ZRETURN1-MESSAGE, ZRETURN1-TYPE.
        ENDLOOP.
      ENDIF.
      CLEAR: I_SHEADER, I_VBELN, I_SITEM,I_SITEMX,
             ZRETURN, ZRETURN1.
      REFRESH: I_SHEADER, I_VBELN, I_SITEM,I_SITEMX,
               ZRETURN, ZRETURN1.
    Thanks for your valuable time
    regards,
    nitya

  • Error in BAPI_SALESORDER_CHANGE while updating condition

    Hi,
    I am using this BAPI to change an existing pricing condition. However, I am getting an error  " Manual change of condition type is not possible". I'm not sure whether this is a coding error or is it related to configuration. this is how I am populating the structures:
    so_cond_in-itm_number = wa_vbap1-posnr.
    so_cond_in-cond_count = wa_konv-zaehk.
    so_cond_in-cond_st_no = wa_konv-STUNR.
    so_cond_in-cond_type  = wa_konv-kschl.
    so_cond_in-cond_value = wa_konv-kbetr.
    so_cond_in-currency = wa_konv-waers.
    so_condx_in-itm_number = wa_vbap1-posnr.
    so_condx_in-updateflag = 'U'.
    so_condx_in-cond_st_no = wa_konv-STUNR.
    so_condx_in-cond_count = wa_konv-zaehk.
    so_condx_in-cond_type  = wa_konv-kschl.
    so_condx_in-cond_value = 'X'.
    so_condx_in-currency   = 'X'.
    APPEND so_condx_in.
    CLEAR so_condx_in.
    APPEND so_cond_in.
    CLEAR so_cond_in.
    st_logswitch-cond_handl = 'X'.
    Any help would be appreciated.
    Thanks
    SM

    Hi Sneha ,
    Can you please check the code for using the BAPI_SALESORDER_CHANGE bapi. this is similar to your chase.  Please compare with the passing parameters
    then you will get some idea on your code.
    *- Population of Order Item data
        ls_order_item-itm_number = ls_submit-posnr. "Item
        ls_order_item-prc_group5 = '003'."lc_004.          "Material Group5
        IF ls_submit-zmeng = 0.
          ls_order_item-reason_rej = lc_99.         "Reason for Rejection
        ENDIF.
        APPEND ls_order_item TO lt_order_item.
    *-Population of update flag for Order Item
        ls_order_itemx-itm_number = ls_submit-posnr."Item
        ls_order_itemx-updateflag = lc_u.           "Update flag
        ls_order_itemx-prc_group5 = gc_x.           "Material Group5 update
    *- if the required quanity is zero then reject the line
        IF ls_submit-zmeng = 0.
          ls_order_itemx-reason_rej = gc_x.         "Reason for Rejection
        ENDIF.
        APPEND ls_order_itemx TO lt_order_itemx.
    *-Population of
        ls_schedule_lines-itm_number = ls_submit-posnr.
        ls_schedule_lines-sched_line = ls_submit-etenr.
        ls_schedule_lines-req_qty = ls_submit-zmeng.
        APPEND ls_schedule_lines TO lt_schedule_lines.
    *-Population of update flag for Schedule line data
        ls_schedule_linesx-itm_number = ls_submit-posnr.
        ls_schedule_linesx-sched_line = ls_submit-etenr.
        ls_schedule_linesx-updateflag = lc_u.
        ls_schedule_linesx-req_qty = gc_x.
        APPEND ls_schedule_linesx TO lt_schedule_linesx.
    *- at the end of Order call the BAPI to Update the Order
        ls_order_head-collect_no = ls_submit-vbeln.
         ls_order_headx-updateflag = lc_u.
         ls_order_headx-collect_no = gc_x.
    *- BAPI Call to Update the Order
          CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
            EXPORTING
              salesdocument    = ls_submit-vbeln
              order_header_in  = ls_order_head
              order_header_inx = ls_order_headx
            TABLES
              return           = lt_return
              order_item_in    = lt_order_item
              order_item_inx   = lt_order_itemx
              schedule_lines   = lt_schedule_lines
              schedule_linesx  = lt_schedule_linesx.
    *- Check for the errors and based on that populate the log
          READ TABLE lt_return INTO ls_return WITH KEY type = lc_e.
          IF sy-subrc EQ 0.
            LOOP AT lt_return INTO ls_return WHERE type = lc_e.
              ls_log-excep = 1.
              ls_log-vbeln = ls_submit-vbeln.
              ls_log-message = ls_return-message.
              APPEND ls_log TO gt_log.
              CLEAR: ls_log,
                     ls_submit-vbeln .
            ENDLOOP.
          ELSE.
    *- Commit the Changes
            CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
              EXPORTING
                wait = gc_x.
    *- Check for the success message and populate the log
            LOOP AT lt_return INTO ls_return WHERE number = lc_311.
              ls_log-excep = 3.
              ls_log-vbeln = ls_submit-vbeln.
              ls_log-message = ls_return-message.
              APPEND ls_log TO gt_log.
              CLEAR: ls_log,
                     ls_submit-vbeln .
            ENDLOOP.
          ENDIF.
    Thanks
    Sekhar

  • Problem while changing Sales order using 'BAPI_SALESORDER_CHANGE'

    Hi all,
    Below is my code to update delivery block value:
    FORM call_bapi_salesorder_change .
    DATA:  iv_bapi_view  LIKE order_view.
    DATA: gt_sales_doc TYPE STANDARD TABLE OF sales_key, " Document Numbers to Be Selected
            gt_items TYPE STANDARD TABLE OF bapisdit. " Order Item Data for Document Numbers
    *************************************************************8
    DATA:order_headers_out LIKE bapisdhd OCCURS 0 WITH HEADER LINE.
    DATA:order_header_inx LIKE bapisdh1x.
      DATA: lv_salesdocument LIKE bapivbeln-vbeln.
      data: lv_matnr(10) type c.
      DATA:
    gt_schdule TYPE STANDARD TABLE OF bapischdl, " for gl date & load date
    gt_schdulex TYPE STANDARD TABLE OF bapischdlx, " for partner role and partner function.
            gt_return TYPE STANDARD TABLE OF bapiret2,
            gt_itemin TYPE STANDARD TABLE OF bapisditm,
            gt_iteminx TYPE STANDARD TABLE OF bapisditmx ,
            gt_bapisdh1 TYPE STANDARD TABLE OF  bapisdh1.
      DATA:gs_head_bapi TYPE bapisdh1x,
           gs_schdule TYPE bapischdl,
           gs_schdulex TYPE bapischdlx,
           gs_return TYPE bapiret2,
           gs_itemin TYPE bapisditm,
           gs_iteminx TYPE bapisditmx,
           gs_bapisdh1 TYPE bapisdh1.
      CLEAR : gt_schdule,gt_schdulex,gs_return.
      REFRESH gt_return.
      gs_head_bapi-updateflag = 'U'.
    SORT gt_final BY vbeln.
    CLEAR gs_vbep.
    REFRESH gt_vbep[].
      CLEAR gs_final.
      LOOP AT gt_final1 INTO gs_final.
        gs_itemin-itm_number = gs_final-posnr.
    *move gs_final-matnr to lv_matnr."qx94162
       gs_itemin-material = gs_final-matnr.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
          EXPORTING
            input  = gs_final-matnr
          IMPORTING
            output = gs_final-matnr.
       CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = lv_matnr
        IMPORTING
         output = lv_matnr.
       gs_itemin-material = lv_matnr.
        gs_itemin-material = gs_final-matnr.
        gs_iteminx-itm_number = gs_final-posnr.
        gs_iteminx-updateflag = 'U'.""changed to I
        gs_iteminx-material = 'X'.
        " gs_schdule-req_dlv_bl = gs_final-lifsp. " Delivery block
        gs_schdule-itm_number = gs_final-posnr.
        gs_schdulex-itm_number = gs_final-posnr.
        gs_schdule-sched_line = '0001'.
        gs_schdulex-sched_line = '0001'.
       MOVE gs_final-lifsp to gs_schdule-req_dlv_bl.
        gs_schdule-req_dlv_bl = gs_final-lifsp.
        gs_schdulex-req_dlv_bl = 'X'. " Delivery block
        gs_schdulex-updateflag = 'U'.
        gs_bapisdh1-sales_org = gs_final-vkorg.
        APPEND gs_schdule TO gt_schdule.
        APPEND gs_schdulex TO gt_schdulex.
        APPEND gs_itemin TO gt_itemin.
        APPEND gs_iteminx TO gt_iteminx.
       Append gs_BAPISDH1 to gt_BAPISDH1.
        lv_salesdocument = gs_final-vbeln.
        CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
          EXPORTING
            salesdocument               = lv_salesdocument     
           ORDER_HEADER_IN             = gs_BAPISDH1
            order_header_inx            = gs_head_bapi         
      SIMULATION                  =
      BEHAVE_WHEN_ERROR           = ' '
      INT_NUMBER_ASSIGNMENT       = ' '
      LOGIC_SWITCH                =
      NO_STATUS_BUF_INIT          = ' '
          TABLES
            return                      = gt_return            
       order_item_in               =    gt_itemin
       order_item_inx              = gt_iteminx
      PARTNERS                    =
      PARTNERCHANGES              =
      PARTNERADDRESSES            =
      ORDER_CFGS_REF              =
      ORDER_CFGS_INST             =
      ORDER_CFGS_PART_OF          =
      ORDER_CFGS_VALUE            =
      ORDER_CFGS_BLOB             =
      ORDER_CFGS_VK               =
      ORDER_CFGS_REFINST          =
          schedule_lines                = gt_schdule           
          schedule_linesx               = gt_schdulex          
      ORDER_TEXT                  =
      ORDER_KEYS                  =
      CONDITIONS_IN               =
      CONDITIONS_INX              =
      EXTENSIONIN                 =
      NFMETALLITMS                =
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
        REFRESH: gt_schdule, gt_schdulex, gt_itemin , gt_iteminx.
        LOOP AT gt_return INTO gs_return.
          WRITE / gs_return-message .
        ENDLOOP .
      ENDLOOP.
    ENDFORM.                    " CALL_BAPI_SALESORDER_CHANGE
    When I am using material value as 18342 using CONVERSION_EXIT_ALPHA_OUTPUT:
    ORDER_HEADER_IN has been processed successfully
    Material  is not defined for sales org.A101,  distr.chan.00,  language DE
    Error in ITEM_IN 000030
    SCHEDULE_IN has been processed successfully
    The sales document is not yet complete: Edit data
    Sales document 5010000715 was not changed
    and when I am using CONVERSION_EXIT_ALPHA_INPUT (000000000000018342)or  while debuging when I am changing value to  0018342 :
    I am getting below dump:
    Runtime Errors         DATA_LENGTH_0
    Exception              CX_SY_RANGE_OUT_OF_BOUNDS
    Date and Time          21.10.2010 07:22:17
    Information on where terminated
         Termination occurred in the ABAP program "SAPLVBAK" - in
          "MAP_VBAP_TO_BAPISDIT".
         The main program was "RS_TESTFRAME_CALL ".
         In the source code you have the termination point in line 168
         of the (Include) program "LVBAK001".
         The termination is caused because exception "CX_SY_RANGE_OUT_OF_BOUNDS"
          occurred in
         procedure "MAP_VBAP_TO_BAPISDIT" "(FORM)", but it was neither handled local
          nor declared
         in the RAISING clause of its signature.
         The procedure is in program "SAPLVBAK "; its source code begins in line
         99 of the (Include program "LVBAK001 ".
    The same dump I am getting while executing this above BAPI from SE37 tcode with the same test data.
    but I am able to change it though Va02 tcode.
    Edited by: Arora26 on Oct 21, 2010 7:58 AM

    Hi,
    have you searched for OSS notes? The note 1137897 looks like related to your problem. It mentions different BAPI but I assume that both BAPI reuse same routines and therefore it might solve your problem as well.
    Cheers

  • How to INSERT items using BAPI_SALESORDER_CHANGE

    Hello all,
    i am trying to insert a items into SALESDOCUMENT, i am making the following process.
    i have a SALESDOCUMENT from which a make a copy then i delete all the ITEMS and i try to insert the new one, i am trying to insert a new ITEMS which has relations with another material i am making this because i am expecting when i insert the ITEMS all the material will be recalculated.
    for example
    position     material    quantity.
    10            6050             1     this is the main material
    20           7228             30    This is child record of the main material       
    30           7143               1   this is child record of the main material.
    when i run my function i need to modify the main material as this
      position    material    quantity
           10              6050           2.
    so i am expecting
    position     material    quantity.
    10            6050             2     this is the main material
    20           7228             60    This is child record of the main material       
    30           7143               2   this is child record of the main marial.
      CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
           EXPORTING
                salesdocument    = p_copia      "this is the copy
                order_header_inx = are_headx   " value U
           TABLES
                return           = tab_retor
                order_item_in    = tab_items
                order_item_inx   = tab_itemx
                schedule_lines   = tab_sched
                schedule_linesx  = tab_schex.
    but i really i don`t how to do it, i have been using the bapi  BAPI_SALESORDER_CHANGE, this bapi delete the items this is ok , but  not insert the items that i need , 'does anybody has make something like this, i will really apprecite if someone give a hand, please.

    continue..................................................
    ***GET LIST OF SALESORDER
    CALL FUNCTION 'BAPISDORDER_GETDETAILEDLIST'
      EXPORTING
        i_bapi_view       = i_bapi_view
      TABLES
        sales_documents   = sales_documents
        order_headers_out = order_headers_out
        order_items_out   = order_items_out.
    LOOP AT order_items_out .
      MOVE-CORRESPONDING order_items_out TO order_item_in.
      order_item_in-val_type = pval.
      APPEND order_item_in.
    ENDLOOP.
    LOOP AT order_item_in .
      MOVE-CORRESPONDING order_item_in TO itab_ch.
      APPEND itab_ch.
    ENDLOOP.
    LOOP AT itab_ch .
    *   Header update indicator
      s_order_header_inx-updateflag = 'U'.
      i_order_item_in-itm_number = itab_ch-itm_number .
      i_order_item_in-material =   itab_ch-material.
      i_order_item_in-target_qty = itab_ch-target_qty.
      i_order_item_in-sales_unit = itab_ch-sales_unit.
      i_order_item_in-val_type = itab_ch-val_type.
      i_order_item_inx-updateflag = 'I'.
      i_order_item_inx-itm_number = itab_ch-itm_number .
      i_order_item_inx-material = itab_ch-material.
      i_order_item_inx-target_qty = 'X'.
      i_order_item_inx-sales_unit = itab_ch-sales_unit.
      i_order_item_inx-val_type =  'X'.
      APPEND: i_order_item_in, i_order_item_inx.
    **  Fill schedule lines
      i_sched-itm_number = itab_ch-itm_number .
      i_sched-sched_line = '0001'.
      i_sched-req_qty    = itab_ch-target_qty.
      APPEND i_sched.
    *   Fill schedule line flags
      i_schedx-itm_number  = itab_ch-itm_number .
      i_schedx-sched_line = '0001'.
      i_schedx-updateflag  = 'I'.
      i_schedx-req_qty     = 'X'.
      APPEND i_schedx.
    ENDLOOP.
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
      EXPORTING
        salesdocument     = p_vbeln
        order_header_in   = s_order_header_in
        order_header_inx  = s_order_header_inx
        behave_when_error = 'P'
      TABLES
        return            = it_return
        order_item_in     = i_order_item_in
        order_item_inx    = i_order_item_inx
        schedule_lines    = i_sched
        schedule_linesx   = i_schedx.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    LOOP AT it_return.
      WRITE / it_return-message.
    ENDLOOP.

  • Characteristic values in BAPI_SALESORDER_CHANGE

    Hi,
    I want to add new configurable item in existing sales order with charactersitic values.
    Iam using bapi BAPI_SALESORDER_CHANGE.
    Iam now able to insert configurable item in existing sales order.
    But the characteristic values are not getting stored.
    Latest code is attached. What else is missing for storing characteristic values ?
    select maximum item number in sales order
    SELECT MAX( POSNR ) FROM VBAP CLIENT SPECIFIED
    INTO MAX_POSNR
    WHERE MANDT = SY-MANDT AND
    VBELN = I_SORDER.
    TMP_POSNR = MAX_POSNR + 10.
    WA_HDRX-UPDATEFLAG = 'U'.      "update
    SALES_DOC = I_SORDER.
    item data
    WA_ITEM-ITM_NUMBER = TMP_POSNR.
    WA_ITEM-MATERIAL   = 'LEFTEYE'.
    WA_ITEM-PLANT      = I_STORE.
    WA_ITEM-SHIP_POINT = I_STORE.
    APPEND WA_ITEM TO IT_ITEM.
    WA_ITEMX-ITM_NUMBER = TMP_POSNR.
    WA_ITEMX-UPDATEFLAG = 'I'.      "add
    WA_ITEMX-MATERIAL   = 'X'.
    WA_ITEMX-PLANT      = 'X'.
    WA_ITEMX-SHIP_POINT = 'X'.
    APPEND WA_ITEMX TO IT_ITEMX.
    Schedule lines
    WA_SCHD-ITM_NUMBER = TMP_POSNR.
    WA_SCHD-SCHED_LINE = TMP_POSNR.
    WA_SCHD-REQ_DATE   = SY-DATUM.
    WA_SCHD-REQ_QTY    = 1.
    WA_SCHD-SCHED_TYPE = 'CN'.
    APPEND WA_SCHD TO IT_SCHD.
    WA_SCHDX-ITM_NUMBER = TMP_POSNR.
    WA_SCHDX-SCHED_LINE = TMP_POSNR.
    WA_SCHDX-REQ_DATE   = 'X'.
    WA_SCHDX-REQ_QTY    = 'X'.
    WA_SCHDX-SCHED_TYPE = 'X'.
    APPEND WA_SCHDX TO IT_SCHDX.
    config & characteristic values
    WA_VALUE-CONFIG_ID = '000001'.
    WA_VALUE-INST_ID   = '00000001'.
    WA_VALUE-CHARC     = 'PRES_DIST_SPH'.
    WA_VALUE-VALUE     = '3.2'.
    APPEND WA_VALUE TO IT_VALUE.
    WA_INST-CONFIG_ID  = '000001'.
    WA_INST-INST_ID    = '00000001'.
    WA_INST-OBJ_TYPE   = 'MARA'.
    WA_INST-CLASS_TYPE = '300'.
    WA_INST-OBJ_KEY    = 'LEFTEYE'.
    WA_INST-QUANTITY   = 1.
    WA_INST-QUANTITY_UNIT = 'NO'.
    APPEND WA_INST TO IT_INST.
    WA_REF-POSEX     = TMP_POSNR.
    WA_REF-CONFIG_ID = '000001'.
    WA_REF-ROOT_ID   = '00000001'.
    APPEND WA_REF TO IT_REF.
    WA_PART-CONFIG_ID  = '000001'.
    WA_PART-PARENT_ID  = '00000001'.
    WA_PART-INST_ID    = '00000001'.
    WA_PART-OBJ_TYPE   = 'MARA'.
    WA_PART-CLASS_TYPE = '300'.
    WA_PART-OBJ_KEY    = 'LEFTEYE'.
    APPEND WA_PART TO IT_PART.
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
    EXPORTING
      SALESDOCUMENT      = SALES_DOC
      ORDER_HEADER_INX   = WA_HDRX
    TABLES
      RETURN                         = IT_RET
    ORDER_ITEM_IN             = IT_ITEM
    ORDER_ITEM_INX            = IT_ITEMX
    ORDER_CFGS_REF         = IT_REF
    ORDER_CFGS_PART_OF = IT_PART
    ORDER_CFGS_INST        = IT_INST
    ORDER_CFGS_VALUE    = IT_VALUE
    SCHEDULE_LINES          = IT_SCHD
    SCHEDULE_LINESX        = IT_SCHDX.
    READ TABLE IT_RET INTO WA_RET WITH KEY TYPE = 'E'.
    IF SY-SUBRC = 0.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    ENDIF.
    I get the following messages from BAPI :
    ORDER_HEADER_IN has been processed successfully.
    ITEM_IN has been processed successfully
    The sales document is not yet complete: Edit data
    TIL-Direct Sales TINDC01372 has been saved
    What else is missing ? Any help is appreciated.
    thanks,
    Nagarajan.J

    Hello Nagarajan,
    I have used this BAPI in my last task. You are passing the values correctly. I will tell you why it is giving like that message.
    Whenever we will create a sales order in VA01 transaction, you will get a message like "The sales order is not complete, would you like to EDIT" while saving the sales order.... This is because of not providing complete data required for careation of sales order.
    Try to implement the changes manually in VA02, if you get same errors, then you can find your code is correct.
    Even I got same type of messages when changing a sales order to change the Rejection Reason for the items.
    Best Regards,
    Sasidhar Reddy Matli.
    Edited by: Sasidhar Reddy Matli on Jul 31, 2008 2:20 PM

  • BAPI_SALESORDER_CHANGE is not updating route.

    Hi All,
    I have tried updating the values of route for a particular sales order number. It is updating correctly if they have single line items .If they have multiple line items, only some of them are getting updated. In my case it is updating only the first 2 out of 4 line items. I have been debugging it fr a long time , couldnt get any lead on this.Please help me on this.
    loop at li_order into lwa_order.
                clear lwa_ext_in.
                lwa_ext_in-structure = 'BAPE_VBAP'.
                assign lwa_ext_in-valuepart1 to <fs_bape_vbap> casting.
                <fs_bape_vbap>-vbeln = lwa_order-vbeln.
                <fs_bape_vbap>-posnr = lwa_order-posnr.
                <fs_bape_vbap>-zztruck_id = wa_output-truck_no.
                <fs_bape_vbap>-zzdrop_seq = wa_output-seq_no.
                append lwa_ext_in to li_ext_in.
                clear lwa_ext_in.
                lwa_ext_in-structure = 'BAPE_VBAPX'.
                assign lwa_ext_in-valuepart1 to <fs_bape_vbapx> casting.
                <fs_bape_vbapx>-vbeln = lwa_order-vbeln.
                <fs_bape_vbapx>-posnr = lwa_order-posnr.
                <fs_bape_vbapx>-zztruck_id = 'X'.
                <fs_bape_vbapx>-zzdrop_seq = 'X'.
                append lwa_ext_in to li_ext_in.
              endloop.
            endif.
            call function 'BAPI_SALESORDER_CHANGE'
              exporting
                salesdocument    = wa_output-vbeln
                order_header_in  = wa_order_header_in
                order_header_inx = wa_order_header_inx
              tables
                return           = i_return
                order_item_in    = i_order_item_in
                order_item_inx   = i_order_item_inx
                schedule_lines   = i_schedule_lines
                schedule_linesx  = i_schedule_linesx
                order_text       = i_order_text
                extensionin      = li_ext_in.

    For the four line items im getting these messages.
    ORDER_HEADER_IN has been processed successfully
    ITEM_IN has been processed successfully
    The sales document is not yet complete: Edit data
    Standard Order XYZ 23232 has been saved

  • BAPI_SALESORDER_CHANGE [delete line item and update ]

    LOOP AT itab_ch .
      *IF itab_ch-itm_number = selpos1 AND  delflag = 'X'.*
    *     Delete Line items
        s_order_header_inx-updateflag = 'U'.
        i_order_item_in-itm_number = itab_ch-itm_number.
       schedule_lines-itm_number = itab_ch-itm_number.
        schedule_lines-sched_line = zsd_tab_z-etenr.
        schedule_lines-req_qty = itab_ch-target_qty.
        i_order_item_inx-updateflag = 'D'.
        i_order_item_inx-itm_number = itab_ch-itm_number.
      schedule_linesX-itm_number = itab_ch-itm_number.
      schedule_linesx-sched_line = zsd_tab_z-etenr.
      schedule_linesx-req_qty = 'X'.
      APPEND schedule_lines.
      APPEND schedule_linesx.
        APPEND: i_order_item_in, i_order_item_inx.
    ELSE.
        if itab_ch-item_categ = 'ZFRS'.
    s_order_header_inx-updateflag = 'U'.
        i_order_item_in-itm_number = itab_ch-itm_number.
        i_order_item_in-target_qty =  itab_ch-target_qty.
    schedule_lines-itm_number = itab_ch-itm_number.
    schedule_lines-sched_line = zsd_tab_z-etenr.
        schedule_lines-req_qty = itab_ch-target_qty.
        i_order_item_inx-updateflag = 'U'.
        i_order_item_inx-itm_number = itab_ch-itm_number.
         i_order_item_inx-target_qty =  itab_ch-target_qty.
    schedule_linesX-itm_number = itab_ch-itm_number.
    schedule_linesx-sched_line = zsd_tab_z-etenr.
      schedule_linesx-req_qty = 'X'.
      APPEND schedule_lines.
      APPEND schedule_linesx.
        APPEND: i_order_item_in, i_order_item_inx.
        ENDIF.
        ENDIF.
          ENDLOOP.
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
      EXPORTING
        salesdocument     = vbap-vbeln
        order_header_in   = s_order_header_in
        order_header_inx  = s_order_header_inx
        behave_when_error = 'P'
      TABLES
        return            = it_return
        order_item_in     = i_order_item_in
        order_item_inx    = i_order_item_inx
       schedule_lines     = schedule_lines
       schedule_linesx    = schedule_linesx.
    here line item is delete perfect but when i use  updateflag = 'U'  for other line itme then
    quantity is not modify
    Code Formatted by: Alvaro Tejada Galindo on Dec 26, 2008 10:26 AM

    DATA: s_order_header_in LIKE bapisdh1.
      DATA: s_order_header_inx LIKE bapisdh1x.
      DATA: BEGIN OF i_order_item_in OCCURS 0.
              INCLUDE STRUCTURE bapisditm.
      DATA: END   OF i_order_item_in.
      DATA: BEGIN OF i_order_item_inx OCCURS 0.
              INCLUDE STRUCTURE bapisditmx.
      DATA: END   OF i_order_item_inx.
      DATA: BEGIN OF it_return OCCURS 0.
              INCLUDE STRUCTURE bapiret2.
      DATA: END OF it_return.
      DATA: BEGIN OF i_sched OCCURS 10.
      INCLUDE STRUCTURE bapischdl.
      DATA: END OF i_sched.
      DATA: BEGIN OF i_schedx OCCURS 10.
      INCLUDE STRUCTURE bapischdlx.
      DATA: END OF i_schedx.
    LOOP AT itab_ch .
    s_order_header_inx-updateflag = 'U'.
    IF itab_ch-itm_number = selpos1 AND  delflag = 'X'.
    Delete Line items
        i_order_item_in-itm_number = itab_ch-itm_number.
        i_order_item_in-TARGET_QTY = itab_ch-target_qty.
        i_order_item_inx-updateflag = 'D'.
        i_order_item_inx-itm_number = itab_ch-itm_number.
        i_order_item_inx-TARGET_QTY  = 'X'.
        APPEND: i_order_item_in, i_order_item_inx.
      Fill schedule line flags
      i_sched-itm_number = itab_ch-itm_number.
      i_sched-sched_line = '0001'.
      APPEND i_sched.
      i_schedx-itm_number  = itab_ch-itm_number.
      i_schedx-sched_line  = '0001'.
      i_schedx-updateflag  = 'D'.
      APPEND i_schedx.
    ELSE.
    *****UPDATE TIEM.
      if itab_ch-item_categ = 'ZFRS' .
      Fill schedule lines
      i_sched-itm_number = itab_ch-itm_number.
      i_sched-sched_line = '0001'.
      i_sched-req_qty    = itemdiv.
      APPEND i_sched.
      Fill schedule line flags
      i_schedx-itm_number  = itab_ch-itm_number.
      i_schedx-sched_line  = '0001'.
      i_schedx-updateflag  = 'U'.
      i_schedx-req_qty     = 'X'.
      APPEND i_schedx.
    ENDIF.
    ENDIF.
    ENDLOOP.
    IF errorflag IS INITIAL.
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
      EXPORTING
        salesdocument     = vbap-vbeln
        order_header_in   = s_order_header_in
        order_header_inx  = s_order_header_inx
        behave_when_error = 'P'
      TABLES
        return            = it_return
        order_item_in     = i_order_item_in
        order_item_inx    = i_order_item_inx
       schedule_lines     = i_sched
       schedule_linesx    = i_schedx.
      ENDIF.
      LOOP AT it_return.
    READ TABLE it_return WITH KEY NUMBER = '233'.
          IF sy-subrc = 0.
         CONCATENATE it_return-message  INTO zmsg.
          MESSAGE i000(38) WITH it_return-message .
          EXIT.
           ENDIF.
    ENDLOOP.

  • Change characteristics via BAPI_SALESORDER_CHANGE

    Hello,
    We are trying to change characteristics from within a contract programmatically using bapi BAPI_SALESORDER_CHANGE .
    How ever even after filling all the data, looks like the characteristics doesnot change.
    I did go through an SDN post for the similar issue, though the thread says answered, I do not see a resolution in that thread. Kindly share the resolution, if some one has resolved it.
    Thanks
    HR

    check the following logic
    LOOP AT itab_ch .
    *   Header update indicator
    s_order_header_inx-updateflag = 'U'.
    *  IF itab_ch-itm_number = zitem_num1.
    *   Line items
      i_order_item_in-itm_number = itab_ch-itm_number .
      i_order_item_in-material =   itab_ch-material.
      i_order_item_in-target_qty = itab_ch-target_qty.
      i_order_item_in-sales_unit = itab_ch-sales_unit.
      i_order_item_in-val_type = itab_ch-val_type.
      i_order_item_inx-updateflag = 'I'.
      i_order_item_inx-itm_number = itab_ch-itm_number .
      i_order_item_inx-material = itab_ch-material.
      i_order_item_inx-target_qty = 'X'.
      i_order_item_inx-sales_unit = itab_ch-sales_unit.
      i_order_item_inx-val_type =  'X'.
      APPEND: i_order_item_in, i_order_item_inx.
    **  Fill schedule lines
      i_sched-itm_number = itab_ch-itm_number .
      i_sched-sched_line = '0001'.
      i_sched-req_qty    = itab_ch-target_qty.
      APPEND i_sched.
    *   Fill schedule line flags
      i_schedx-itm_number  = itab_ch-itm_number .
      i_schedx-sched_line = '0001'.
      i_schedx-updateflag  = 'I'.
      i_schedx-req_qty     = 'X'.
      APPEND i_schedx.
    ENDLOOP.
    CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
      EXPORTING
        salesdocument     = p_vbeln
        order_header_in   = s_order_header_in
        order_header_inx  = s_order_header_inx
        behave_when_error = 'P'
      TABLES
        return            = it_return
        order_item_in     = i_order_item_in
        order_item_inx    = i_order_item_inx
        schedule_lines    = i_sched
        schedule_linesx   = i_schedx.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    LOOP AT it_return.
      WRITE / it_return-message.
    ENDLOOP.
    Edited by: Krupaji on Feb 18, 2010 8:45 AM

  • BAPI_SALESORDER_CHANGE problem: change sold-to-party

    Hi guys,
    I am having a problem with my current dev. I am using BAPI_SALESORDER_CHANGE to change the sold-to of a sales order.
    However, I am getting error message: "You cannot change entry in partner function XX".
    Can anyone help me on this?
    Thanks!
    jac

    hi,
    REPORT  ZMYBAPI2                                .
    data : ordervbeln like bapivbeln occurs 0 with header line,
           order_header_in like bapisdh1 occurs 0 with header line,
           order_header_ix like bapisdh1x occurs 0 with header line.
    data : order_items_in like bapisditm  occurs 0 with header line,
           order_items_ix like bapisditmx occurs 0 with header line.
    data : order_partners like bapiparnr occurs 0 with header line.
    data : return1 like bapiret2 occurs 0 with header line.
    data : w_vbeln like bapivbeln occurs 0 with header line.
    data:
         order_schedules_in like bapischdl occurs 0 with header line,
         order_schedules_inx like bapischdlx occurs 0 with header line.
    order_header_in-sales_org  = 'JNJ1'.
    order_header_in-distr_chan = '02'.
    order_header_in-division   = 'J1'.
    order_header_in-sales_off  = 'JNJ1'.
    order_header_in-purch_no_c = 'testbapipo'.
    order_header_in-purch_date = sy-datum.
    order_header_in-req_date_h = sy-datum.
    append order_header_in.
    order_items_in-material      = '000000000000000727'.
    order_items_in-plant         = 'JNJ1'.
      append order_items_in.
      order_partners-partn_role = 'AG'.
      order_partners-partn_numb = '0000000011'.
      append order_partners.
      order_schedules_in-itm_number = '10'.
      order_schedules_in-req_qty   = '10'.
      append order_schedules_in.
    *Updating the indices
      order_header_ix-updateflag = 'U'.
      order_header_ix-sales_org  = 'X'.
      order_header_ix-distr_chan = 'X'.
      order_header_ix-division   = 'X'.
      order_header_ix-sales_off  = 'X'.
      order_header_ix-purch_no_c = 'X'.
      order_header_ix-purch_date = 'X'.
    order_header_ix-req_date_h = 'X'.
      append order_header_ix.
      order_items_ix-updateflag    = 'U'.
      order_items_ix-material      = 'X'.
      order_items_ix-plant         = 'X'.
      order_items_ix-division      = 'X'.
      order_items_ix-target_qu     = 'X'.
      append order_items_ix.
      order_schedules_inx-updateflag        = 'U'.
      order_schedules_inx-itm_number       = 'X'.
      order_schedules_inx-req_qty          = 'x'.
      append order_schedules_inx.
    call function 'BAPI_SALESORDER_CHANGE'
      exporting
       salesdocument               =
       ORDER_HEADER_IN             = order_header_in
        order_header_inx            = order_header_ix
      SIMULATION                  =
      BEHAVE_WHEN_ERROR           = ' '
      INT_NUMBER_ASSIGNMENT       = ' '
      LOGIC_SWITCH                =
      tables
        return                      = return1
       ORDER_ITEM_IN               = order_items_in
       ORDER_ITEM_INX              = order_items_ix
       PARTNERS                    = order_partners
      PARTNERCHANGES              =
      PARTNERADDRESSES            =
      ORDER_CFGS_REF              =
      ORDER_CFGS_INST             =
      ORDER_CFGS_PART_OF          =
      ORDER_CFGS_VALUE            =
      ORDER_CFGS_BLOB             =
      ORDER_CFGS_VK               =
      ORDER_CFGS_REFINST          =
       SCHEDULE_LINES              = order_schedules_in
      SCHEDULE_LINESX             =
      ORDER_TEXT                  =
      ORDER_KEYS                  =
      CONDITIONS_IN               =
      CONDITIONS_INX              =
      EXTENSIONIN                 =
    if sy-subrc ne 0.
        write: return1-message,return1-number,return1-type.
      else.
          write: return1-message,return1-number,return1-type.
          call function 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
         WAIT          =
       IMPORTING
         RETURN        =
      endif.
    This may give an idea, This program written on 4.6B.
    still u r problem not solved, please post the code
    regards,
    pavan

Maybe you are looking for

  • F110 payment proposal: Open Items layout

    Hello Gurus, ive got the payment running fine, but when i generate the payment and go into the open items detailed view of propesed payment i can see a lot of fields with diffrent information. There is one filed named Internal order, but he is empty.

  • 3602i CAP unable to join WLC 5508

    Hi All, Hope to you a very happy new year, I have an (AIR-CAP3602i-E-K9) and I tried to join it to WLC 5508 but I'm facing an error, I get this error from the LAP 1310 console as below: Reading cookie from SEEPROM Base Ethernet MAC address: 60:73:5c:

  • Changing publishing group name in AD

    I need to rename a group in AD. There are packages published for this group. Do I need to unpublish the packages and publish to renamed group. Or APPVMAN will react accordingly. --- When you hit a wrong note its the next note that makes it good or ba

  • Multiple selection in LOV

    Hi, How to implement multiple selection in LOV region-query result table and return multiple values from LOV region back to the main page? Any help in this regard is greatly appreciated.

  • Digital Booklets - are more coming?

    This is probably a question for an Apple representative, but perhaps someone else here has heard through the grapevine. I see in my latest scan of new album offerings on the Itunes Store that 8 of 25 include digital booklets. This is certainly a much