Hola,
Lo primero; creo que en tu loop borras el registro al uqe apunta el field-symbol y no sé si eso te puede dar problemas.
Segundo te pongo tu codigo modificado, creo que el resultado es el mismo, a ver si te vale:
LOOP AT gt_mseg ASSIGNING <gfs_mseg> WHERE bwart IN lr_bwart.
IF <gfs_mseg>-matnr = <gfs_mseg>-ummat AND
<gfs_mseg>-charg = <gfs_mseg>-umcha AND
<gfs_mseg>-werks = <gfs_mseg>-umwrk AND
<gfs_mseg>-umlgo IN s_lgort.
append <gfs_mseg> to gt_mseg_aux.
ENDIF.
ENDLOOP.
sort gt_mseg_aux by mblnr mjjahr zeile.
sort gt_mseg by mblnr mjjahr zeile.
LOOP AT gt_mseg_aux into wa_mseg.
IF wa_mseg-matnr = wa_mseg-ummat AND
wa_mseg-charg = wa_mseg-umcha AND
wa_mseg-werks = wa_mseg-umwrk AND
wa_mseg-umlgo IN s_lgort.
DELETE gt_mseg WHERE mblnr = wa_mseg-mblnr
AND mjahr = wa_mseg-mjahr
AND zeile = wa_mseg-zeile.
ENDIF.
ENDLOOP.
Espero que te sirva de ayuda y mejore el rendimiento
__________________
Turu
|