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 "Overwritten protected field" while using BAPI_SALESORDER_CHANGE for custom fields

Former Member
0 Likes
1,228

Hi,

I have been working on updating custom fields in VBAP table using BAPI ":BAPI_SALESORDER_CHANGE" but its displaying an error as " Error at assignment: Overwritten protected field". Below is my code

CLEAR lwa_ordupd .

CLEAR lwa_ordupd .

  LOOP AT it_ordupd INTO lwa_ordupd.

     CLEAR: lwa_extensionin,

            lwa_itemx,

            lwa_item.

   REFRESH : lt_item,

             lt_itemx,

             lt_extensionin.

    lv_vbeln = lwa_ordupd-salesorder.

    lwa_order_header_inx-updateflag = 'U'.

    lwa_item-itm_number = lwa_ordupd-salesorderitem.

    APPEND lwa_item TO lt_item.

    lwa_itemx-itm_number = lwa_ordupd-salesorderitem.

    lwa_itemx-updateflag = 'U'.

    APPEND lwa_itemx TO lt_itemx.

    CLEAR lwa_bape_vbap.

    lwa_bape_vbap-zzotsno       = lwa_ordupd-otsorder.

    lwa_extensionin-structure   = 'BAPE_VBAP'.

    lwa_bape_vbap-vbeln         = lwa_ordupd-salesorder.

    lwa_bape_vbap-posnr         = lwa_ordupd-salesorderitem.

*    lwa_extensionin+30(960)    = lwa_bape_vbap.

    lwa_extensionin+30(10)      = lwa_bape_vbap-vbeln.

    lwa_extensionin+40(6)       = lwa_bape_vbap-posnr.

    lwa_extensionin+46(8)       = lwa_bape_vbap-ZZOTSNO.

    APPEND lwa_extensionin TO lt_extensionin.

    CLEAR lwa_extensionin.

    CLEAR lwa_bape_vbapx.

    lwa_bape_vbapx-zzotsno      = 'X'.

    lwa_extensionin-structure   = 'BAPE_VBAPX'.

    lwa_bape_vbapx-vbeln        = lwa_ordupd-salesorder.

    lwa_bape_vbapx-posnr        = lwa_ordupd-salesorderitem.

    lwa_extensionin+30(10)      = lwa_bape_vbapx-vbeln.

    lwa_extensionin+40(6)       = lwa_bape_vbapx-posnr.

    lwa_extensionin+46(1)       = lwa_bape_vbapx-ZZOTSNO.

    APPEND lwa_extensionin TO lt_extensionin.

    CLEAR lwa_extensionin.

  ENDLOOP.

  CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

    EXPORTING

      salesdocument               = lv_vbeln

*    ORDER_HEADER_IN               = lwa_order_header_in

      order_header_inx            = lwa_order_header_inx

*   SIMULATION                  =

*   BEHAVE_WHEN_ERROR           = ' '

*   INT_NUMBER_ASSIGNMENT       = ' '

*   LOGIC_SWITCH                =

*   NO_STATUS_BUF_INIT          = ' '

    TABLES

      return                      = lt_return

     order_item_in               = lt_item

     order_item_inx              = lt_itemx

*   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                  = lt_extensionin

*   NFMETALLITMS                =         .  IF sy-subrc = 0.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

      EXPORTING

        wait = 'X'.

    .

Thanks in advance,

Sreenish Nair.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
898

Your code is trying to update non editable field. Check field attributes whichever you are trying to chnage.

Thanks,

Chandra.

Hi,

I have been working on updating custom fields in VBAP table using BAPI ":BAPI_SALESORDER_CHANGE" but its displaying an error as " Error at assignment: Overwritten protected field". Below is my code

CLEAR lwa_ordupd .

CLEAR lwa_ordupd .

  LOOP AT it_ordupd INTO lwa_ordupd.

     CLEAR: lwa_extensionin,

            lwa_itemx,

            lwa_item.

   REFRESH : lt_item,

             lt_itemx,

             lt_extensionin.

    lv_vbeln = lwa_ordupd-salesorder.

    lwa_order_header_inx-updateflag = 'U'.

    lwa_item-itm_number = lwa_ordupd-salesorderitem.

    APPEND lwa_item TO lt_item.

    lwa_itemx-itm_number = lwa_ordupd-salesorderitem.

    lwa_itemx-updateflag = 'U'.

    APPEND lwa_itemx TO lt_itemx.

    CLEAR lwa_bape_vbap.

    lwa_bape_vbap-zzotsno       = lwa_ordupd-otsorder.

    lwa_extensionin-structure   = 'BAPE_VBAP'.

    lwa_bape_vbap-vbeln         = lwa_ordupd-salesorder.

    lwa_bape_vbap-posnr         = lwa_ordupd-salesorderitem.

