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.

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 :
- Typ : 'H' – en-tête, 'S' – sélection, 'A' – action
- Clé : uniquement lorsque le type est 'S'.
- 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
- Reuse_alv_variant_default_get
- Réutilisation_alv_variant_f4
- 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 !
