Ecran de sélection et rapport en ABAP #
Selection Screen #
Objectifs #
- Créer une interface utilisateur simple pour saisie de critères
- Permettre la sélection de données ou l’import de fichiers via l’écran
- Utiliser les paramètres et SELECT-OPTIONS pour filtrer les données
Définition #
Un écran de sélection est une interface utilisateur qui permet à l’utilisateur final de :
- Saisir des données
- Définir des critères de sélection
- Importer des fichiers ou listes de données
- Interagir avec le programme de manière conviviale
Imaginez un formulaire Excel où l’utilisateur peut entrer un ID, un nom ou choisir une ville dans une liste déroulante pour filtrer les lignes.
SAP propose des programmes exemples (souvent commençant par
DEMO) pour illustrer l’utilisation des écrans de sélection.
Exemple #
Définition d’un écran de sélection simple #
SELECTION-SCREEN BEGIN OF BLOCK b000 WITH FRAME TITLE TEXT-000.
" Déclaration de paramètres de sélection
PARAMETERS: p_id TYPE zpassenger-id_passenger,
p_name TYPE zpassenger-name.
" Déclaration d'une option de sélection pour intervalles ou listes
SELECT-OPTIONS: s_city FOR zpassenger-city.
SELECTION-SCREEN END OF BLOCK b000.
PARAMETERSdéfinit un champ unique pour la saisie par l’utilisateur.SELECT-OPTIONSpermet de créer un intervalle ou une liste de valeurs.- Les valeurs saisies sont accessibles dans le programme pour filtrer les données.
- Facilite l’interaction utilisateur et la saisie de critères multiples.
Les
SELECT-OPTIONScréent automatiquement des tableaux internes pour stocker les valeurs saisies par l’utilisateur.
Bonnes pratiques #
- Toujours initialiser correctement les paramètres pour éviter des valeurs vides inattendues.
- Préférer
SELECT-OPTIONSplutôt quePARAMETERSpour les listes ou intervalles. - Prévoir des valeurs par défaut pour faciliter l’utilisation.
- Valider les saisies si nécessaire pour éviter des erreurs dans le traitement des données.
Resume #
- L’écran de sélection est l’interface principale entre le programme ABAP et l’utilisateur.
PARAMETERSest utilisé pour un champ unique,SELECT-OPTIONSpour des listes ou intervalles.- Les valeurs saisies permettent de filtrer ou sélectionner les enregistrements dans une table.
- Les programmes SAP
DEMO*sont utiles pour illustrer les bonnes pratiques.
PARAMETERS #
Objectifs #
- Créer un champ de saisie simple pour l’utilisateur final
- Récupérer et utiliser la valeur saisie dans le programme ABAP
- Faciliter la navigation et la compréhension grâce à des textes d’input
Définition #
Les
PARAMETERSpermettent de créer des champs de saisie simples pour l’utilisateur, comme dans un formulaire papier ou Excel.
ChaquePARAMETERne peut contenir qu’une seule valeur.
Utilisation : récupérer des données saisies par l’utilisateur pour filtrer, calculer ou traiter des enregistrements.
Imaginez un formulaire où l’utilisateur saisit uniquement un numéro de document ou une date.
PARAMETERScorrespond à chaque champ de ce formulaire.
Les
PARAMETERSpeuvent générer automatiquement un MATCHCODE si le type est lié à une table DDIC, facilitant la recherche.
Instruction PARAMETERS #
Exemple de déclaration simple #
PARAMETERS: p_vbeln TYPE vbak-vbeln,
p_posnr TYPE vbap-posnr.
PARAMETERS:obligatoire pour déclarer un ou plusieurs champs de saisie.p_vbeln: nom du paramètre (par convention, commence parp_), ici pour saisir le numéro de document commercial.TYPE: définit le type attendu et permet la génération automatique du match-code.vbak-vbeln: référence à la table et au champ dans le dictionnaire DDIC.p_posnr: deuxième paramètre pour saisir le numéro de poste, même principe quep_vbeln.
Paramètres d’instruction #
Champ type obligatoire #
Le paramètre
OBLIGATORYde l’instructionPARAMETERSrend obligatoire le champ.
PARAMETERS: p_vbeln TYPE vbak-vbeln OBLIGATORY,
p_posnr TYPE vbap-posnr.
Champ avec valeur par défaut #
Le paramètre
DEFAULTsuivie de la valeur applique une valeur par défaut sur le champ.
PARAMETERS: p_vbeln TYPE vbak-vbeln OBLIGATORY,
p_posnr TYPE vbap-posnr DEFAULT '00015'.
Textes d’inputs #
- Par défaut, le texte affiché à l’exécution est le nom du paramètre (
p_vbeln,p_posnr). - Possibilités de personnalisation :
- Saisie manuelle pour chaque paramètre (peut nécessiter des traductions).
- Automatique via le DDIC si le type est lié à une table/zone (option recommandée pour plus de clarté).
Bonnes pratiques #
- Utiliser un nom de paramètre clair et compréhensible, convention
p_. - Toujours typer le paramètre avec un champ DDIC pour bénéficier des validations automatiques et du match-code.
- Prévoir des valeurs par défaut si nécessaire pour guider l’utilisateur.
- Vérifier la valeur saisie dans le programme avant de l’utiliser pour éviter des erreurs.
Resume #
PARAMETERScrée un champ de saisie unique pour l’utilisateur.- Le champ est typé via
TYPEet peut générer un match-code automatiquement.- Les textes d’input peuvent être personnalisés pour améliorer l’expérience utilisateur.
- Convention : noms de paramètres commençant par
p_pour identification facile.
SELECT-OPTIONS #
Objectifs #
- Créer un champ de saisie permettant de récupérer une plage de valeurs
- Récupérer et utiliser les valeurs saisies dans le programme ABAP
- Permettre à l’utilisateur de filtrer sur des plages de données
Définition #
Les
SELECT-OPTIONScréent des champs de saisie doubles pour l’utilisateur afin de récupérer une plage de valeurs.
Contrairement auxPARAMETERS, unSELECT-OPTIONSpeut contenir plusieurs lignes correspondant à une plage ou à plusieurs entrées distinctes.
Imaginez une feuille Excel où l’on peut saisir plusieurs intervalles de valeurs ou une liste de numéros :
SELECT-OPTIONSpermet cette flexibilité alors qu’unPARAMETERSne permet qu’une seule cellule.
Chaque
SELECT-OPTIONSest typé automatiquement à partir d’une table DDIC, ce qui permet de générer un match-code et de valider les valeurs saisies.
Déclaration des tables affectées #
Exemple de déclaration #
TABLES: vbak, vbap.
- Obligatoire pour indiquer quelles tables seront utilisées avec les
SELECT-OPTIONS.- Généralement placé au début du programme avec les variables et constantes.
- Permet de lier le type du champ et d’activer automatiquement le match-code.
Déclaration des SELECT-OPTIONS #
Exemple de déclaration #
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln,
s_posnr FOR vbap-posnr.
SELECT-OPTIONS:obligatoire pour déclarer un ou plusieurs champs.s_vbeln: nom du champ, conventions_pour SELECT-OPTIONS, ici pour le numéro de document commercial.FOR: indique la table et le champ pour définir le type et générer le match-code.s_posnr: second champ pour saisir les numéros de poste.- Chaque
SELECT-OPTIONSpeut contenir plusieurs lignes, permettant de saisir des plages ou plusieurs valeurs séparées.
Comportements spécifiques #
Une seule entrée #
- Si une seule valeur est saisie, le
SELECT-OPTIONSse comporte comme unPARAMETERS.
Absence d’entrée #
- Si aucun champ n’est rempli, le programme considérera toutes les valeurs possibles du champ indiqué dans
FOR.
Ne pas oublier de vérifier la table affectée si vous utilisez
SELECT-OPTIONSpour filtrer les données, sinon des valeurs inattendues peuvent être considérées comme valides.
Paramètres d’instruction #
Champ type obligatoire #
Le paramètre
OBLIGATORYde l’instructionPARAMETERSrend obligatoire le champ.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln OBLIGATORY,
s_posnr FOR vbap-posnr.
Champ avec valeur par défaut #
Le paramètre
DEFAULTsuivie de la valeur applique une valeur par défaut sur le champ au niveau de la valeur Low.
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln OBLIGATORY,
s_posnr FOR vbap-posnr DEFAULT '00015'.
Textes d’inputs #
- Les textes d’interface peuvent être personnalisés comme pour les
PARAMETERS. - Permet de rendre l’interface plus lisible et accessible.
Bonnes pratiques #
- Toujours utiliser la convention
s_pour nommer vos SELECT-OPTIONS. - Déclarer les tables affectées avant les options de sélection.
- Prévoir des textes d’input clairs pour chaque champ.
- Tester les différentes saisies possibles : plage, valeur unique, aucune valeur.
Resume #
SELECT-OPTIONScrée des champs de saisie pour des plages ou plusieurs valeurs.- Chaque entrée peut contenir une ou plusieurs lignes.
- Tables affectées doivent être déclarées avec
TABLES.- Noms commencent par
s_par convention.- Permet un filtrage flexible et puissant dans un programme ABAP.
MATCH-CODE #
Objectifs #
- Comprendre le fonctionnement des match-codes dans un selection-screen
- Utiliser les match-codes automatiques et spécifiques
- Faciliter la sélection de données par l’utilisateur final
Définition #
Les
MATCH-CODESsont des aides à la recherche qui permettent à l’utilisateur d’afficher une liste de choix pour faciliter la sélection de données.
Ils sont souvent utilisés dans lesSELECTION-SCREENSpour améliorer l’expérience utilisateur et réduire les erreurs de saisie.
Imaginez un moteur de recherche avec suggestions automatiques lorsque vous commencez à taper un mot-clé. Les
MATCH-CODESfont la même chose pour les champs SAP : ils suggèrent les valeurs possibles.
Comportement standard #
- Dans un
SELECTION-SCREEN, unMATCH-CODEapparaît automatiquement à droite des champs si le typage (TYPEpour lesPARAMETERS,FORpour lesSELECT-OPTIONS) fait référence à un champ de table DDIC.
Exemple #
PARAMETERS: p_vbeln TYPE vbak-vbeln,
p_posnr TYPE vbap-posnr.
- Ici,
p_vbelnetp_posnrsont typés sur des champs de table.- SAP propose automatiquement les
MATCH-CODESassociés aux champs.- Si le typage est sur un type simple (ex:
TYPE vbeln), aucunMATCH-CODEne sera proposé.
Les
MATCH-CODESautomatiques permettent d’éviter de créer manuellement une liste de valeurs.
Match-codes spécifiques #
- Il est possible de créer un
MATCH-CODEspécifique pour unPARAMETERSouSELECT-OPTIONS:
- Créer le
MATCH-CODEvia la transaction SE11 ou l’aide à la recherche. - Ajouter le paramètre
MATCHCODE OBJECT nom_du_match_codeà la déclaration.
Exemple #
PARAMETERS: p_matnr TYPE mara-matnr MATCHCODE OBJECT zar_mara.
p_matnrest typé surmara-matnr.- Le
MATCH-CODEspécifiquezar_maraest utilisé pour afficher les colonnes et valeurs personnalisées définies dans l’aide à la recherche.
Les
MATCH-CODESspécifiques permettent de montrer uniquement les valeurs pertinentes et d’améliorer la lisibilité pour l’utilisateur.
Bonnes pratiques #
- Toujours utiliser les
MATCH-CODESautomatiques lorsque le typage est fait sur des champs de table. - Créer des
MATCH-CODESspécifiques pour filtrer et personnaliser la liste des valeurs si nécessaire. - Tester le comportement de l’aide à la recherche pour différents profils d’utilisateurs.
Resume #
- Les
MATCH-CODESfacilitent la sélection des données sur lesSELECTION-SCREENS.- Typage sur table DDIC =
MATCH-CODEautomatique.- Typage sur type simple = pas de
MATCH-CODE.- Les
MATCH-CODESspécifiques permettent d’afficher des colonnes et valeurs personnalisées pour améliorer l’expérience utilisateur.
ALV (ABAP List Viewer) #
Objectifs #
- Afficher des données de façon structurée et interactive
- Utiliser la classe
CL_SALV_TABLEpour créer un tableau dynamique - Offrir à l’utilisateur des fonctionnalités de tri, filtrage et exportation
Définition #
Un
ALV(ABAP List Viewer) est un outil SAP qui permet d’afficher des listes et tables de données de manière claire, structurée et interactive.
Il offre des fonctions intégrées telles que :
- le tri automatique des colonnes,
- le filtrage,
- les totaux et sous-totaux,
- l’exportation vers Excel,
- et des options de personnalisation (largeur de colonne, tri multiple, etc.).
Imaginez un tableau Excel directement intégré dans SAP, mais généré automatiquement à partir de votre code.
C’est exactement ce que fait l’ALV : il transforme une table interne en tableau dynamique interactif.
Exemple d’implémentation simple #
DATA: r_salv_table TYPE REF TO cl_salv_table,
lt_mara TYPE TABLE OF mara.
" Remplir la table interne avec des données
SELECT * FROM mara INTO TABLE @lt_mara UP TO 20 ROWS.
" Création de l'ALV à partir de la table interne
TRY.
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = r_salv_table
CHANGING
t_table = lt_mara.
CATCH cx_salv_msg INTO DATA(lx_msg).
WRITE: / 'Erreur ALV :', lx_msg->get_text( ).
ENDTRY.
" Affichage de la table ALV
r_salv_table->display( ).
Explication #
1. Déclaration #
- On déclare une référence objet
r_salv_tablede typeCL_SALV_TABLE. - Une table interne
lt_maracontient les données à afficher.
2. Chargement des données #
- On remplit la table interne avec un
SELECT.
3. Création de l’objet ALV #
- La méthode
FACTORYcrée automatiquement la structure ALV à partir de la table interne.
4. Affichage #
r_salv_table->display( )ouvre la fenêtre ALV avec toutes les fonctions interactives.
5. Gestion des erreurs #
CATCH cx_salv_msgcapture les erreurs éventuelles liées à la création ou l’affichage de l’ALV.
Aide #
- L’ALV est compatible avec la plupart des types de données standards.
- Si les noms de colonnes ne sont pas explicites, vous pouvez les renommer via
cl_salv_columns_table. - Le
CL_SALV_TABLEest une version simplifiée et moderne du module ALV GRID.
Utilisez
CL_SALV_TABLEpour les rapports internes ou les outils de contrôle qualité : c’est rapide, lisible et sans interface complexe à coder.
Bonnes pratiques #
- Toujours alimenter la table interne avant d’appeler
FACTORY. - Utiliser une limitation de lignes (
UP TO n ROWS) pour éviter les temps d’exécution longs. - Tester le rendu ALV avant de le livrer (largeur, intitulés, formats).
- Penser à ajouter des totaux ou des tris par défaut selon le besoin utilisateur.
Si votre table interne est vide, l’ALV s’affichera sans colonnes visibles.
Toujours vérifier le contenu avant d’appelerdisplay( ).
Resume #
- L’ALV (ABAP List Viewer) permet d’afficher des données de manière claire, rapide et interactive.
- La classe
CL_SALV_TABLEfacilite la création d’un tableau dynamique.- Il s’agit d’un outil essentiel pour la visualisation, le contrôle et la validation des données.
- Les fonctionnalités intégrées (tri, filtre, export) rendent l’ALV très puissant et convivial.