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:
-
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
).
-
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).
-
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 EreignisblockEND-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.
-
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 ZusatzUSING
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 SeitenfussEND-OF-PAGE. ULINE. WRITE: / 'Firmengeheimnis - Nur fuer interne Zwecke'.
* HauptereignisblockSTART-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 imTOP-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 NachrichtenklasseZDEMO_MSG
wird als Standard fürMESSAGE
-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.