Я использую оператор SELECT для заполнения внутренней таблицы большим количеством записей. Я новичок в ABAP и OpenSQL. Я знаю, как работают курсоры и зачем они мне нужны в этом случае, но не могу найти хороших примеров, показывающих их правильную реализацию. Это код, с которым я работаю:
TYPES: BEGIN OF lty_it_ids,
iteration_id TYPE dat_itr_id,
END OF lty_it_ids.
DATA: lt_it_ids TYPE STANDARD TABLE OF lty_it_ids,
lt_records_to_delete TYPE STANDARD TABLE OF tab_01p.
SELECT 01r~iteration_id
INTO TABLE lt_it_ids
FROM tab_01r AS 01r INNER JOIN tab_01a AS 01a
ON 01r~iteration_id = 01a~iteration_id
WHERE 01a~collection_id = i_collection_id.
IF lt_it_ids IS NOT INITIAL.
SELECT * FROM tab_01p INTO CORRESPONDING FIELDS OF TABLE lt_records_to_delete
FOR ALL ENTRIES IN lt_it_ids
WHERE iteration_id = lt_it_ids-iteration_id AND collection_id = i_collection_id.
IF lt_records_to_delete IS NOT INITIAL.
DELETE tab_01p FROM TABLE lt_records_to_delete.
ENDIF.
ENDIF.
В первом операторе SELECT я заполняю небольшую внутреннюю таблицу некоторыми значениями, которые соответствуют индексу более крупной таблицы. С помощью этих индексов я могу быстрее искать в большей таблице все записи, которые я хочу УДАЛИТЬ. Это второй оператор SELECT, заполняющий большую внутреннюю таблицу (несколько миллионов строк). Все записи из этой (lt_records_to_delete) внутренней таблицы я хочу удалить из таблицы базы данных.
Как я могу ввести курсор в этот код, чтобы он выбирал и удалял записи меньшими партиями?