L

Catégorie
ABAP-Statements
Publié
Auteur
Johannes

L’instruction PARAMETERS est un mot-clé ABAP que vous utilisez exclusivement dans la partie déclarative de programmes exécutables (REPORT), groupes de fonctions ou module pools. Son but est de définir un seul champ de saisie sur l’écran de sélection standard (Dynpro 1000) du programme.

Via ce champ, l’utilisateur peut saisir exactement une valeur qui est ensuite disponible dans le programme dans une variable globale portant le même nom que le paramètre.

Distinction importante avec SELECT-OPTIONS :

  • PARAMETERS : Pour la saisie d’une seule valeur (par ex. un numéro de client, une date, un site). Crée une variable.
  • SELECT-OPTIONS : Pour des sélections complexes (par ex. une plage de numéros de clients, plusieurs matériels individuels, exclusion de certaines valeurs). Crée en interne une table (table Ranges).

Syntaxe

PARAMETERS <param_name> { {TYPE <datentyp> [LENGTH <länge>] [DECIMALS <nachkommastellen>]} | {LIKE <datenobjekt>} }
[DEFAULT <standardwert>]
[OBLIGATORY]
[LOWER CASE]
[AS CHECKBOX [USER-COMMAND <funktcode>]]
[RADIOBUTTON GROUP <gruppenname> [USER-COMMAND <funktcode>]]
[MEMORY ID <pid>]
[NO-DISPLAY]
[VISIBLE LENGTH <sichtbare_länge>]
[MODIF ID <modifikationsgruppe>]
[VALUE-REQUEST] " Pour aide F4 personnalisée
[HELP-REQUEST]. " Pour aide F1 personnalisée
" Ajouts plus anciens / rares comme MATCHCODE OBJECT, AS SEARCHPATTERN etc.

Composants

  • <param_name> : Le nom du paramètre. Sous ce nom, une variable globale est créée dans le programme, et (si pas NO-DISPLAY) un champ de saisie est généré sur l’écran de sélection.
  • TYPE <datentyp> ... ou LIKE <datenobjekt> : (Obligatoire) Définit le type de données du paramètre et de la variable associée.
    • TYPE : Préféré ! Peut être un type ABAP intégré (I, D, STRING, C, P…), un élément de données du dictionnaire ABAP (kunnr, matnr, werks_d…) ou un type local. Avec référence aux types du dictionnaire, des contrôles de saisie, aides F1 et F4 sont souvent fournis automatiquement.
    • LIKE : Syntaxe plus ancienne, se réfère à un objet de données déjà déclaré. Devrait être remplacé par TYPE.
  • DEFAULT <standardwert> : (Optionnel) Spécifie une valeur avec laquelle le champ de saisie est prérempli sur l’écran de sélection.
  • OBLIGATORY : (Optionnel) Rend le champ obligatoire. L’utilisateur doit saisir une valeur avant de pouvoir exécuter le programme.
  • LOWER CASE : (Optionnel) Permet la saisie de minuscules et empêche la conversion automatique en majuscules (comportement standard pour de nombreux types de données).
  • AS CHECKBOX : (Optionnel) Affiche le paramètre comme une case à cocher (Checkbox). La variable <param_name> devrait alors être TYPE c LENGTH 1 ('X' = coché, ' ' = non coché).
  • RADIOBUTTON GROUP <gruppenname> : (Optionnel) Affiche le paramètre comme un bouton radio. Tous les paramètres avec le même <gruppenname> forment un groupe dont seule une option peut être sélectionnée. Nécessite au moins deux boutons radio par groupe. <param_name> souvent TYPE c LENGTH 1.
  • MEMORY ID <pid> : (Optionnel) Associe le paramètre à un ID mémoire SAP. Le champ est prérempli avec la valeur de la mémoire SAP (GET PARAMETER), si disponible.
  • NO-DISPLAY : (Optionnel) La variable <param_name> est déclarée, mais aucun champ de saisie n’est affiché sur l’écran de sélection. Utile pour les paramètres “cachés” qui sont par ex. transmis via des variantes ou SUBMIT ... WITH ....
  • VISIBLE LENGTH <sichtbare_länge> : (Optionnel) Contrôle la largeur visible du champ de saisie à l’écran (peut être plus courte que la longueur réelle du champ).
  • MODIF ID <modifikationsgruppe> : (Optionnel) Assigne au paramètre un groupe de modification. Cela permet la manipulation dynamique du champ (par ex. masquer, désactiver) dans l’événement AT SELECTION-SCREEN OUTPUT.

Fonctionnement

  1. Le programme lit les déclarations au démarrage.
  2. Pour chaque commande PARAMETERS, une variable globale est créée.
  3. Le système génère automatiquement l’écran de sélection standard (Dynpro 1000) avec les champs de saisie correspondants (sauf avec NO-DISPLAY).
  4. L’utilisateur saisit des valeurs dans les champs et exécute le programme (F8).
  5. Après le traitement de l’écran de sélection, les valeurs saisies (ou par défaut) sont disponibles dans les variables globales (<param_name>) et peuvent être utilisées dans la suite du programme (par ex. à partir de START-OF-SELECTION).

Exemples

REPORT z_parameter_demo.
" --- Partie déclarative ---
TABLES: spfli. " Pour référence au dictionnaire
" Paramètre simple avec typage via dictionnaire
PARAMETERS p_carrid TYPE spfli-carrid.
" Paramètre date obligatoire avec valeur par défaut (aujourd'hui)
PARAMETERS p_date TYPE d OBLIGATORY DEFAULT sy-datum.
" Checkbox pour mode test
PARAMETERS p_test AS CHECKBOX.
" Boutons radio pour mode de sortie
PARAMETERS: p_list RADIOBUTTON GROUP mode DEFAULT 'X' USER-COMMAND radio,
p_grid RADIOBUTTON GROUP mode.
" Paramètre non affiché
PARAMETERS p_intern TYPE i NO-DISPLAY.
" Paramètre autorisant les minuscules
PARAMETERS p_text TYPE c LENGTH 40 LOWER CASE.
" --- Logique de traitement ---
START-OF-SELECTION.
WRITE: / 'Compagnie aérienne:', p_carrid.
WRITE: / 'Date:', p_date.
IF p_test = 'X'.
WRITE: / 'Mode test actif.'.
ELSE.
WRITE: / 'Mode production.'.
ENDIF.
IF p_list = 'X'.
WRITE: / 'Sortie en liste sélectionnée.'.
ELSE.
WRITE: / 'Sortie en grille sélectionnée.'.
ENDIF.
WRITE: / 'Texte saisi:', p_text.
" p_intern pourrait être utilisé ici s'il était par ex. rempli via SUBMIT.

Remarques importantes / Bonnes pratiques

  • PARAMETERS appartient toujours à la partie déclarative d’un programme.
  • Utilisez l’ajout TYPE avec référence aux éléments de données ou champs de table du dictionnaire ABAP (SE11). Vous obtenez ainsi automatiquement le type de données correct, la longueur, l’aide F1, l’aide de recherche F4 et éventuellement des contrôles de saisie.
  • Utilisez PARAMETERS pour des saisies simples où l’utilisateur doit spécifier une seule valeur. Pour des sélections plus complexes (plages, valeurs multiples, exclusions), SELECT-OPTIONS est prévu.
  • Rendez les champs obligatoires avec OBLIGATORY lorsqu’une saisie est indispensable pour la logique du programme.
  • Utilisez AS CHECKBOX et RADIOBUTTON GROUP pour des décisions simples Oui/Non ou des choix exclusifs.