*    lwa_extensionin+30(960)    = lwa_bape_vbap.

    lwa_extensionin+30(10)      = lwa_bape_vbap-vbeln.

    lwa_extensionin+40(6)       = lwa_bape_vbap-posnr.

    lwa_extensionin+46(8)       = lwa_bape_vbap-ZZOTSNO.

    APPEND lwa_extensionin TO lt_extensionin.

    CLEAR lwa_extensionin.

    CLEAR lwa_bape_vbapx.

    lwa_bape_vbapx-zzotsno      = 'X'.

    lwa_extensionin-structure   = 'BAPE_VBAPX'.

    lwa_bape_vbapx-vbeln        = lwa_ordupd-salesorder.

    lwa_bape_vbapx-posnr        = lwa_ordupd-salesorderitem.

    lwa_extensionin+30(10)      = lwa_bape_vbapx-vbeln.

    lwa_extensionin+40(6)       = lwa_bape_vbapx-posnr.

    lwa_extensionin+46(1)       = lwa_bape_vbapx-ZZOTSNO.

    APPEND lwa_extensionin TO lt_extensionin.

    CLEAR lwa_extensionin.

  ENDLOOP.

  CALL FUNCTION 'BAPI_SALESORDER_CHANGE'

    EXPORTING

      salesdocument               = lv_vbeln

*    ORDER_HEADER_IN               = lwa_order_header_in

      order_header_inx            = lwa_order_header_inx

*   SIMULATION                  =

*   BEHAVE_WHEN_ERROR           = ' '

*   INT_NUMBER_ASSIGNMENT       = ' '

*   LOGIC_SWITCH                =

*   NO_STATUS_BUF_INIT          = ' '

    TABLES

      return                      = lt_return

     order_item_in               = lt_item

     order_item_inx              = lt_itemx

*   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                  = lt_extensionin

*   NFMETALLITMS                =         .  IF sy-subrc = 0.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

      EXPORTING

        wait = 'X'.

    .

Thanks in advance,

Sreenish Nair.

2 REPLIES 2
Read only

Former Member
0 Likes
899

Your code is trying to update non editable field. Check field attributes whichever you are trying to chnage.

Thanks,

Chandra.

Read only

0 Likes
898

Hi Chandra,

          My custom field is already in the editable mode. the dump is triggered at a point inside BAPI

* Call SD Sales BAdI

     IF ACTIVE = CHARX.

       CALL METHOD L_SD_SALES_ITEM_EXIT->ITEM_MA

         EXPORTING

           FVBAPKOM  = US_VBAPKOM

           FVBAPKOMX = US_VBAPKOMX

           FVBAK     = VBAK

           F_TABIX   = SVBAP-TABIX

         CHANGING

           FVBAP     = VBAP.

     ENDIF.

* Zusatzdaten übernehmen, wenn nicht initial.

* Anforderung: Die Felder Struktur vbapkoz = vb

     MOVE-CORRESPONDING US_VBAPKOM TO DA_VBAPKOZ

     MOVE-CORRESPONDING US_VBAPKOMX TO DA_VBAPKO

     MOVE-CORRESPONDING VBKD TO DA_VBAPKOZZI.

     MOVE-CORRESPONDING VBAP TO DA_VBAPKOZZI.

     DO.

       ASSIGN COMPONENT SY-INDEX OF STRUCTURE DA

       ASSIGN COMPONENT SY-INDEX OF STRUCTURE DA

       IF SY-SUBRC <> 0.

         EXIT.

       ENDIF.

       IF NOT <X> IS INITIAL.

         ASSIGN COMPONENT SY-INDEX OF STRUCTURE

  <ZI> = <QU>.       "This Point the Dump is getting triggered inside BAPI  sales Order Change

Regards ,

Sreenish Nair