Les tables internes en ABAP

Déclarers des tables internes en ABAP
Déclarers des tables internes en ABAP

Bonjour !

En jettant un oeil aux rapports de Google Analytics, je me suis aperçu que l’on était arrivé sur ce blog en recherchant « comment declarer une table interne en abap ». Je ne sais pas si le visiteur reviendra, mais je vais tâcher de lui répondre…

C’est très simple !

La première étape consiste à déterminer la structure de la table interne.
Il peut s’agir du copie d’une table de la base de donnée ou d’une structure du dictionnaire de données, ou bien il s’agit d’une structure purement temporaire à l’usage unique du programme qui va l’utiliser.

Pour cette dernière possibilité, il faut au préalable déclarer cette structure, par exemple de la façon suivante :
TYPES :
BEGIN OF ty_foo,
id TYPE guid,
field1 TYPE string,
field2 TYPE int4,
field3 TYPE but000-partner,
END OF ty_foo.

Avec ceci, on obtient un type nommé ty_foo qui nous servira à déclarer notre table interne.

La seconde étape, et la dernière, nécessite de connaître l’usage qui va être fait de cette table interne.
En effet, en ABAP il existe trois types de tables internes :

  • standard : aucun tri, pas de clé a priori
  • sorted : comme son nom l’indique, la table sera triée selon une clé définie lors de la déclaration
  • hashed : ici chaque ligne sera identifiée par une clé unique, utilisée pour déterminer sa position en mémoire.

La déclaration proprement dite de la table interne se fera de la façon suivante :
DATA t_bar TYPE STANDARD|SORTED|HASHED TABLE OF ty_foo éventuellement avec WITH UNIQUE|NON-UNIQUE KEY {liste des champs clés}.

Table interne STANDARD
Si la table interne n’est pas trés volumineuse, que différentes opérations lui seront appliquées (insertions, modifications, tris, boucle…), il vaut mieux opter pour ce type de table. Il n’y aura pas de perte de temps liée à au tri de la table après chaque mise à jour. Il sera en outre possible d’effectuer des tris multiples sur une table standard, de façon descendante également, ce que ne permettent pas les autres types de tables internes.

Table interne SORTED
Une telle table interne doit être déclarée avec une clé, unique ou non, et sera en permanence triée selon cette clé (en tri ascendant). Pour des tables volumineuses qui seront principalement accédées de façon indexée, il faut choisir ce type de table. Si le but est simplement de boucler sans critère, autant conserver une table standard. La table SORTED permet des recherches dichotomiques implicites (faisable explicitement sur une table standard à condition de la trier auparavant).

Table interne HASHED
L’intérêt de ce type de table est que le temps d’accès à un enregistrement sera constant, quelque soit le nombre d’entrées dans la table interne. Car la position d’un enregistrement est calculée par un algorithme en fonction de la clé du-dit enregistrement. Ce type de table est à utiliser sur des tables très volumineuses sur lesquelles il n’y aura que des accès uniques (pas de boucles par exemple).

Comme annoncé, rien de très compliqué en somme. La seule subtilité résidant dans le choix du type de la table interne, qui est, je le rappelle, fonction de l’utilisation qui en sera faite. J’espère avoir été clair, que l’on n’hésite pas à me solliciter si besoin !

2 réflexions au sujet de « Les tables internes en ABAP »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *