Bonjour à tous !
Aujourd’hui, je me permets de traduire et d’adapter l’aide en ligne SAP et pour vous parler des types et des objets de données ABAP. Le ton du texte va probablement différer un peu de l’habituel, la faute à la traduction de texte officielle, même si je tente de la retravailler un peu.
À noter que la locution « objet de données » peut être comprise plus simplement par « variable ».
Types et Objets de données
Les unités physiques avec lesquelles les instructions ABAP travaillent lors de l’exécution sont appelées objets internes de données de programme. Le contenu d’un objet de données occupe un espace-mémoire dans le programme. Les instructions ABAP accèdent à ces contenus en adressant le nom des objets de données. Par exemple, une instruction peut écrire le contenu d’un objet de données dans une liste ou dans la base de données, elles peuvent l’envoyer ou le recevoir d’un sous-programme, elles peuvent le modifier en lui assignant une nouvelle valeur, et elles peuvent le comparer via des instructions logiques.
Chaque objet de données ABAP possède un ensemble d’attributs techniques, qui sont entièrement et en permanence définis lors de l’exécution d’un programme ABAP. Les attributs techniques d’un objet de données sont : le type de données, la taille du champ, et le nombre de décimal.
Le type de données détermine comment le contenu d’un objet de données est interprété par les instructions ABAP. En plus d’apparaître en tant qu’attributs d’un objet de données, les types de données peuvent être définis de façon indépendante. Vous pouvez alors les utiliser plus tard via un objet de données. Vous pouvez définir des types de données indépendants soit dans la partie déclarative d’un programme ABAP (par l’instruction TYPES), soit dans le dictionnaire de données ABAP.
Les types de donnée que vous utiliserez dans un programme dépendent de la façon dont vous allez utiliser vos objets de données. Le but d’un programme ABAP peut être d’envoyer des données simples vers la base de données, ou de traiter et sortir une grande quantité de données structurées issues de la base de données. L’ABAP contient les types de données suivants :
Types élémentaires prédéfinis ou définis par l’utilisateur
Il y a cinq type de données prédéfinis non numériques : chaîne de caractères (C), chaîne de caractères numériques (N), date (D), heure (T) et hexadécimal (X).
Et trois types de données prédéfinis numériques : entier (I), flottant (F), paquet (P).
La longueur de champ pour les types de données D, F, I et T est fixe. La longueur de champ détermine le nombre d’octets que l’objet de données peut occuper dans la mémoire. Pour les types C, N, X et P, la longueur ne fait pas partie de la définition du type. À la place, vous la définissez lors de la déclaration de l’objet de données dans le programme.
Le type de données P est particulièrement utile pour des calculs précis dans un contexte métier. Lorsque vous définissez un objet de type P, vous précisez également un nombre de décimales.
Vous pouvez également définir vos propres types de données élémentaires en ABAP, en utilisant l’instruction TYPES. Ils seront basés sur les types prédéfinis. Ceci détermine tous les attributs techniques du nouveau type de données. Par exemple, vous pourriez définir un type de données P_2 avec deux décimales, basé sur le type prédéfini P. Vous pourriez alors utiliser ce nouveau type dans les déclarations de données.
Les types de données élémentaires sont utilisés pour définir des objets de données élémentaires individuels. De tels objets sont utilisés pour transférer des données en entrées vers des données de sortie, ou en tant que champs intermédiaires lors des calculs, ou pour stocker des résultats temporaires, etc.
Les types de données agrégés décrits ci-dessous sont composés de types de données élémentaires.
Un type de données agrégé peut être une structure ou une table interne.
Structures
Une structure est une séquence de types de données, définie par l’utilisateur. Elle décrit pleinement le type de donnée. Il est possible d’accéder à l’objet de données en entier, ou par ses composants individuellement. Il n’y a pas de structures prédéfinies en ABAP. Vous devez donc définir vos propres structures, soit dans les programmes ABAP dans lesquels vous souhaitez les utiliser, soit dans le dictionnaire de données ABAP.
Les structures sont utilisées dans les programmes ABAP pour regrouper des zones de travail qui sont logiquement liées. Comme les éléments individuels d’une structure peuvent être de n’importe quel type, et peuvent eux-mêmes être des structures ou des tables internes, les utilisations possibles des structures sont infinies. Par exemple, il est possible d’utiliser une structure avec des types de données élémentaires pour afficher des lignes issues d’une table de la base de données dans un programme. Il est également envisageable d’utiliser des structures contenant des éléments agrégés pour inclure tous les attributs d’un écran ou d’un contrôle dans un seul objet de données.
Tables internes
Une table interne consiste en une série de lignes qui sont toutes du même type de données.
Les tables internes sont caractérisées par :
- leur type de ligne : le type de ligne d’une table interne peut être n’importe quel type de données ABAP – élémentaire, structure ou table interne.
- une clé : la clé d’une table interne est utilisée pour identifier ses entrées. Elle est composée des champs élémentaires de la ligne. Elle peut être unique ou non.
- le type d’accès : la méthode d’accès détermine comment l’ABAP accèdera aux entrées de la table. Il y a trois types d’accès : tables non triées, tables indexées et triées, et tables de hashage. Pour les tables indexées, le système maintient un index linéaire, et donc la table peut être accédée soit via un index de ligne, soit via la clé. Les tables de hashage n’ont pas d’index linéaire. Elles peuvent être accédées uniquement en spécifiant la clé. Le système possède son propre algorithme de hashage pour gérer la table interne.
Les tables internes peuvent être utilisées dès qu’il est nécessaire d’utiliser des données structurées dans un programme. Une utilisation typique d’une table interne est de stocker les données d’une table de la base de données dans un programme.
Types de données référence
Les références sont utilisées pour référer à des objets dans l’ABAP Objet. Les références sont stockées dans des variables références. Le type de données d’une référence détermine comment elle est gérée dans le programme. Il y a différents types pour les classes et les interfaces.
Les variables références en ABAP sont traitées comme les autres objets de données élémentaires. Cela signifie qu’une variable référence peut apparaître comme un composant d’une structure ou d’une table interne, de même qu’indépendamment.
Déclarer les objets de données
Mis à part les paramètres d’interface des sous-programmes, tous les objets de données d’un programme ABAP ou d’un sous-programme sont déclarés dans la partie déclarative. Les instructions déclaratives déterminent le type de données de l’objet, ainsi que les éventuels attributs techniques manquants, comme sa longueur ou le nombre de décimales. Tout ceci se produit avant que le programme soit effectivement exécuté. Une exception à ceci concerne les tables internes.
Lorsqu’une table interne est déclarée, les détails susmentionnés sont précisés. Cependant, il n’est pas obligatoire de préciser la taille globale de l’objet de données. Seule la longueur d’une ligne de la table interne est fixe. Le nombre de lignes (la taille réelle de l’objet de données dans la mémoire) est adapté dynamiquement à l’exécution. En bref, les tables internes peuvent être étendues dynamiquement tout en conservant une structure fixe.
Pour finir, mentionnons que les paramètres d’interface des sous-programmes sont générés en tant qu’objets de données locaux, mais pas avant que le sous-programme soit appelé. Il est possible de définir des attributs techniques pour ces paramètres dans le sous-programme lui-même. Si ce n’est pas le cas, ils adopteront les attributs des paramètres desquels ils reçoivent leur valeur.
Ceci clôt cet article et j’espère qu’il aura été suffisamment clair. Si ce n’est pas le cas, les commentaires sont là pour lever toute ambigüité, n’hésitez pas.