Lo que ralentiza muchisimo es el
LOOP AT gt_bkpf.
SELECT * APPENDING TABLE gt_bseg
FROM bseg
WHERE bukrs = gt_bkpf-bukrs
AND belnr = gt_bkpf-belnr
AND gjahr = gt_bkpf-gjahr
AND hkont IN p_hkont.
ENDLOOP.
deberias utilizar FOR ALL ENTRIES
SELECT *
APPENDING TABLE gt_bseg
FROM bseg
FOR ALL ENTRIES IN gt_bkpf
WHERE bukrs = gt_bkpf-bukrs
AND belnr = gt_bkpf-belnr
...
Otra cosa que mejorara el rendimiento es que en lugar de hacer SELECT * solo cojas los campos que necesitas y los seleccionas en el mismo orden en el que estan definidos en la tabla
|