Jelena написала:
Женечка написал(а):
При добавлении в таблицу очередной записи
А можно код в студию?
Женечка написал(а):
к тому моменту в таблице уже Table[1005264x821]
Может стоит также обратить внимание на число 821? Вам действительно все это нужно? Вроде бы "ширина" тоже на объем памяти влияет (или я что-то путаю?).
У меня один раз была проблема - приходилось считывать 1 млн.+ записей из базы в internal table, потом их преобразовывать и создавать практически вторую такую же, только с измененными данными. Программа считывание прошла нормально, но вот на втором миллионе споткнулась. Вылечили тем, что стали стирать первую таблицу сразу же в цикле, при создании второй. Правда там было не 821, а максимум 200...
тут такая фишка не получится. нужно из разных таблиц считывать в одно место, кучу записей, потом их как-то все скопом обратабывать, получая еще одну таблицу, суммарную, и если возникает вопрос - на соседнем экране показывать из чего что получилось.
refresh tab_rec2.
SELECT bsas~BUKRS bsas~HKONT bsas~GJAHR bsas~BELNR bsas~BLDAT
bsas~BUDAT bsas~XBLNR bsas~SHKZG bsas~MWSKZ bsas~DMBTR
bsas~AUGDT bsas~XNEGP bsad~kunnr bkpf~GRPID
FROM bsas AS bsas
Left Outer Join
bsad AS bsad
ON
bsas~bukrs = bsad~bukrs AND
bsas~belnr = bsad~belnr AND
bsas~gjahr = bsad~gjahr
Left Outer Join
bkpf AS bkpf
ON
bsas~bukrs = bkpf~bukrs AND
bsas~belnr = bkpf~belnr AND
bsas~gjahr = bkpf~gjahr
INTO CORRESPONDING FIELDS OF TABLE tab_rec2
WHERE
bsas~hkont IN hkont_r
AND bsas~mwskz in mwskz
and bsas~BUDAT <= data_h and bsas~AUGDT <= data_h
.
LOOP AT tab_rec2 INTO rec
where kunnr in kunnr.
rec-flag = '1'.
rec-belnr_m = rec-belnr.
APPEND rec TO tab_rec.
ENDLOOP.
SELECT bsis~BUKRS bsis~HKONT bsis~GJAHR bsis~BELNR bsis~BLDAT
bsis~BUDAT bsis~XBLNR bsis~SHKZG bsis~MWSKZ bsis~DMBTR
bsis~XNEGP bsid~kunnr bkpf~GRPID
FROM bsis AS bsis
Left Outer Join
bsid AS bsid
ON
bsis~bukrs = bsid~bukrs AND
bsis~belnr = bsid~belnr AND
bsis~gjahr = bsid~gjahr
Left Outer Join
bkpf AS bkpf
ON
bsis~bukrs = bkpf~bukrs AND
bsis~belnr = bkpf~belnr AND
bsis~gjahr = bkpf~gjahr
INTO CORRESPONDING FIELDS OF TABLE tab_rec2
WHERE
bsis~hkont IN hkont_r
and bsis~BUDAT <= data_h
AND bsis~mwskz in mwskz
.
* место, где прога валится в дамп
LOOP AT tab_rec2 INTO rec
where kunnr in kunnr.
rec-flag = '1'.
rec-belnr_m = rec-belnr.
APPEND rec TO tab_rec.
ENDLOOP.
что же касается ширины строки, то там увы все нужное, хотя на 300 символов подвинуть удалось.