Qu'est-ce qu'une table interne?
Les TABLEAUX INTERNES sont utilisés pour obtenir des données à partir d'une structure fixe pour une utilisation dynamique dans ABAP. Chaque ligne de la table interne a la même structure de champ. L'utilisation principale des tables internes est le stockage et le formatage des données d'une table de base de données dans un programme.
Dans ce tutoriel, vous apprendrez:
- Qu'est-ce qu'une table interne?
- Qu'est-ce qu'une zone de travail?
- Différence entre une table interne et une zone de travail?
- Types de tables internes
- Création de tables internes
- Remplir les tables internes
- Copie de tables internes
- Lecture interne
- Suppression de tables internes
Qu'est-ce qu'une zone de travail?
Les zones de travail sont des lignes uniques de données. Ils doivent avoir le même format que toutes les tables internes. Il est utilisé pour traiter les données d'une table interne une ligne à la fois.
Différence entre une table interne et une zone de travail?
Une image dit mille mots :-)
Types de tables internes
Il existe deux types de tables internes.
- Tables internes avec ligne HEADER
- Tables internes sans ligne HEADER.
Tables internes avec ligne d'en-tête
- Ici, le système crée automatiquement la zone de travail.
- La zone de travail a le même type de données que la table interne.
- Cette zone de travail s'appelle la ligne HEADER.
- C'est ici que toutes les modifications ou l'une quelconque des actions sur le contenu de la table sont effectuées. Par conséquent, les enregistrements peuvent être directement insérés dans la table ou accessibles directement à partir de la table interne.
Tableaux internes sans ligne d'en-tête :
- Ici, il n'y a pas de zone de travail associée à la table.
- La zone de travail doit être explicitement spécifiée lorsque nous devons accéder à de telles tables.
- Par conséquent, ces tables ne sont pas accessibles directement.
Création de tables internes
Il existe de nombreuses façons de créer une table interne. Regardons-les un par un-
1. En utilisant l'instruction de type
Créons maintenant une table interne itab en utilisant l'instruction TYPE.
La syntaxe est -
Types: début de ligne,colonne1 type I,colonne2 type I,fin de ligne.
Exemple:
TYPES: début de ligne,empno type I,empname (20) type c,fin de ligne.
L'instruction TYPES crée une ligne de structure telle que définie.
Pour créer réellement une table interne, utilisez la commande suivante:
La ligne de type Data itab apparaît 10.
Une table interne itab est créée avec la structure de la ligne. En plus de déclarer la structure d'une table interne, la clause OCCURS définit également le nombre d'entrées de table conservées dans la mémoire principale (dans ce cas 10). Des enregistrements supplémentaires sont écrits dans la zone de pagination et peuvent affecter les performances
2. En faisant référence à une autre table
Vous pouvez créer une table interne en faisant référence à une table existante. La table existante peut être une table SAP standard, une table Z ou une autre table interne.
Syntaxe-
Données[avec ligne d'en-tête].
Exemple-
Ligne DATA itab TYPE OCCURS 10 avec ligne d'en-tête.
Ici, un tableau interne itab est créé de type ligne avec une ligne d'en-tête. Veuillez noter que "avec la ligne d'en-tête" est facultatif
3. En se référant à la
syntaxe de structure existante-
Les donnéesLIKE se produisent n [avec la ligne d'en-tête].
Exemple-
DATA itab COMME sline OCCURS 10.
Ici, une table itab est créée avec une structure identique à celle de sline
4. En créant une nouvelle structure
Créons maintenant une table interne avec une structure qui nous est propre. Ici, le tableau est créé avec une ligne d'en-tête, par défaut .
Syntaxe -
Données: le début desurvient , ,…,Fin de .
Exemple -
Données: Début de itab se produit 10,colonne1 type I,colonne2 (4) type C,column3 comme mara-ernam,Fin de itab.
La table interne itab est créée
Remplir les tables internes
Maintenant que nous avons créé avec succès certaines tables internes, voyons comment les remplir avec certains enregistrements. Il existe différentes méthodes disponibles pour remplir les tableaux 1. Ajouter des données ligne par ligne La première méthode disponible est l'utilisation de l'instruction APPEND.En utilisant l'instruction APPEND, nous pouvons soit ajouter une ligne d'une autre zone de travail à la table interne, soit ajouter une ligne initiale à la table interne…
Syntaxe -
AJOUTER [Ici, la zone de travailÀ / LIGNE INITIALE À] .
La variable système SY-TABIX contient l'index de la ligne ajoutée.
Exemple:
Données: Début de itab se produit 10,col1 type C,col2 type I,fin de itab.Ajoutez la ligne initiale à itab.
Résultats: '' '0'
Les lignes initiales ajoutent une ligne initialisée avec la valeur correcte pour son type à la table. Ici, col1 est un caractère et col2 est un entier. Puis APPEND ligne initiale, ajoute une ligne initialisée par rapport au type de données des colonnes, c'est-à-dire espace pour col1 et 0 pour col2. 2.Utilisation de l'instructionCOLLECT COLLECT est une autre forme d'instruction utilisée pour remplir les tables internes. En général, COLLECT est utilisé lors de l'insertion de lignes dans une table interne avec une clé standard unique.
Syntaxe-
COLLECT [INTO] .
Dans le cas des tableaux avec la ligne d'en-tête, l'option INTO est omise. Supposons qu'il y ait déjà une entrée ayant une clé identique à celle que vous essayez d'ajouter, puis une nouvelle ligne n'est pas ajoutée à la table, mais les champs numériques des deux entrées sont ajoutés et une seule entrée correspondant à la clé est présente . La valeur de SY-TABIX est remplacée par la ligne de l'entrée d'origine. Sinon COLLECT agit comme APPEND et SY-TABIX contient l'index de la ligne traitée. 3 . Utilisation de l'instruction INSERT L'instructionINSERT ajoute une ligne / zone de travail à la table interne. Vous pouvez spécifier la position à laquelle la nouvelle ligne doit être ajoutée à l'aide de la clause INDEX avec l'instruction INSERT.
Syntaxe
INSÉRER [Ici, la zone de travailINTO / INITIAL LINE INTO] [index ].
Copie de tables internes
Le contenu d'une table interne peut être copié dans une autre à l'aide de l'instruction APPEND LINES ou INSERT LINES. Une manière plus simple consiste à utiliser plusieurs des syntaxes suivantes.DÉPLACERvers .OU = .
Ceux-ci copient le contenu de ITAB1 vers ITAB2. Dans le cas de tables internes avec une ligne d'en-tête, nous devons utiliser [] afin de les distinguer de la zone de travail. Ainsi, pour copier le contenu des tables internes avec une ligne d'en-tête, la syntaxe devient,
itab1 [] = itab2 [].
Lire les tableaux internes
Nous sommes maintenant familiarisés avec la création de tables internes et leur remplissage avec des données. Nous allons maintenant voir comment utiliser réellement les données ou récupérer les données des tables internes. 1. Utilisation de Loop -EndloopUne des façons d'accéder ou de lire la table interne est d'utiliser LOOP-ENDLOOP.Syntaxe
LOOP AT[INTO ]… ENDLOOP.
Ici, lorsque vous dites LOOP AT ITABLE, la table interne ITABLE est lue ligne par ligne. Vous pouvez accéder aux valeurs des colonnes de cette ligne pendant n'importe quelle partie de la structure LOOP-ENDLOOP. La valeur de SY-SUBRC est définie sur 0 , même si un seul enregistrement est lu. 2. Utilisation de READL'autre méthode de lecture de la table interne consiste à utiliser l'instruction READ.
Syntaxe-
LIRE LE TABLEAU[INTO ] INDEX .
Cette instruction lit la ligne ou la ligne actuelle comme spécifié par l'index
Suppression de tables internes
Il existe de nombreuses façons de supprimer des lignes d'une table interne. 1.Suppression de lignes dans une boucle.C'est le moyen le plus simple de supprimer des lignes.
Sytaxe
SUPPRIMER.
Cette instruction ne fonctionne que dans une boucle. Il supprime la ligne actuelle. Vous pouvez supprimer les lignes d'une boucle de manière conditionnelle en ajoutant la clause WHERE. 2.Suppression de lignes à l'aide de l'index.
Ceci est utilisé pour supprimer une ligne de la table interne à n'importe quel index connu.
Syntaxe
SUPPRIMERLa ligne avec l'indexINDEX .