SAP ABAP - Variables

Les variables sont des objets de données nommés utilisés pour stocker des valeurs dans la zone de mémoire allouée d'un programme. Comme son nom l'indique, les utilisateurs peuvent modifier le contenu des variables à l'aide d'instructions ABAP. Chaque variable dans ABAP a un type spécifique, qui détermine la taille et la disposition de la mémoire de la variable; la plage de valeurs pouvant être stockées dans cette mémoire; et l'ensemble des opérations qui peuvent être appliquées à la variable.

Vous devez déclarer toutes les variables avant de pouvoir les utiliser. La forme de base d'une déclaration de variable est -

DATA <f> TYPE <type> VALUE <val>.

Ici <f> spécifie le nom d'une variable. Le nom de la variable peut comporter jusqu'à 30 caractères. <type> spécifie le type de variable. Tout type de données avec des attributs techniques entièrement spécifiés est appelé <type>. Le <val> spécifie la valeur initiale de la variable of <f>. Si vous définissez une variable élémentaire de longueur fixe, l'instruction DATA remplit automatiquement la valeur de la variable avec la valeur initiale spécifique au type. Les autres valeurs possibles pour <val> peuvent être une clause littérale, constante ou explicite, telle que Is INITIAL.

Voici des exemples valides de déclarations de variables.

DATA d1(2) TYPE C.  
DATA d2 LIKE d1.  
DATA minimum_value TYPE I VALUE 10.

Dans l'extrait de code ci-dessus, d1 est une variable de type C, d2 est une variable de type d1 et minimum_value est une variable de type entier ABAP I.

Ce chapitre explique les différents types de variables disponibles dans ABAP. Il existe trois types de variables dans ABAP -

  • Variables statiques
  • Variables de référence
  • Variables système

Variables statiques

  • Les variables statiques sont déclarées dans des sous-programmes, des modules fonction et des méthodes statiques.

  • La durée de vie est liée au contexte de la déclaration.

  • Avec l'instruction 'CLASS-DATA', vous pouvez déclarer des variables dans les classes.

  • L'instruction 'PARAMETERS' peut être utilisée pour déclarer les objets de données élémentaires liés aux champs de saisie sur un écran de sélection.

  • Vous pouvez également déclarer les tables internes liées aux champs de saisie sur un écran de sélection à l'aide de l'instruction 'SELECT-OPTIONS'.

Voici les conventions utilisées pour nommer une variable -

  • Vous ne pouvez pas utiliser de caractères spéciaux tels que "t" et "," pour nommer des variables.

  • Le nom des objets de données prédéfinis ne peut pas être modifié.

  • Le nom de la variable ne peut pas être le même que n'importe quel mot clé ou clause ABAP.

  • Le nom des variables doit transmettre la signification de la variable sans nécessiter d'autres commentaires.

  • Les traits d'union sont réservés pour représenter les composants des structures. Par conséquent, vous êtes censé éviter les tirets dans les noms de variables.

  • Le caractère de soulignement peut être utilisé pour séparer les mots composés.

Ce programme montre comment déclarer une variable à l'aide de l'instruction PARAMETERS -

REPORT ZTest123_01. 
PARAMETERS: NAME(10) TYPE C, 
CLASS TYPE I, 
SCORE TYPE P DECIMALS 2, 
CONNECT TYPE MARA-MATNR.

Ici, NAME représente un paramètre de 10 caractères, CLASS spécifie un paramètre de type entier avec la taille par défaut en octets, SCORE représente un paramètre de type condensé avec des valeurs jusqu'à deux décimales et CONNECT fait référence au type MARA-MATNF du dictionnaire ABAP .

Le code ci-dessus produit la sortie suivante -

Variables de référence

La syntaxe pour déclarer les variables de référence est -

DATA <ref> TYPE REF TO <type> VALUE IS INITIAL.
  • L'ajout REF TO déclare une variable de référence réf.

  • La spécification après REF TO spécifie le type statique de la variable de référence.

  • Le type statique restreint l'ensemble des objets auxquels <ref> peut faire référence.

  • Le type dynamique de variable de référence est le type de données ou la classe auquel elle fait actuellement référence.

  • Le type statique est toujours plus général ou identique au type dynamique.

  • L'ajout de TYPE est utilisé pour créer un type de référence lié et comme valeur de départ, et seul IS INITIAL peut être spécifié après l'ajout de VALUE.

Exemple

CLASS C1 DEFINITION. 
PUBLIC SECTION. 
DATA Bl TYPE I VALUE 1. 
ENDCLASS. DATA: Oref TYPE REF TO C1 , 
Dref1 LIKE REF TO Oref, 
Dref2 TYPE REF TO I . 
CREATE OBJECT Oref. 
GET REFERENCE OF Oref INTO Dref1. 
CREATE DATA Dref2. 
Dref2→* = Dref1→*→Bl.
  • Dans l'extrait de code ci-dessus, une référence d'objet Oref et deux variables de référence de données Dref1 et Dref2 sont déclarées.

  • Les deux variables de référence de données sont entièrement typées et peuvent être déréférencées à l'aide de l'opérateur de déréférencement → * aux positions d'opérande.

Variables système

  • Les variables système ABAP sont accessibles depuis tous les programmes ABAP.

  • Ces champs sont en fait remplis par l'environnement d'exécution.

  • Les valeurs de ces champs indiquent l'état du système à un moment donné.

  • Vous pouvez trouver la liste complète des variables système dans la table SYST de SAP.

  • Les champs individuels de la structure SYST sont accessibles en utilisant «SYST-» ou «SY-».

Exemple

REPORT Z_Test123_01. 

WRITE:/'SY-ABCDE', SY-ABCDE,       
      /'SY-DATUM', SY-DATUM, 
      /'SY-DBSYS', SY-DBSYS, 
      /'SY-HOST ', SY-HOST, 
      /'SY-LANGU', SY-LANGU,
      /'SY-MANDT', SY-MANDT,
      /'SY-OPSYS', SY-OPSYS,
      /'SY-SAPRL', SY-SAPRL,
      /'SY-SYSID', SY-SYSID,
      /'SY-TCODE', SY-TCODE,
      /'SY-UNAME', SY-UNAME,
      /'SY-UZEIT', SY-UZEIT.

Le code ci-dessus produit la sortie suivante -

SY-ABCDE ABCDEFGHIJKLMNOPQRSTUVWXYZ  
SY-DATUM 12.09.2015 
SY-DBSYS ORACLE                   
SY-HOST sapserver 
SY-LANGU EN 
SY-MANDT 800 
SY-OPSYS Windows NT 
SY-SAPRL 700 
SY-SYSID DMO 
SY-TCODE SE38 
SY-UNAME SAPUSER 
SY-UZEIT 14:25:48