SAP Programmation de rapports ABAP

⚡ Résumé intelligent

La programmation de rapports ABAP permet de créer des programmes exécutables qui sélectionnent, traitent et affichent de grands volumes de données. SAP Cette page explique les ajouts à l'en-tête du rapport, l'écran de sélection, la séquence d'événements, les commandes de mise en forme, les listes interactives et les bases de données logiques.

  • (I.e. Objectif principal : Un programme de génération de rapports lit les données de plusieurs tables, les traite et les présente sous forme de liste pouvant être formatée, téléchargée ou envoyée par courrier.
  • 🧾 Type de programme: Chaque rapport est un programme exécutable de type 1, lié à un domaine d'application et entièrement piloté par des événements.
  • ???? Ajouts à l'en-tête : PAS DE TITRE DE PAGE STANDARD, LINE-TAILLE, LINE-COUNT et MESSAGE-ID doivent figurer sur la première instruction REPORT.
  • Écran de sélection : PARAMETERS accepte une seule valeur, et SELECT-OPTIONS accepte une plage ou un ensemble de valeurs.
  • Séquence d'événements : LOAD-OF-PROGRAM, INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION et END-OF-SELECTION s'exécutent dans un ordre fixe.
  • 🇧🇷 Listes interactives : HIDE stocke les valeurs des champs de la ligne sélectionnée, et HOTSPOT transforme un champ de liste en un élément cliquable pour la liste secondaire.
  • 🇧🇷 Bases de données logiques : Créées dans SE36, elles remplacent les instructions SELECT par un événement GET et ajoutent des contrôles d'autorisation centralisés.

SAP Programmation de rapports ABAP

Qu'est-ce que la programmation de rapports ABAP ?

SAPABAP prend en charge deux types de programmes : les programmes de rapport et les programmes de dialogue. Les programmes de rapport sont utilisés lorsqu’il est nécessaire d’afficher de grandes quantités de données.

Objectif/utilisation des programmes de rapports

  • Elles sont utilisées lorsque des données provenant de plusieurs tables doivent être sélectionnées et traitées avant d'être présentées.
  • Utilisé lorsque les rapports exigent un format spécial
  • Utilisé lorsque le rapport doit être téléchargé depuis SAP vers une feuille Excel à distribuer.
  • Utilisé lorsque le rapport doit être envoyé par courrier à une personne en particulier.

Points importants à noter concernant le programme de rapport

  • Les programmes de rapport sont toujours des programmes exécutables. Le type de programme est toujours 1.
  • Chaque programme de rapport correspond à un type d'application particulier, c'est-à-dire soit avec Ventes et distribution, FI – CO, etc. Il peut également être inter-applications, c'est-à-dire type « * ».
  • La programmation de rapports est une programmation basée sur les événements.
  • La première ligne d'un programme de rapport est toujours Rapport .
  • Pour supprimer l'en-tête de la liste ou le nom du programme, l'ajout Pas de titre de page standard est utilisé.
  • La taille de ligne d'un rapport particulier peut être définie en utilisant l'ajout la taille de la ligne .
  • Le nombre de lignes pour une page particulière peut être défini en utilisant l'ajout nombre de lignes n(n1). N est le nombre de lignes de la page et N1 est le nombre de lignes réservées au pied de page.
  • Pour afficher toute information ou message d'erreur, nous ajoutons une classe de message au programme en utilisant l'ajout : ID du message . Les classes de messages sont conservées dans SE91.

Par conséquent, un programme de rapport idéal devrait commencer par :

Report <report name> no standard page heading

line-size <size>

line-count <n(n1)>

message-id <message class>.

Programme de rapport vs programme de dialogue

Ces deux types de programmes s'exécutent sur le même système, mais ils résolvent des problèmes opposés. Un rapport lit et affiche des données, tandis qu'un programme de type boîte de dialogue permet à l'utilisateur de les gérer via des écrans.

Critères Programme de rapport Programme de dialogue
Type de programme Type 1, exécutable Type M, pool de modules
Démarré par Nom du programme ou code de transaction Un code de transaction uniquement
Contrôle du flux Événements tels que l'INITIALISATION et le DÉBUT DE LA SÉLECTION Logique de flux d'écran avec modules PBO et PAI
Entrée utilisateur Écran de sélection généré Écrans conçus dans l'écran Painter
Utilisation typique Affichage et téléchargement de volumes de données importants Création et modification des données commerciales

L'écran de sélection est l'endroit où un rapport recueille ses données d'entrée ; il est donc décrit ci-après.

Écran de sélection

L’« écran de sélection » est l’écran où l’on spécifie les valeurs d’entrée pour lesquelles le programme doit s’exécuter.

L'écran de sélection est normalement généré à partir du

  1. Paramètres
  2. Sélectionnez les options

Syntaxe

Selection-screen begin of screen <screen #>
selection-screen begin of block <#>  with frame title <text>
.........
.........
selection-screen end of block <#>
selection-screen end of screen <screen #>

Paramètres

Les paramètres aident à effectuer une sélection dynamique. Ils ne peuvent accueillir qu'une seule valeur pour un cycle d'exécution du programme.

Syntaxe

Définir des paramètres en tant que type de données

Parameters p_id(30) type c.

Définir des paramètres comme un champ de table.

Parameter p_id like <table name>-<field name>.

Les paramètres peuvent être des cases à cocher ainsi que des boutons radio.

Parameters p_id as checkbox.Parameters p_id1 radiobutton group <group name>.
Parameters p_id2  radiobutton group <group name>.

Les paramètres peuvent être une zone de liste.

Parameter p_id like <table name>-<field name> as listbox

Plus d'options

Une option de sélection est utilisée pour saisir une plage de valeurs ou un ensemble de valeurs dans un programme.

Syntaxe

select-options s_vbeln for vbak-vbeln.

Écran de sélection

La capture d'écran montre les champs de saisie basse et haute générés par une option de sélection, ainsi que le bouton de sélection multiple.

Vous pouvez également définir une option de sélection comme une variable

select-options s_vbeln for vbak-vbeln no intervals no-extension

Une fois les données d'entrée collectées, le programme réagit à une séquence d'événements fixe.

Événements dans un programme de rapport ABAP

Les programmes de rapports ABAP sont programmes événementiels. Les différents événements d'un rapport Programme sont :

Chargement du programme

  • Déclenche l'événement associé dans une session interne après le chargement d'un programme de type 1, M, F ou S.
  • Exécute également le bloc de traitement associé une et une fois seulement pour chaque programme et session interne.
  • Le bloc de traitement LOAD-OF-PROGRAM a à peu près la même fonction pour un Programme ABAP de type 1, M, F ou S comme un constructeur l'a pour les classes dans les objets ABAP

Initialisation.

  • Cet événement est exécuté avant l'affichage de l'écran de sélection.
  • Initialisation de toutes les valeurs.
  • Vous pouvez attribuer des valeurs différentes autres que les valeurs par défaut sur l'écran de sélection.
  • Vous pouvez remplir votre écran de sélection avec certaines valeurs au moment de l'exécution.

À l'écran de sélection.

  • L'événement est traité lorsque l'écran de sélection a été traité (en fin de PAI).
  • La validation et les vérifications des valeurs saisies ont lieu ici

Début de la sélection.

  • Ici, le programme commence à sélectionner des valeurs dans des tables.

Fin de sélection.

  • Une fois que toutes les données ont été sélectionnées, cet événement écrit les données à l'écran.

Événements interactifs

  • Utilisé pour les rapports interactifs. Il permet de créer une liste détaillée à partir d'une liste de base.

Astuce : Les instructions écrites sans mot-clé d'événement appartiennent par défaut à START-OF-SELECTION, c'est pourquoi un rapport s'exécute quand même même si l'événement est absent.

Exemple : Un programme de rapport ABAP simple

Le programme ci-dessous regroupe les ajouts, l'écran de sélection et les événements dans un seul rapport. Il extrait les en-têtes de commandes clients de VBAK correspondant aux numéros saisis sur l'écran de sélection et les affiche sous forme de liste.

REPORT z_sales_order_list NO STANDARD PAGE HEADING
                          LINE-SIZE 80
                          LINE-COUNT 65(3)
                          MESSAGE-ID zsd.

TABLES: vbak.

DATA: lt_vbak TYPE STANDARD TABLE OF vbak,
      ls_vbak TYPE vbak.

* Selection screen
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
PARAMETERS: p_erdat LIKE vbak-erdat.

INITIALIZATION.
  p_erdat = sy-datum.

AT SELECTION-SCREEN.
  IF p_erdat > sy-datum.
    MESSAGE e001(zsd).          " Date must not lie in the future
  ENDIF.

START-OF-SELECTION.
  SELECT * FROM vbak
    INTO TABLE lt_vbak
    WHERE vbeln IN s_vbeln
      AND erdat LE p_erdat.

END-OF-SELECTION.
  LOOP AT lt_vbak INTO ls_vbak.
    WRITE: / ls_vbak-vbeln, ls_vbak-erdat, ls_vbak-netwr.
    HIDE ls_vbak-vbeln.
  ENDLOOP.

Trois points méritent d'être soulignés. INITIALIZATION remplit le paramètre de date avant l'affichage de l'écran de sélection. AT SELECTION-SCREEN valide la saisie et génère un message de la classe ZSD. HIDE conserve le numéro d'ordre de chaque ligne saisie ; un double-clic permet ainsi de créer une liste secondaire, qui sera abordée dans la section suivante.

Formatage du rapport

ABAP permet aux rapports d'être formatés comme le souhaite l'utilisateur. Par exemple, les « Lignes alternatives » doivent apparaître dans des couleurs différentes et la ligne « Totaux » doit apparaître en jaune.

Syntaxe

Format Color n

Format Color n Intensified On

n peut correspondre à différents nombres

Veuillez noter qu'il existe également d'autres ajouts en plus du format.

FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF

Programmation de rapports interactifs

  • Grâce à la programmation interactive, les utilisateurs peuvent contrôler activement la récupération et l'affichage des données.
  • Utilisé pour créer une liste détaillée à partir d'une liste très basique
  • Les données détaillées sont écrites sur une liste secondaire.
  • La liste secondaire peut soit recouvrir complètement le premier écran, soit l'afficher dans un nouvel écran.
  • Les listes secondaires peuvent être elles-mêmes interactives.
  • La première liste peut également appeler une transaction.
  • Il existe différents événements associés à la programmation interactive.

Quelques commandes utilisées pour la programmation interactive

point chaud

Si l'on fait glisser la souris sur les données affichées dans le rapport, le curseur se transforme en une main avec un index tendu. Un point chaud peut être obtenu à l'aide de l'instruction FORMAT.

Syntax:      Format Hotspot On (Off).

Cacher

Cette commande vous aide à stocker les noms de champs en fonction de ceux qui effectueront un traitement ultérieur pour obtenir une liste détaillée. Il est écrit directement après l'instruction WRITE pour un champ. Lorsqu'une ligne est sélectionnée, les valeurs sont automatiquement renseignées dans les variables pour une utilisation ultérieure.

Syntax:     Hide <field-name>.

Les rapports qui consultent de nombreuses tables peuvent remplacer leurs instructions SELECT par une base de données logique, décrite ci-dessous.

Bases de données logiques

  • Au lieu d'utiliser des requêtes « Sélectionner », vous pouvez utiliser une base de données logique pour récupérer les données d'un programme.
  • Les bases de données logiques sont créées par transaction SE36
  • Le nom d'une base de données logique peut comporter jusqu'à 20 caractères. Il peut commencer par un préfixe d'espace de noms.
  • Les données sont sélectionnées par un autre programme et on peut accéder aux données en utilisant GET commande qui place les données dans la zone de travail .

Avantages d'une base de données logique par rapport aux requêtes Select normales.

  1. Il propose des conditions de contrôle pour voir si la saisie est correcte, complète et plausible
  2. Il contient des contrôles d'autorisation centraux pour l'accès à la base de données
  3. Les améliorations telles que l'amélioration des performances s'appliquent immédiatement à tous les rapports qui utilisent une base de données logique.

Remarque : En raison de la complexité impliquée, les bases de données logiques ne sont pas utilisées dans la plupart des cas.

FAQ

PARAMETERS crée un champ de saisie contenant une seule valeur. SELECT-OPTIONS crée une table interne avec les champs SIGN, OPTION, LOW et HIGH, ce qui lui permet d'accepter des plages, des exclusions et des sélections multiples.

AT LINE-SELECTION réagit à un double-clic ou à la touche F2, et AT USER-COMMAND réagit à un code de fonction du menu. Les deux construisent la liste secondaire à partir des valeurs stockées par HIDE.

Le menu déroulant propose les options Liste, Enregistrer et Fichier local pour la création d'un rapport classique. Un programme peut également appeler le module fonction GUI_DOWNLOAD pour exporter une liste ALV vers une feuille de calcul sans nécessiter de programmation supplémentaire.

Oui. Les assistants IA des outils de développement ABAP génèrent l'en-tête du rapport, les options de sélection et les blocs d'événements à partir d'une simple description de la liste requise. La requête SELECT générée nécessite toutefois une analyse de performance.

Les outils d'IA permettent de synthétiser une longue liste, de repérer les valeurs aberrantes et de répondre aux questions relatives aux données en langage clair. L'intégration de telles analyses implique généralement de convertir la liste classique en un format de sortie ALV ou Fiori.

Résumez cet article avec :