ABAP REPORT-Anweisung: Syntax, Optionen und Beispiele für ausführbare Programme

kategorie
ABAP-Statements
Veröffentlicht
autor
Johannes

Die REPORT-Anweisung ist die erste Anweisung (abgesehen von Kommentaren) in einem ausführbaren ABAP-Programm. Sie dient dazu, ein Programm explizit als ausführbares Programm (oft als “Report” bezeichnet) zu deklarieren. Wenn du ein Programm in der Transaktion SE38 oder SE80 mit dem Typ “Ausführbares Programm” anlegst, wird diese Anweisung automatisch vom System generiert.

Sie legt grundlegende Eigenschaften für das Programm fest, insbesondere für die klassische Listausgabe (wenn das Programm Daten direkt mit WRITE ausgibt).

Syntax

Die grundlegende Syntax lautet:

REPORT <programmname> [zusatz1] [zusatz2] ... .
  • <programmname>: Dies ist der Name des ABAP-Programmobjekts, wie er in der Entwicklungsumgebung (SE38/SE80) vergeben wurde. Er ist obligatorisch und muss mit dem tatsächlichen Programmnamen übereinstimmen.
  • [zusatz1] [zusatz2] ...: Dies sind optionale Zusätze, mit denen du das Verhalten des Reports beeinflussen kannst, insbesondere die Formatierung der Standard-Listausgabe.

Wichtige Zusätze (Optionen)

Hier sind einige der gebräuchlichsten optionalen Zusätze:

  1. NO STANDARD PAGE HEADING:

    • Zweck: Unterdrückt die Ausgabe der Standard-Kopfzeile auf jeder Seite der Liste. Die Standard-Kopfzeile enthält normalerweise den Programmnamen, die Seitenzahl und das Datum.
    • Verwendung: Nützlich, wenn du eine komplett eigene Kopfzeile gestalten möchtest (z. B. im Ereignisblock TOP-OF-PAGE).
  2. LINE-SIZE <breite>:

    • Zweck: Legt die maximale Breite der Zeilen für die Listausgabe in Zeichen fest.
    • <breite>: Eine Zahl, die die gewünschte Zeichenanzahl pro Zeile angibt (z. B. LINE-SIZE 132).
    • Standard: Wenn nicht angegeben, wird ein systemdefinierter Standardwert verwendet (oft 80 oder 132, abhängig von den Systemeinstellungen).
  3. LINE-COUNT <zeilen>(<fusszeilen>):

    • Zweck: Definiert die Anzahl der Zeilen pro Seite für die Listausgabe.
    • <zeilen>: Die Gesamtzahl der Zeilen pro Seite (inklusive Kopf- und Fußzeilen).
    • (<fusszeilen>): Optional. Gibt an, wie viele Zeilen am unteren Seitenrand für die Fußzeile reserviert werden sollen. Diese Zeilen können dann im Ereignisblock END-OF-PAGE gefüllt werden.
    • Beispiel: LINE-COUNT 65(5) bedeutet 65 Zeilen pro Seite, davon sind die letzten 5 für den Fußbereich reserviert.
  4. MESSAGE-ID <nachrichtenklasse>:

    • Zweck: Legt eine Standard-Nachrichtenklasse für das Programm fest.
    • <nachrichtenklasse>: Der zweistellige Bezeichner einer Nachrichtenklasse (angelegt in Transaktion SE91).
    • Verwendung: Wenn du später im Programm die MESSAGE-Anweisung ohne den Zusatz USING verwendest, wird automatisch diese hier definierte Nachrichtenklasse herangezogen.

Beispiele

1. Einfaches Beispiel (Minimal)

*&---------------------------------------------------------------------*
*& Report Z_MINIMAL_REPORT
*&---------------------------------------------------------------------*
REPORT Z_MINIMAL_REPORT.
START-OF-SELECTION.
WRITE: / 'Dies ist ein minimaler Report.'.

Erklärung:

Deklariert ein ausführbares Programm mit dem Namen Z_MINIMAL_REPORT. Es verwendet die Standardeinstellungen für Kopfzeile, Zeilenbreite und Zeilenanzahl.

2. Beispiel mit Zusätzen

*&---------------------------------------------------------------------*
*& Report Z_REPORT_MIT_OPTIONEN
*&---------------------------------------------------------------------*
REPORT Z_REPORT_MIT_OPTIONEN
NO STANDARD PAGE HEADING
LINE-SIZE 120
LINE-COUNT 60(4)
MESSAGE-ID ZDEMO_MSG.
* Event fuer den Seitenkopf (wird benoetigt, da Standardkopfzeile aus)
TOP-OF-PAGE.
WRITE: / 'Eigener Seitenkopf - Seite:', sy-pagno.
ULINE.
* Event fuer den Seitenfuss
END-OF-PAGE.
ULINE.
WRITE: / 'Firmengeheimnis - Nur fuer interne Zwecke'.
* Hauptereignisblock
START-OF-SELECTION.
WRITE: / 'Beginn der Datenverarbeitung...'.
DO 70 TIMES.
WRITE: / 'Zeile Nummer:', sy-index.
ENDDO.
MESSAGE i001(ZDEMO_MSG). " Nachricht 001 aus Klasse ZDEMO_MSG (Info)

Erklärung:

  • Deklariert das Programm Z_REPORT_MIT_OPTIONEN.
  • NO STANDARD PAGE HEADING: Die normale Kopfzeile wird unterdrückt. Stattdessen wird im TOP-OF-PAGE eine eigene definiert.
  • LINE-SIZE 120: Die Ausgabeliste ist 120 Zeichen breit.
  • LINE-COUNT 60(4): Jede Seite hat 60 Zeilen, die letzten 4 sind für den Fußbereich (END-OF-PAGE) reserviert.
  • MESSAGE-ID ZDEMO_MSG: Die Nachrichtenklasse ZDEMO_MSG wird als Standard für MESSAGE-Anweisungen gesetzt.

Wichtige Hinweise

  • Die REPORT-Anweisung ist spezifisch für Programme vom Typ ‘1’ (Ausführbares Programm). Andere Programmtypen ( Funktionsbausteine, Klassenpools, Subroutinenpools etc.) verwenden andere einleitende Anweisungen (z. B. FUNCTION-POOL, CLASS-POOL, PROGRAM).
  • In modernen ABAP-Entwicklungen, besonders bei Verwendung von ALV (ABAP List Viewer) zur Anzeige von Daten, verlieren die Zusätze zur Listformatierung (LINE-SIZE, LINE-COUNT, NO STANDARD PAGE HEADING) an Bedeutung, da das ALV-Framework die Darstellung übernimmt. Sie sind jedoch für das Verständnis und die Wartung älterer Reports unerlässlich.