Можно ли безопасно удалить активную строку при циклическом перемещении по внутренней таблице?
В качестве примера рассмотрим этот код:
LOOP AT lt_itab INTO ls_wa.
IF [...] . " A check that can't be done inside a 'DELETE lt_itab WHERE'
DELETE lt_itab INDEX sy-tabix
" OR
DELETE lt_itab FROM ls_wa.
ENDIF.
ENDLOOP.
Безопасно ли удалять записи, подобные этому, или эта логика не будет вести себя так, как предполагалось?
Должен ли я вместо этого хранить уникальный идентификатор строк во временном itab и запускать a DELETE lt_itab WHERE
после цикла?
Я предполагаю, что операции удаления в записях, отличных от того, который загружен в текущей итерации, определенно вызовут проблемы, но я не уверен, что это допустимая, не говоря уже о хорошей практике.