SAP ABAP - Suppression de tables internes

L'instruction DELETE est utilisée pour supprimer un ou plusieurs enregistrements d'une table interne. Les enregistrements d'une table interne sont supprimés soit en spécifiant une clé ou une condition de table, soit en trouvant des entrées en double. Si une table interne a une clé non unique et contient des entrées en double, la première entrée de la table est supprimée.

Voici la syntaxe pour utiliser l'instruction DELETE pour supprimer un enregistrement ou une ligne d'une table interne -

DELETE TABLE <internal_table> FROM <work_area_itab>.

Dans la syntaxe ci-dessus, l'expression <work_area_itab> est une zone de travail et elle doit être compatible avec le type de la table interne <internal_table>. L'opération de suppression est effectuée sur la base d'une clé par défaut pouvant être extraite des composants de l'espace de travail.

Vous pouvez également spécifier une clé de table explicitement dans l'instruction DELETE TABLE en utilisant la syntaxe suivante -

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

Dans cette syntaxe, <F1>, <F2> .... <Fn> sont les champs d'une table interne et <K1>, <K2> .... <Kn> sont les champs clés de la table. L'instruction DELETE est utilisée pour supprimer les enregistrements ou les lignes de la table <internal_table> en fonction des expressions <K1> = <F1>, <K2> = <F2> ... <Kn> = <Fn>.

Note - Si les types de données des champs <F1>, <F2> .... <Fn> ne sont pas compatibles avec les champs clés <K1>, <K2> ... <Kn>, le système SAP les convertit automatiquement en le format compatible.

Exemple

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.

Le code ci-dessus produit la sortie suivante -

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

Dans cet exemple, mytable a deux champs, ColP et ColQ. Initialement, mytable contient huit lignes, où le ColP contient les valeurs 1, 2, 3, 4, 5, 6, 7 et 8. Le ColQ contient les valeurs 5, 6, 7, 8, 9, 10, 11 et 12 car les valeurs ColP sont incrémentées de 4 à chaque fois.

L'instruction DELETE est utilisée pour supprimer les lignes de mytable où la valeur du champ de clé ColP est 1 ou 3. Après la suppression, le champ ColP de mytable contient les valeurs 2, 4, 5, 6, 7 et 8, comme indiqué dans la sortie. Le champ ColQ contient les valeurs 6, 8, 9, 10, 11 et 12.