2012 Mar 26 3:17 PM
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.
2012 Mar 26 4:13 PM
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.
2012 Mar 26 4:13 PM
Your code is trying to update non editable field. Check field attributes whichever you are trying to chnage.
Thanks,
Chandra.
2012 Mar 27 7:29 AM
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
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |