Rapports ALV dans SAP Tutoriel – Visionneuse de liste ABAP

⚡ Résumé intelligent

Rapports ALV dans SAPLes listes générées par ABAP List Viewer permettent d'aligner les colonnes, de trier, de filtrer, de calculer les totaux et les sous-totaux sans programmation personnalisée. Cette page explique les types de listes simples, par blocs et hiérarchiques, leurs modules de fonction réutilisables et leurs variantes d'affichage.

  • 📋 Objectif principal : Le visualiseur de listes ABAP fournit les fonctionnalités de liste standard via des modules de fonctions prêts à l'emploi, ce qui évite d'avoir à les reprogrammer.
  • 🇧🇷 Catalogue des terrains : REUSE_ALV_FIELDCATALOG_MERGE construit le catalogue qui décrit chaque colonne de sortie, et il peut également être rempli manuellement.
  • Liste et grille : REUSE_ALV_LIST_DISPLAY imprime une liste classique, et REUSE_ALV_GRID_DISPLAY affiche les mêmes données dans un contrôle de grille.
  • 🧱 Rapport de blocage : INIT, APPEND et DISPLAY combinent plusieurs tables internes en une seule sortie composée de blocs distincts.
  • 🌳 Rapport hiérarchique : REUSE_ALV_HIERSEQ_LIST_DISPLAY relie une table d'en-tête et une table d'articles via la clé partagée dans IS_KEYINFO.
  • 🧰 Type de piscine SLIS : Chaque structure, type de table et constante utilisée par l'ALV classique est déclarée dans le pool de types SLIS.
  • (I.e. Variantes d'affichage : Une variante stocke les valeurs par défaut de tri, de filtrage et de totalisation, et le paramètre I_SAVE détermine si elle est spécifique à l'utilisateur ou standard.

Rapports ALV dans SAP ABAP

Qu'est-ce que l'ALV ? SAP ABAP?

Les fonctionnalités généralement recherchées dans un rapport sont l'alignement des colonnes, le tri, le filtrage, les sous-totaux, les totaux, etc. Leur mise en œuvre à partir de zéro exige un travail de programmation considérable. Pour éviter cela, on peut utiliser un concept appelé ABAP List Viewer (ALV).

Chacun de ces rapports fournit modules de fonction ce qui aide à produire le résultat souhaité sans trop d’effort. Regardons-les en détail –

L'ALV classique propose trois types de listes, et chacun possède son propre ensemble de modules de fonctions REUSE :

  • Rapport simple : un tableau interne affiché sous forme de liste ou de grille.
  • Rapport de blocage : Plusieurs tableaux internes sont affichés les uns en dessous des autres sous forme de blocs distincts.
  • Rapport hiérarchique : une table d'en-tête et une table d'articles liées par une clé partagée.

Rapport simple

Modules fonctionnels importants dans ces rapport sont -

  • Reuse_alv_fieldcatalog_merge
  • Réutilisation_alv_list_display
  • Réutilisation_alv_events_get
  • Réutilisation_alv_grid_display
  • Réutilisation_alv_commentary_write

REUSE_ALV_FIELDCATALOG_MERGE

Ce module fonction permet d'alimenter un catalogue de champs indispensable à l'affichage des données dans ALV.

Si les données de sortie proviennent d’une seule table de dictionnaire et que toutes les colonnes sont sélectionnées, nous n’avons pas besoin de créer exclusivement le catalogue de champs. Il suffit de mentionner le nom de la table en paramètre (I_structure_name) dans le REUSE_ALV_LIST_DISPLAY. Mais dans d’autres cas, nous devons le créer.

Remarque : Fieldcatalog peut également être rempli manuellement en remplissant tous les détails requis dans le tableau interne.

Les paramètres importants sont :

1. Exporter :

  • I_program_name : identifiant du rapport
  • I_internal_tabname : la table de sortie interne
  • I_inclname : inclut ou le nom du rapport où tous les formulaires dynamiques sont gérés.

2. Changement

  • ct_fieldcat : un table interne avec le type SLIS_T_FIELDCAT_ALV qui est déclaré dans le pool de types SLIS.

REUSE_ALV_LIST_DISPLAY

C'est le module fonction qui imprime les données.

Les paramètres importants sont :

1. Exporter :

  • I_callback_program : identifiant du rapport
  • I_bypassing_buffer : 'X'
  • I_buffer_active : ' '
  • I_callback_pf_status_set : routine où un utilisateur peut définir son propre statut pf ou modifier la fonctionnalité du statut pf existant.
  • I_callback_user_command : routine où sont gérés les codes fonctions.
  • I_structure name : nom de la table du dictionnaire
  • Is_Layout : structure pour définir la mise en page du rapport
  • It_fieldcat : table interne avec la liste de tous les champs et leurs attributs qui doivent être imprimés (cette table peut être renseignée automatiquement par la fonction)
  • It_events : table interne avec une liste de tous les événements possibles d'ALV et leurs noms de formulaire correspondants.

2. Tableaux :

  • un. t_outtab : table interne avec les données à sortir

RÉUTILISER_ALV_ÉVÉNEMENTS_GET

Renvoie un tableau des événements possibles pour un type de liste

1. Importer :

Et_Evénements :La table d'événements est renvoyée avec tous les événements CALLBACK possibles pour le type de liste spécifié (colonne 'NOM'). Pour que les événements soient traités par le Callback, leur champ 'FORM' doit être rempli. Si le champ est initialisé, l'événement est ignoré. L'entrée peut être lue dans la table des événements, le champ 'FORM' rempli et l'entrée modifiée à l'aide de constantes du pool de types SLIS.

2. Exporter :

I_list_type : 0 = liste simple REUSE_ALV_LIST_DISPLAY

1 = liste hiérarchique-séquentielle REUSE_ALV_HIERSEQ_LIST_DISPLAY

2 = liste de blocage simple REUSE_ALV_BLOCK_LIST_APPEND

3 = liste de blocs hiérarchique-séquentielle REUSE_ALV_BLOCK_LIST_HS_APPEND

REUSE_ALV_GRID_DISPLAY

Une nouvelle fonction de la version ABAP4.6, pour afficher les résultats sous forme de grille plutôt qu'en aperçu.

Paramètres : identiques à reuse_alv_list_display

Remarque : L’affichage en grille ne gère pas les volumes importants de données. Des fonctions comme le tri et le défilement consomment beaucoup de ressources et de temps si le volume de données à afficher est élevé. Il n’existe pas de règle absolue indiquant si une quantité X de données nécessite l’utilisation d’une liste ou d’une grille ; le développeur doit faire son choix en fonction de son expérience. En cas de doute, l’affichage en liste est préférable.

REUSE_ALV_COMMENTARY_WRITE

Ceci est utilisé dans l'événement Haut de page pour imprimer les titres et autres commentaires de la liste.

Paramètres importants

  • It_list_commentary : Table interne avec les rubriques de type slis_t_listheader.

Cette table interne comporte trois champs :

  1. Typ : 'H' – en-tête, 'S' – sélection, 'A' – action
  2. Clé : uniquement lorsque le type est 'S'.
  3. Info : le texte à imprimer

Exemple : Un rapport de grille ALV simple

Le programme ci-dessous transforme les modules fonctionnels ci-dessus en un rapport opérationnel. Il lit la table des horaires de vol SPFLI, génère automatiquement le catalogue de champs et affiche le résultat dans un tableau.

REPORT z_alv_demo.

TYPE-POOLS: slis.

DATA: lt_spfli    TYPE STANDARD TABLE OF spfli,
      lt_fieldcat TYPE slis_t_fieldcat_alv,
      ls_layout   TYPE slis_layout_alv.

START-OF-SELECTION.

  * 1. Read the data into the output table
  SELECT * FROM spfli INTO TABLE lt_spfli.

  * 2. Build the field catalog from the dictionary structure
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name     = sy-repid
      i_internal_tabname = 'LT_SPFLI'
      i_structure_name   = 'SPFLI'
    CHANGING
      ct_fieldcat        = lt_fieldcat.

  * 3. Set the layout and display the grid
  ls_layout-zebra             = 'X'.
  ls_layout-colwidth_optimize = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = sy-repid
      is_layout          = ls_layout
      it_fieldcat        = lt_fieldcat
      i_save             = 'A'
    TABLES
      t_outtab           = lt_spfli.

Trois paramètres sont essentiels au fonctionnement. I_STRUCTURE_NAME permet de générer le catalogue de champs à partir du dictionnaire, évitant ainsi de décrire manuellement les colonnes. IS_LAYOUT active l'affichage en lignes alternées et l'optimisation de la largeur des colonnes. I_SAVE = 'A' permet d'enregistrer les variantes d'affichage, qu'elles soient personnalisées ou standard, à partir de la liste finale.

Bloquer le rapport

Cela ressemble à un simple rapport, mais ce rapport possède uniquement les fonctionnalités de tri et de filtrage. Ce rapport est utilisé si vous devez afficher plusieurs rapports sur la sortie. Techniquement parlant, si vous avez plusieurs tables internes avec des données à afficher sous forme de blocs séparés, nous optons pour le rapport de bloc d'ALV.

Les fonctions importantes utilisées pour créer ce rapport sont :

  • REUSE_ALV_BLOCK_LIST_INIT
  • REUSE_ALV_BLOCK_LIST_APPEND
  • REUSE_ALV_BLOCK_LIST_DISPLAY

REUSE_ALV_BLOCK_LIST_INIT

Ce module fonction est utilisé pour définir l'état de l'interface graphique par défaut, etc. Les paramètres sont similaires à ceux utilisés dans reuse_alv_list_display ou reuse_alv_grid_display

REUSE_ALV_BLOCK_LIST_APPEND

Ce module fonction ajoute les données au bloc.

Paramètres importants

1.Exporter :

  • is_layout : paramètres de mise en page pour le bloc
  • it_fieldcat : catalogue de champs
  • I_tabname : nom de la table interne avec tous les événements possibles

2.Tableaux :

  • t_outtab : table interne avec les données de sortie.

REUSE_ALV_BLOCK_LIST_DISPLAY

Ce module fonction affiche la liste des données ajoutées par la fonction ci-dessus.

Paramètres : Tous les paramètres sont optionnels.

Rapports hiérarchiques

L'affichage hiérarchique est utilisé pour afficher les données liées. Comme les détails de la commande client et de l’article. Ici, les détails de la commande client peuvent être les données d'en-tête tandis que les articles de la commande client peuvent être les données d'article.

Le module fonction utilisé à cet effet est

REUSE_ALV_HIERSEQ_LIST_DISPLAY

Exportation:

  • I_CALLBACK_PROGRAM
  • I_CALLBACK_PF_STATUS_SET
  • I_CALLBACK_USER_COMMAND
  • IS_LAYOUT
  • It_fieldcat
  • It_events
  • I_tabname_header : Nom de la table interne au programme contenant les données de sortie du niveau hiérarchique le plus élevé.
  • I_tabname_item : Nom de la table interne au programme contenant les données de sortie du niveau hiérarchique le plus bas.
  • Is_keyinfo : Cette structure contient les noms des champs d'en-tête et de table d'éléments qui relient les deux tables (clé partagée).

Tableaux

  • t_outtab_header : Table d'en-tête avec les données à sortir
  • t_outtab_item : Nom de la table interne au programme contenant les données de sortie du niveau hiérarchique le plus bas.

Toutes les définitions des tables, structures et constantes internes sont déclarées dans un pool de types appelé SLIS. Cette table interne peut être renseignée automatiquement en utilisant REUSE_ALV_FIELDCATALOG_MERGE'.

Variantes d'affichage

  • Les variantes d'affichage sont utilisées pour définir les propriétés par défaut d'une sortie alv comme les critères de tri, les critères de filtrage, le total et le sous-total, etc.
  • Les variantes d'affichage peuvent être spécifiques à l'utilisateur et standard (les variantes standard peuvent être utilisées par n'importe quel utilisateur)
  • Le type de variantes d'affichage pouvant être enregistrées est contrôlé par le paramètre i_save transmis aux modules fonctionnels reuse_alv_list_display / reuse_alv_grid_display
  • Vous pouvez fournir une option sur l'écran de sélection pour sélectionner la variante d'affichage à utiliser.

Les modules fonctionnels communs liés à la sélection/validation des variantes d'affichage sont

  1. Reuse_alv_variant_default_get
  2. Réutilisation_alv_variant_f4
  3. Réutilisation_alv_variant_existence

Astuce : Indiquez I_SAVE = 'U' pour autoriser uniquement les variantes spécifiques à l'utilisateur, 'X' pour les variantes standard uniquement et 'A' pour les deux. Une valeur vide empêche tout enregistrement.

C'est tout pour ABAP – Programmation ALV !

FAQ

Les modules REUSE appartiennent à l'ALV classique, basé sur des fonctions. CL_GUI_ALV_GRID est le contrôle orienté objet intégré dans un conteneur personnalisé sur une dynpro ; il offre des cellules modifiables et la gestion d'événements via des méthodes.

Définissez DO_SUM dans le catalogue de champs pour la colonne à additionner et transmettez une table de tri avec SUBTOT activé pour la colonne de regroupement des lignes. Aucun calcul supplémentaire n'est nécessaire.

Transmettez le nom d'un formulaire à I_CALLBACK_USER_COMMAND. Le formulaire reçoit le code de fonction et la ligne sélectionnée, permettant ainsi au programme de lire l'enregistrement et d'ouvrir une liste détaillée ou une transaction.

Oui. Les assistants IA des outils de développement ABAP génèrent la requête SELECT, le catalogue de champs et l'appel à REUSE_ALV_GRID_DISPLAY à partir d'une description des colonnes requises. La requête SELECT générée nécessite toutefois un contrôle de performance.

Non. ALV reste le format de sortie standard de SAP Des rapports d'interface graphique sont générés. Des assistants IA y ajoutent de la valeur en résumant une longue liste, en repérant les valeurs aberrantes et en répondant aux questions sur les données affichées en langage clair.

Résumez cet article avec :