SAP ABAP - Création de tables internes

L'instruction DATA est utilisée pour déclarer une table interne. Le programme doit être informé du début et de la fin de la table. Utilisez donc l'instruction BEGIN OF, puis déclarez le nom de la table. Après cela, l'ajout OCCURS est utilisé, suivi d'un nombre, ici 0. OCCURS indique à SAP qu'une table interne est en cours de création et le 0 indique qu'elle ne contiendra aucun enregistrement au départ. Il s'agrandira ensuite au fur et à mesure qu'il sera rempli de données.

Voici la syntaxe -

DATA: BEGIN OF <internal_tab> Occurs 0,

Créons les champs sur une nouvelle ligne. Par exemple, créez 'nom' qui est déclaré comme LIKE ZCUSTOMERS1-name. Créez un autre champ appelé «dob», LIKE ZCUSTOMERS1-dob. Il est utile au départ de donner aux noms de champs dans les tables internes les mêmes noms que les autres champs qui ont été créés ailleurs. Enfin, déclarez la fin de la table interne avec «END OF <tab_internal>». comme indiqué dans le code suivant -

DATA: BEGIN OF itab01 Occurs 0,
   name LIKE ZCUSTOMERS1-name,
   dob LIKE ZCUSTOMERS1-dob, 
END OF itab01.

Ici, «itab01» est un raccourci couramment utilisé lors de la création de tables temporaires dans SAP. La clause OCCURS est utilisée pour définir le corps d'une table interne en déclarant les champs de la table. Lorsque la clause OCCURS est utilisée, vous pouvez spécifier une constante numérique «n» pour déterminer la mémoire par défaut supplémentaire si nécessaire. La taille de mémoire par défaut utilisée par la clause OCCUR 0 est de 8 Ko. La structure de la table interne est maintenant créée et le code peut être écrit pour le remplir avec des enregistrements.

Une table interne peut être créée avec ou sans l'utilisation d'une ligne d'en-tête. Pour créer une table interne avec une ligne d'en-tête, utilisez la clause BEGIN OF avant la clause OCCURS ou la clause WITH HEADER LINE après la clause OCCURS dans la définition de la table interne. Pour créer une table interne sans ligne d'en-tête, utilisez la clause OCCURS sans la clause BEGIN OF.

Vous pouvez également créer une table interne en tant que type de données local (un type de données utilisé uniquement dans le contexte du programme en cours) à l'aide de l'instruction TYPES. Cette instruction utilise la clause TYPE ou LIKE pour faire référence à une table existante.

La syntaxe pour créer une table interne en tant que type de données local est -

TYPES <internal_tab> TYPE|LIKE <internal_tab_type> OF 
   <line_type_itab> WITH <key> INITIAL SIZE <size_number>.

Ici, <internal_tab_type> spécifie un type de table pour une table interne <internal_tab> et <line_type_itab> spécifie le type d'une ligne d'une table interne. Dans l'instruction TYPES, vous pouvez utiliser la clause TYPE pour spécifier le type de ligne d'une table interne en tant que type de données et la clause LIKE pour spécifier le type de ligne en tant qu'objet de données. La spécification d'une clé pour une table interne est facultative et si l'utilisateur ne spécifie pas de clé, le système SAP définit un type de table avec une clé arbitraire.

INITIAL SIZE <size_number> crée un objet de table interne en lui allouant une quantité initiale de mémoire. Dans la syntaxe précédente, la clause INITIAL SIZE réserve un espace mémoire pour les lignes de la table size_number. Chaque fois qu'un objet table interne est déclaré, la taille de la table n'appartient pas au type de données de la table.

Note - Beaucoup moins de mémoire est consommée lorsqu'une table interne est remplie pour la première fois.

Exemple

Step 1- Ouvrez l'éditeur ABAP en exécutant le code de transaction SE38. L'écran initial d'ABAP Editor apparaît.

Step 2 - Dans l'écran initial, entrez un nom pour le programme, sélectionnez le bouton radio Code source et cliquez sur le bouton Créer pour créer un nouveau programme.

Step 3- Dans la boîte de dialogue 'ABAP: Attributs de programme', entrez une brève description du programme dans le champ Titre, sélectionnez l'option 'Programme exécutable' dans le menu déroulant Type de la zone de groupe Attributs. Cliquez sur le bouton Enregistrer.

Step 4 - Écrivez le code suivant dans l'éditeur ABAP.

REPORT ZINTERNAL_DEMO. 
TYPES: BEGIN OF CustomerLine, 
Cust_ID TYPE C, 
Cust_Name(20) TYPE C, 
END OF CustomerLine. 
 
TYPES mytable TYPE SORTED TABLE OF CustomerLine  
WITH UNIQUE KEY Cust_ID. 
WRITE:/'The mytable is an Internal Table'.

Step 5 - Enregistrez, activez et exécutez le programme comme d'habitude.

Dans cet exemple, mytable est une table interne et une clé unique est définie dans le champ Cust_ID.

Le code ci-dessus produit la sortie suivante -

The mytable is an Internal Table.