ABAP CONSTANTS : Syntaxe, déclaration et exemples d application

Catégorie
ABAP-Statements
Publié
Auteur
Johannes

L’instruction CONSTANTS sert à déclarer des constantes en ABAP. Une constante est un objet de données nommé dont la valeur est fixée lors de la déclaration et ne peut plus être modifiée pendant toute la durée d’exécution du programme.

L’utilisation de constantes présente plusieurs avantages :

  1. Lisibilité : Le code devient plus compréhensible lorsqu’on utilise des noms explicites au lieu de valeurs “magiques” (par ex. des nombres ou des lettres individuelles) (par ex. c_status_valide au lieu de 'V').
  2. Maintenabilité : Si une valeur fixe change (par ex. une limite ou un taux de TVA), elle ne doit être modifiée qu’à un seul endroit central – dans la déclaration CONSTANTS – et non à chaque endroit du code où elle est utilisée.
  3. Sécurité : Elles protègent contre la modification accidentelle de valeurs fixes pendant l’exécution du programme. Toute tentative d’assigner une nouvelle valeur à une constante entraîne une erreur de syntaxe.

Syntaxe

Il existe différentes façons de déclarer des constantes :

1. Déclaration d’une constante unique

CONSTANTS <nom_constante> TYPE <type_donnees> [LENGTH <longueur>] [DECIMALS <decimales>]
VALUE <valeur> | IS INITIAL.
  • <nom_constante> : Le nom que la constante doit recevoir (doit suivre les conventions de nommage ABAP).
  • TYPE <type_donnees> : Le type de données ABAP (par ex. I, P, C, STRING, D, T, un type du dictionnaire comme T001-BUTXT ou un type auto-défini).
  • LENGTH <longueur> : Indication optionnelle de longueur pour les types comme C, N, X, P.
  • DECIMALS <decimales> : Nécessaire pour les nombres packed (type P), pour définir le nombre de décimales.
  • VALUE <valeur> : Obligatoire (sauf pour VALUE IS INITIAL). C’est ici que la valeur fixe et immuable est assignée. La valeur doit correspondre au type de données. Ce peut être un littéral (par ex. 100, 'Bonjour', '19.99') ou une autre constante déjà définie.
  • VALUE IS INITIAL : Assigne à la constante la valeur initiale spécifique au type (par ex. 0 pour I, espaces pour C, chaîne vide pour STRING).

2. Déclaration de plusieurs constantes (instruction chaînée)

CONSTANTS: <const1> TYPE <type1> VALUE <valeur1>,
<const2> TYPE <type2> VALUE <valeur2>,
... .

Avec un deux-points après CONSTANTS, plusieurs constantes peuvent être déclarées séparées par des virgules. L’instruction se termine par un point.

3. Déclaration d’une structure constante

CONSTANTS: BEGIN OF <nom_structure>,
<composant1> TYPE <type1> VALUE <valeur1>,
<composant2> TYPE <type2> VALUE <valeur2>,
...
END OF <nom_structure>.

Ceci permet de définir une structure dont tous les composants ont des valeurs constantes. L’accès se fait ensuite via <nom_structure>-<composantN>.

Exemples

1. Constantes simples

CONSTANTS c_max_longueur TYPE i VALUE 255.
CONSTANTS c_nom_app TYPE string VALUE `Mon Super Report`.
CONSTANTS c_espace TYPE c LENGTH 1 VALUE ' '. " ou VALUE IS INITIAL
CONSTANTS c_vrai TYPE abap_bool VALUE abap_true. " Utilisation des constantes booléennes ABAP

2. Constante avec décimales (Type P)

CONSTANTS c_tva_normal TYPE p LENGTH 8 DECIMALS 2 VALUE '0.20'. " 20% TVA

3. Instruction chaînée pour plusieurs constantes

CONSTANTS: c_status_nouveau TYPE c LENGTH 1 VALUE 'N',
c_status_en_cours TYPE c LENGTH 1 VALUE 'E',
c_status_termine TYPE c LENGTH 1 VALUE 'T',
c_euro TYPE waers VALUE 'EUR'.

4. Structure constante

CONSTANTS: BEGIN OF c_couleurs,
rouge TYPE c LENGTH 1 VALUE '1',
vert TYPE c LENGTH 1 VALUE '2',
bleu TYPE c LENGTH 1 VALUE '3',
END OF c_couleurs.

5. Utilisation des constantes dans le code

DATA gv_status_actuel TYPE c LENGTH 1.
DATA gv_longueur_texte TYPE i.
DATA gv_montant_ht TYPE p DECIMALS 2 VALUE '100.00'.
DATA gv_montant_ttc TYPE p DECIMALS 2.
gv_status_actuel = c_status_en_cours.
gv_longueur_texte = strlen( c_nom_app ).
IF gv_status_actuel = c_status_en_cours.
WRITE: / 'Le report s exécute sous le nom :', c_nom_app.
WRITE: / 'Longueur maximale est :', c_max_longueur.
WRITE: / 'Couleur rouge a le code :', c_couleurs-rouge.
ENDIF.
" Calcul avec constante
gv_montant_ttc = gv_montant_ht * ( 1 + c_tva_normal ).
WRITE: / 'Montant TTC :', gv_montant_ttc CURRENCY c_euro.
" ****** ERREUR DE SYNTAXE ******
" Le code suivant entraînerait une erreur de syntaxe,
" car les constantes ne peuvent pas être modifiées :
" c_max_longueur = 500.
" c_couleurs-rouge = 'X'.
" **************************

En résumé : L’instruction CONSTANTS est un outil important en ABAP pour rendre les valeurs fixes définies dans le code nommables, maintenables et sécurisées. Elle devrait toujours être utilisée lorsqu’une valeur ne doit garantiment pas changer pendant l’exécution du programme.