L’instruction REPORT est la première instruction (à part les commentaires) dans un programme ABAP exécutable. Elle sert à déclarer explicitement un programme comme programme exécutable (souvent appelé “Report”). Lorsque vous créez un programme dans la transaction SE38 ou SE80 avec le type “Programme exécutable”, cette instruction est automatiquement générée par le système.
Elle définit les propriétés de base du programme, en particulier pour la sortie de liste classique (lorsque le programme sort des données directement avec WRITE).
Syntaxe
La syntaxe de base est :
REPORT <nom_programme> [ajout1] [ajout2] ... .<nom_programme>: C’est le nom de l’objet programme ABAP, tel qu’il a été attribué dans l’environnement de développement (SE38/SE80). Il est obligatoire et doit correspondre au nom réel du programme.[ajout1] [ajout2] ...: Ce sont des ajouts optionnels avec lesquels vous pouvez influencer le comportement du report, en particulier le formatage de la sortie de liste standard.
Ajouts importants (Options)
Voici quelques-uns des ajouts optionnels les plus couramment utilisés :
-
NO STANDARD PAGE HEADING:- Objectif : Supprime la sortie de l’en-tête standard sur chaque page de la liste. L’en-tête standard contient normalement le nom du programme, le numéro de page et la date.
- Utilisation : Utile lorsque vous souhaitez concevoir un en-tête complètement personnalisé (par ex. dans le bloc d’événement
TOP-OF-PAGE).
-
LINE-SIZE <largeur>:- Objectif : Définit la largeur maximale des lignes pour la sortie de liste en caractères.
<largeur>: Un nombre indiquant le nombre de caractères souhaité par ligne (par ex.LINE-SIZE 132).- Par défaut : Si non spécifié, une valeur par défaut définie par le système est utilisée (souvent 80 ou 132, selon les paramètres système).
-
LINE-COUNT <lignes>(<lignes_pied>):- Objectif : Définit le nombre de lignes par page pour la sortie de liste.
<lignes>: Le nombre total de lignes par page (y compris en-tête et pied de page).(<lignes_pied>): Optionnel. Indique combien de lignes doivent être réservées en bas de page pour le pied de page. Ces lignes peuvent ensuite être remplies dans le bloc d’événementEND-OF-PAGE.- Exemple :
LINE-COUNT 65(5)signifie 65 lignes par page, dont les 5 dernières sont réservées pour la zone de pied de page.
-
MESSAGE-ID <classe_message>:- Objectif : Définit une classe de messages standard pour le programme.
<classe_message>: L’identifiant à deux caractères d’une classe de messages (créée dans la transaction SE91).- Utilisation : Si vous utilisez ultérieurement l’instruction
MESSAGEdans le programme sans l’ajoutUSING, cette classe de messages définie ici sera automatiquement utilisée.
Exemples
1. Exemple simple (Minimal)
*&---------------------------------------------------------------------**& Report Z_MINIMAL_REPORT*&---------------------------------------------------------------------*REPORT Z_MINIMAL_REPORT.
START-OF-SELECTION. WRITE: / 'Ceci est un report minimal.'.Explication :
Déclare un programme exécutable avec le nom Z_MINIMAL_REPORT. Il utilise les paramètres par défaut pour l’en-tête, la largeur de ligne et le nombre de lignes.
2. Exemple avec ajouts
*&---------------------------------------------------------------------**& Report Z_REPORT_AVEC_OPTIONS*&---------------------------------------------------------------------*REPORT Z_REPORT_AVEC_OPTIONS NO STANDARD PAGE HEADING LINE-SIZE 120 LINE-COUNT 60(4) MESSAGE-ID ZDEMO_MSG.
* Événement pour l'en-tête de page (requis car en-tête standard désactivé)TOP-OF-PAGE. WRITE: / 'En-tête de page personnalisé - Page:', sy-pagno. ULINE.
* Événement pour le pied de pageEND-OF-PAGE. ULINE. WRITE: / 'Confidentiel - Usage interne uniquement'.
* Bloc d'événement principalSTART-OF-SELECTION. WRITE: / 'Début du traitement des données...'.
DO 70 TIMES. WRITE: / 'Ligne numéro:', sy-index. ENDDO.
MESSAGE i001(ZDEMO_MSG). " Message 001 de la classe ZDEMO_MSG (Info)Explication :
- Déclare le programme
Z_REPORT_AVEC_OPTIONS. NO STANDARD PAGE HEADING: L’en-tête normal est supprimé. À la place, un en-tête personnalisé est défini dansTOP-OF-PAGE.LINE-SIZE 120: La liste de sortie fait 120 caractères de large.LINE-COUNT 60(4): Chaque page comporte 60 lignes, dont les 4 dernières sont réservées pour la zone de pied de page (END-OF-PAGE).MESSAGE-ID ZDEMO_MSG: La classe de messagesZDEMO_MSGest définie comme standard pour les instructionsMESSAGE.
Remarques importantes
- L’instruction
REPORTest spécifique aux programmes de type ‘1’ (Programme exécutable). D’autres types de programmes (modules fonction, pools de classes, pools de sous-routines, etc.) utilisent d’autres instructions d’introduction (par ex.FUNCTION-POOL,CLASS-POOL,PROGRAM). - Dans les développements ABAP modernes, en particulier lors de l’utilisation d’ALV (ABAP List Viewer) pour afficher les données, les ajouts de formatage de liste (
LINE-SIZE,LINE-COUNT,NO STANDARD PAGE HEADING) perdent de leur importance, car le framework ALV prend en charge la présentation. Ils sont cependant essentiels pour la compréhension et la maintenance des anciens reports.