SAP ABAP - Excluindo Tabelas Internas

A instrução DELETE é usada para excluir um ou mais registros de uma tabela interna. Os registros de uma tabela interna são excluídos especificando-se uma chave ou condição da tabela ou localizando entradas duplicadas. Se uma tabela interna tiver uma chave não exclusiva e contiver entradas duplicadas, a primeira entrada da tabela será excluída.

A seguir está a sintaxe para usar a instrução DELETE para excluir um registro ou linha de uma tabela interna -

DELETE TABLE <internal_table> FROM <work_area_itab>.

Na sintaxe acima, a expressão <work_area_itab> é uma área de trabalho e deve ser compatível com o tipo da tabela interna <internal_table>. A operação de exclusão é executada com base em uma chave padrão que pode ser obtida dos componentes da área de trabalho.

Você também pode especificar uma chave de tabela explicitamente na instrução DELETE TABLE usando a seguinte sintaxe -

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

Nesta sintaxe, <F1>, <F2> .... <Fn> são os campos de uma tabela interna e <K1>, <K2> .... <Kn> são os campos-chave da tabela. A instrução DELETE é usada para excluir os registros ou linhas da tabela <internal_table> com base nas expressões <K1> = <F1>, <K2> = <F2> ... <Kn> = <Fn>.

Note - Se os tipos de dados dos campos <F1>, <F2> .... <Fn> não forem compatíveis com os campos-chave <K1>, <K2> ... <Kn>, o sistema SAP os converterá automaticamente em o formato compatível.

Exemplo

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.

O código acima produz a seguinte saída -

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

Neste exemplo, mytable tem dois campos, ColP e ColQ. Inicialmente, minha tabela é preenchida com oito linhas, onde o ColP contém os valores 1, 2, 3, 4, 5, 6, 7 e 8. O ColQ contém os valores 5, 6, 7, 8, 9, 10, 11 e 12 porque os valores ColP são incrementados em 4 todas as vezes.

A instrução DELETE é usada para excluir as linhas de minha tabela onde o valor do campo-chave ColP é 1 ou 3. Após a exclusão, o campo ColP de minha tabela contém os valores 2, 4, 5, 6, 7 e 8, como mostrado na saída. O campo ColQ contém os valores 6, 8, 9, 10, 11 e 12.