artyom написал:
onics написал(а):
select *
from bseg
where bukrs = be and
gjahr = god and
belnr in dok_s and - здесь зависает если dok_s имеет более одного значения.
hkont in bschet_s .
clear t_bseg.
move-corresponding bseg to t_bseg.
collect t_bseg.
endselect.
про * - это совершенно без разницы для BSEG, в любом случае на aplication передается vardata целиком.
А select лучше поделить на кучу мелких.
Также было бы неплохо использовать не bseg, а вторичные индексы. При этом может имеет смысл пойти через BKPF, в этом случае уже нельзя использовать *, но тут зависит от конкретного случая - может по вторичным индексам можно использовать sum.
Удачи
Действительно лучше сначала прочитать BKPF, а уж затем BSEG. В общем случае что-то типа :
1. Читаем BKPF
select * into table i_bkpf from bkpf where bukrs = be
and belnr in dok_s
and gjahr = god.
2. Читаем BSEG
select * into table i_bseg from bseg
for all entries in i_bkpf where bukrs = i_bkpf-bukrs
and belnr = i_bkpf-belnr
and gjahr = i_bkpf-gjahr.
3. Обрабатываем i_bseg