Hello,
I am trying to delete delivery blocks for sub components in user exit USEREXIT_MOVE_FIELD_TO_VBEP.
I want that when the delivery block is deleted in the main component all sub components should be deleted to.
This works and also in debugger I see that all delivery block in XVBEP[] are deleted. But when I reopen the order delivery blocks are there but only for schedule line 1.

Delete block in main component

XVBEP[] seems to be good. All delivery blocks has been deleted for both schedule lines:

After reopen via VA02: block is still set in 1st schedule line.
Can someone help me on this?
Code:
CALL FUNCTION 'Z_V_CHANGE_DEL_BLOCK_SUBCOMP'
EXPORTING
it_vbap = xvbap[]
is_vbep = vbep
it_vbep_old = yvbep[]
iv_del_block = 'Z9' "should only be done when this block is deleted
CHANGING
ct_vbep = xvbep[].
--------------------------------------------------------------------------------------------------
FUNCTION z_v_change_del_block_subcomp.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(IT_VBAP) TYPE VA_VBAPVB_T
*" REFERENCE(IS_VBEP) TYPE VBEP
*" REFERENCE(IT_VBEP_OLD) TYPE VA_VBEPVB_T
*" REFERENCE(IV_DEL_BLOCK) TYPE VBEP-LIFSP OPTIONAL
*" REFERENCE(IV_ONLY_HIGHEST) TYPE ABAP_BOOL DEFAULT ABAP_TRUE
*" CHANGING
*" REFERENCE(CT_VBEP) TYPE VA_VBEPVB_T
*"----------------------------------------------------------------------
DATA: ls_vbep_old TYPE vbepvb,
ls_vbap TYPE vbapvb,
lv_posnr TYPE vbap-posnr.
FIELD-SYMBOLS: <ls_vbep> TYPE vbepvb.
IF iv_del_block IS NOT INITIAL.
READ TABLE it_vbep_old WITH KEY posnr = is_vbep-posnr lifsp = iv_del_block TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
RETURN. "Block was different then import block
ENDIF.
ENDIF.
READ TABLE it_vbap INTO ls_vbap WITH KEY posnr = is_vbep-posnr.
IF sy-subrc <> 0.
RETURN.
ENDIF.
"Only change delivery block when changed on conversion kit
IF ls_vbap-uepos IS NOT INITIAL.
MESSAGE ....
RETURN. "Changed at sub component level. Do nothing
ELSE.
"Check if material has subcomponents
READ TABLE it_vbap WITH KEY uepos = is_vbep-posnr TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
RETURN. "Material does not has sub components. Do nothing
ENDIF.
ENDIF.
lv_posnr = is_vbep-posnr.
PERFORM clear_del_block USING it_vbap
CHANGING ct_vbep
lv_posnr.
ENDFUNCTION.
--------------------------------------------------------------------------------------------------
FORM clear_del_block USING ut_vbap TYPE va_vbapvb_t
CHANGING ct_vbep TYPE va_vbepvb_t
cv_posnr TYPE vbap-posnr.
DATA: ls_vbap TYPE vbapvb.
FIELD-SYMBOLS: <ls_vbep> TYPE vbepvb.
LOOP AT ut_vbap INTO ls_vbap WHERE uepos = cv_posnr.
LOOP AT ct_vbep ASSIGNING <ls_vbep> WHERE posnr = ls_vbap-posnr.
CLEAR: <ls_vbep>-lifsp.
ENDLOOP.
"Check if item has subcomponents
READ TABLE ut_vbap WITH KEY uepos = ls_vbap-posnr TRANSPORTING NO FIELDS.
IF sy-subrc = 0.
cv_posnr = ls_vbap-posnr.
PERFORM clear_del_block USING ut_vbap
CHANGING ct_vbep
cv_posnr.
ENDIF.
ENDLOOP.
ENDFORM. " CLEAR_DEL_BLOCK