Не все знают и не все помнят, что случается когда таблица указанная в FOR ALL ENTRIES IN окажется пустой. А этот момент очень важно учитывать, как в целях корректной выборки данных, так и в целях оптимизации. Собственно, вся информация есть в справке, но кто ее читает))
Проведем эксперимент, сделаем выборку из таблицы по ключу
1 2 3 |
SELECT * FROM zmm_test INTO TABLE @DATA(lt_res_1) WHERE rsnum = '14661'. |
В выборке окажутся только записи с rsnum = '14661' (в нашем случае это 1 запись)
Теперь добавим FOR ALL ENTRIES IN причем таблица lt_rspos будет пустая.
1 2 3 4 5 6 |
DATA lt_rspos TYPE RANGE OF rspos. "оставим пустой SELECT * FROM zmm_test INTO TABLE @DATA(lt_res) FOR ALL ENTRIES IN @lt_rspos WHERE rsnum = '14661' AND rspos = @lt_rspos-low. |
На выходе мы увидим 10 записей, т.к. если таблица указанная в FOR ALL ENTRIES IN пустая условие WHERE игнорируется полностью, и мы получим все, что лежит в рамках манданта.