SAP ABAP - Удаление внутренних таблиц

Оператор DELETE используется для удаления одной или нескольких записей из внутренней таблицы. Записи внутренней таблицы удаляются либо путем указания ключа таблицы или условия, либо путем поиска повторяющихся записей. Если внутренняя таблица имеет неуникальный ключ и содержит повторяющиеся записи, первая запись из таблицы удаляется.

Ниже приведен синтаксис использования оператора DELETE для удаления записи или строки из внутренней таблицы.

DELETE TABLE <internal_table> FROM <work_area_itab>.

В приведенном выше синтаксисе выражение <work_area_itab> является рабочей областью, и оно должно быть совместимо с типом внутренней таблицы <internal_table>. Операция удаления выполняется на основе ключа по умолчанию, который можно взять из компонентов рабочей области.

Вы также можете явно указать ключ таблицы в операторе DELETE TABLE, используя следующий синтаксис:

DELETE TABLE <internal_table> WITH TABLE KEY <K1> = <F1>………… <Kn> = <Fn>.

В этом синтаксисе <F1>, <F2> .... <Fn> - это поля внутренней таблицы, а <K1>, <K2> .... <Kn> - ключевые поля таблицы. Оператор DELETE используется для удаления записей или строк таблицы <internal_table> на основе выражений <K1> = <F1>, <K2> = <F2> ... <Kn> = <Fn>.

Note - Если типы данных полей <F1>, <F2> .... <Fn> несовместимы с ключевыми полями <K1>, <K2> ... <Kn>, тогда система SAP автоматически преобразует их в совместимый формат.

пример

REPORT  ZDELETE_DEMO. 
DATA: BEGIN OF Line1, 
ColP TYPE I, 
ColQ TYPE I, 
END OF Line1. 
DATA mytable LIKE HASHED TABLE OF Line1  
WITH UNIQUE KEY ColP. 
DO 8 TIMES. 

Line1-ColP = SY-INDEX. 
Line1-ColQ = SY-INDEX + 4. 
INSERT Line1 INTO TABLE mytable. 
ENDDO. 

Line1-ColP = 1. 
DELETE TABLE mytable: FROM Line1, 
WITH TABLE KEY ColP = 3.
LOOP AT mytable INTO Line1. 

WRITE: / Line1-ColP, Line1-ColQ. 
ENDLOOP.

Приведенный выше код дает следующий вывод -

2         6 
4         8 
5         9 
6         10 
7         11 
8         12

В этом примере mytable имеет два поля: ColP и ColQ. Изначально таблица mytable состоит из восьми строк, где ColP содержит значения 1, 2, 3, 4, 5, 6, 7 и 8. ColQ содержит значения 5, 6, 7, 8, 9, 10, 11 и 12, потому что значения ColP каждый раз увеличиваются на 4.

Оператор DELETE используется для удаления строк из mytable, где значение ключевого поля ColP равно 1 или 3. После удаления поле ColP mytable содержит значения 2, 4, 5, 6, 7 и 8, как показано. на выходе. Поле ColQ содержит значения 6, 8, 9, 10, 11 и 12.