Instruction ABAP REPORT : Syntaxe, options et exemples pour programmes exécutables

Catégorie
ABAP-Statements
Publié
Auteur
Johannes

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 :

  1. 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).
  2. 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).
  3. 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énement END-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.
  4. 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 MESSAGE dans le programme sans l’ajout USING, 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 page
END-OF-PAGE.
ULINE.
WRITE: / 'Confidentiel - Usage interne uniquement'.
* Bloc d'événement principal
START-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 dans TOP-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 messages ZDEMO_MSG est définie comme standard pour les instructions MESSAGE.

Remarques importantes

  • L’instruction REPORT est 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.