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 :
- 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_valideau lieu de'V'). - 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. - 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 commeT001-BUTXTou un type auto-défini).LENGTH <longueur>: Indication optionnelle de longueur pour les types commeC,N,X,P.DECIMALS <decimales>: Nécessaire pour les nombres packed (typeP), pour définir le nombre de décimales.VALUE <valeur>: Obligatoire (sauf pourVALUE 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 pourI, espaces pourC, chaîne vide pourSTRING).
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 INITIALCONSTANTS c_vrai TYPE abap_bool VALUE abap_true. " Utilisation des constantes booléennes ABAP2. Constante avec décimales (Type P)
CONSTANTS c_tva_normal TYPE p LENGTH 8 DECIMALS 2 VALUE '0.20'. " 20% TVA3. 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 constantegv_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.