Aller au contenu
  1. Documentation/

Ecran de sélection et rapport en ABAP

··10 mins· loading · loading · · ·
SAP ERP Back-End
Adrien D'acunto
Auteur
Adrien D’acunto
Sommaire

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.
  1. PARAMETERS définit un champ unique pour la saisie par l’utilisateur.
  2. SELECT-OPTIONS permet de créer un intervalle ou une liste de valeurs.
  3. Les valeurs saisies sont accessibles dans le programme pour filtrer les données.
  4. Facilite l’interaction utilisateur et la saisie de critères multiples.

Les SELECT-OPTIONS cré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-OPTIONS plutôt que PARAMETERS pour 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.
  • PARAMETERS est utilisé pour un champ unique, SELECT-OPTIONS pour 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 PARAMETERS permettent de créer des champs de saisie simples pour l’utilisateur, comme dans un formulaire papier ou Excel.
Chaque PARAMETER ne 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. PARAMETERS correspond à chaque champ de ce formulaire.

Les PARAMETERS peuvent 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 par p_), 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 que p_vbeln.

Paramètres d’instruction
#

Champ type obligatoire
#

Le paramètre OBLIGATORY de l’instruction PARAMETERS rend obligatoire le champ.

PARAMETERS: p_vbeln TYPE vbak-vbeln OBLIGATORY,
            p_posnr TYPE vbap-posnr.

Champ avec valeur par défaut
#

Le paramètre DEFAULT suivie 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
#

  • PARAMETERS crée un champ de saisie unique pour l’utilisateur.
  • Le champ est typé via TYPE et 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-OPTIONS créent des champs de saisie doubles pour l’utilisateur afin de récupérer une plage de valeurs.
Contrairement aux PARAMETERS, un SELECT-OPTIONS peut 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-OPTIONS permet cette flexibilité alors qu’un PARAMETERS ne permet qu’une seule cellule.

Chaque SELECT-OPTIONS est 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, convention s_ 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-OPTIONS peut 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-OPTIONS se comporte comme un PARAMETERS.

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-OPTIONS pour 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 OBLIGATORY de l’instruction PARAMETERS rend 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 DEFAULT suivie 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-OPTIONS cré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-CODES sont 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 les SELECTION-SCREENS pour 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-CODES font la même chose pour les champs SAP : ils suggèrent les valeurs possibles.

Comportement standard
#

  • Dans un SELECTION-SCREEN, un MATCH-CODE apparaît automatiquement à droite des champs si le typage (TYPE pour les PARAMETERS, FOR pour les SELECT-OPTIONS) fait référence à un champ de table DDIC.

Exemple
#

PARAMETERS: p_vbeln TYPE vbak-vbeln,
            p_posnr TYPE vbap-posnr.
  • Ici, p_vbeln et p_posnr sont typés sur des champs de table.
  • SAP propose automatiquement les MATCH-CODES associés aux champs.
  • Si le typage est sur un type simple (ex: TYPE vbeln), aucun MATCH-CODE ne sera proposé.

Les MATCH-CODES automatiques permettent d’éviter de créer manuellement une liste de valeurs.

Match-codes spécifiques
#

  • Il est possible de créer un MATCH-CODE spécifique pour un PARAMETERS ou SELECT-OPTIONS :
  1. Créer le MATCH-CODE via la transaction SE11 ou l’aide à la recherche.
  2. 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_matnr est typé sur mara-matnr.
  • Le MATCH-CODE spécifique zar_mara est utilisé pour afficher les colonnes et valeurs personnalisées définies dans l’aide à la recherche.

Les MATCH-CODES spécifiques permettent de montrer uniquement les valeurs pertinentes et d’améliorer la lisibilité pour l’utilisateur.

Bonnes pratiques
#

  • Toujours utiliser les MATCH-CODES automatiques lorsque le typage est fait sur des champs de table.
  • Créer des MATCH-CODES spé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-CODES facilitent la sélection des données sur les SELECTION-SCREENS.
  • Typage sur table DDIC = MATCH-CODE automatique.
  • Typage sur type simple = pas de MATCH-CODE.
  • Les MATCH-CODES spé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_TABLE pour 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_table de type CL_SALV_TABLE.
  • Une table interne lt_mara contient 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 FACTORY cré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_msg capture 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_TABLE est une version simplifiée et moderne du module ALV GRID.

Utilisez CL_SALV_TABLE pour 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’appeler display( ).

Resume
#

  • L’ALV (ABAP List Viewer) permet d’afficher des données de manière claire, rapide et interactive.
  • La classe CL_SALV_TABLE facilite 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.

Articles connexes

Instructions ITAB en ABAP
··41 mins· loading · loading
SAP ERP Back-End
Introduction ABAP
·16 mins· loading · loading
SAP ERP Back-End
Les instructions en ABAP
··24 mins· loading · loading
SAP ERP Back-End
Transaction SE11 sur SAP
··32 mins· loading · loading
SAP ERP Back-End
Les conditions en ABAP
··19 mins· loading · loading
SAP ERP Back-End
Types ITAB en ABAP
··15 mins· loading · loading
SAP ERP Back-End