SAP ABAP-Berichtsprogrammierung

⚡ Intelligente Zusammenfassung

Die ABAP-Reportprogrammierung erstellt ausführbare Programme, die große Datenmengen auswählen, verarbeiten und anzeigen. SAP Daten. Diese Seite erläutert die Ergänzungen im Berichtskopf, den Selektionsbildschirm, die Ereignissequenz, Formatierungsbefehle, interaktive Listen und logische Datenbanken.

  • 📊 Hauptzweck: Ein Berichtsprogramm liest Daten aus mehreren Tabellen, verarbeitet sie und stellt sie als Liste dar, die formatiert, heruntergeladen oder per E-Mail versendet werden kann.
  • 🧾 Programmtyp: Jeder Bericht ist ein ausführbares Programm vom Typ 1, das an einen Anwendungsbereich gebunden ist und ausschließlich ereignisgesteuert ist.
  • 🏁 Kopfzeilenergänzungen: KEINE STANDARD-SEITENÜBERSCHRIFT, LINE-GRÖSSE, LINE-COUNT und MESSAGE-ID gehören in die erste REPORT-Anweisung.
  • Auswahlbildschirm: PARAMETERS akzeptiert einen einzelnen Wert, SELECT-OPTIONS akzeptiert einen Bereich oder eine Menge von Werten.
  • Ereignisablauf: LOAD-OF-PROGRAM, INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION und END-OF-SELECTION werden in einer festen Reihenfolge ausgeführt.
  • 🖱️ Interaktive Listen: HIDE speichert die Feldwerte der ausgewählten Zeile, und HOTSPOT wandelt ein Listenfeld in ein anklickbares Element für die sekundäre Liste um.
  • 🗄️ Logische Datenbanken: Sie werden in SE36 erstellt, ersetzen SELECT-Anweisungen durch ein GET-Ereignis und fügen zentrale Autorisierungsprüfungen hinzu.

SAP ABAP-Berichtsprogrammierung

Was ist ABAP-Reportprogrammierung?

SAPABAP unterstützt zwei Programmtypen: Reportprogramme und Dialogprogramme. Reportprogramme werden verwendet, wenn große Datenmengen angezeigt werden müssen.

Zweck/Verwendung von Berichtsprogrammen

  • Sie werden verwendet, wenn Daten aus mehreren Tabellen ausgewählt und verarbeitet werden müssen, bevor sie präsentiert werden.
  • Wird verwendet, wenn Berichte ein spezielles Format erfordern.
  • Wird verwendet, wenn der Bericht heruntergeladen werden muss von SAP in eine Excel-Tabelle, auf die verteilt werden soll.
  • Wird verwendet, wenn der Bericht an eine bestimmte Person gesendet werden muss.

Wichtige Punkte, die Sie zum Berichtsprogramm beachten sollten

  • Berichtsprogramme sind immer ausführbare Programme. Der Programmtyp ist immer 1.
  • Jedes Berichtsprogramm entspricht einem bestimmten Anwendungstyp, z. B. mit Vertrieb, FI – CO usw. Es kann auch anwendungsübergreifend sein, z. B. vom Typ „*“.
  • Berichtsprogrammierung ist eine ereignisgesteuerte Programmierung.
  • Die erste Zeile eines Reportprogramms ist immer Report .
  • Um die Listenüberschrift oder den Namen des Programms zu unterdrücken, dient der Zusatz Keine Standardseitenüberschrift wird eingesetzt.
  • Mit dem Zusatz kann die Zeilengröße für einen bestimmten Bericht eingestellt werden Liniengröße .
  • Mit dem Zusatz kann die Zeilenanzahl für eine bestimmte Seite eingestellt werden Zeilenanzahl n(n1). N ist die Anzahl der Zeilen für die Seite und N1 ist die Anzahl der Zeilen, die für den Seitenfuß reserviert sind.
  • Um Informationen oder Fehlermeldungen anzuzeigen, fügen wir dem Programm eine Nachrichtenklasse mit dem Zusatz hinzu: Nachrichten ID . Nachrichtenklassen werden in SE91 gepflegt.

Daher sollte ein ideales Berichtsprogramm mit Folgendem beginnen:

Report <report name> no standard page heading

line-size <size>

line-count <n(n1)>

message-id <message class>.

Berichtsprogramm vs. Dialogprogramm

Beide Programmtypen laufen im selben System, lösen aber gegensätzliche Probleme. Ein Berichtsprogramm liest und zeigt Daten an, während ein Dialogprogramm dem Benutzer die Bearbeitung über Bildschirme ermöglicht.

Eigenschaften Berichtsprogramm Dialogprogramm
Programmtyp Typ 1, ausführbare Datei Typ M, Modulpool
Begonnen von Programmname oder Transaktionscode Nur ein Transaktionscode
Ablaufsteuerung Ereignisse wie INITIALISIERUNG und START-OF-SELECTION Bildschirmablauflogik mit PBO- und PAI-Modulen
Benutzereingabe Ein generierter Auswahlbildschirm Bildschirme, die im Bildschirm entworfen wurden Painter
Typische Verwendung Anzeigen und Herunterladen großer Datenmengen Erstellung und Änderung von Geschäftsdaten

Der Auswahlbildschirm ist der Ort, an dem ein Bericht seine Eingaben sammelt, daher wird er im Folgenden beschrieben.

Auswahlbildschirm

Der „Auswahlbildschirm“ ist der Bildschirm, auf dem die Eingabewerte festgelegt werden, für die das Programm ausgeführt werden soll.

Das Selektionsbild wird normalerweise aus dem generiert

  1. Kenngrößen
  2. Optionen wählen

Syntax

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 #>

Kenngrößen

Parameter helfen bei der dynamischen Auswahl. Sie können nur einen Wert für einen Ausführungszyklus des Programms aufnehmen.

Syntax

Parameter als Datentyp definieren

Parameters p_id(30) type c.

Parameter wie ein Tabellenfeld definieren.

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

Parameter können sowohl Checkboxen als auch Radiobuttons sein.

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

Parameter können Listenfelder sein.

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

Optionen wählen

Eine Select-Option wird verwendet, um einen Wertebereich oder einen Wertesatz in ein Programm einzugeben

Syntax

select-options s_vbeln for vbak-vbeln.

Auswahlbildschirm

Der Screenshot zeigt die Eingabefelder für „Niedrig“ und „Hoch“, die durch eine Auswahloption generiert werden, sowie die Schaltfläche für die Mehrfachauswahl.

Sie können eine Auswahloption auch wie eine Variable definieren

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

Sobald die Eingabedaten erfasst sind, reagiert das Programm auf eine festgelegte Abfolge von Ereignissen.

Ereignisse in einem ABAP-Reportprogramm

ABAP-Berichtsprogramme sind ereignisgesteuerte Programme. Die verschiedenen Ereignisse in einem Berichtsprogramm sind:

Programm laden

  • Löst das zugehörige Ereignis in einer internen Sitzung aus, nachdem ein Programm vom Typ 1, M, F oder S geladen wurde.
  • Außerdem wird der zugehörige Verarbeitungsblock einmal und nur einmal für jedes Programm und jede interne Sitzung ausgeführt.
  • Der Verarbeitungsblock LOAD-OF-PROGRAM hat für an ungefähr die gleiche Funktion ABAP-Programm vom Typ 1, M, F oder S wie ein Konstruktor für Klassen in ABAP Objects hat

Initialisierung.

  • Dieses Ereignis wird ausgeführt, bevor der Auswahlbildschirm angezeigt wird.
  • Initialisierung aller Werte.
  • Sie können von den auf dem Selektionsbild vorgeschlagenen Werten abweichende Werte zuordnen.
  • Sie können Ihren Selektionsbildschirm zur Laufzeit mit einigen Werten füllen.

Auf dem Auswahlbildschirm.

  • Das Ereignis wird verarbeitet, wenn das Selektionsbild verarbeitet wurde (am Ende von PAI).
  • Hier finden Validierungen und Prüfungen der eingegebenen Werte statt

Beginn der Auswahl.

  • Hier beginnt das Programm mit der Auswahl von Werten aus Tabellen.

Ende der Auswahl.

  • Nachdem alle Daten ausgewählt wurden, schreibt dieses Ereignis die Daten auf den Bildschirm.

Interaktive Veranstaltungen

  • Wird für interaktive Berichte verwendet. Es wird verwendet, um aus einer Grundliste eine detaillierte Liste zu erstellen.

💡 Tipp: Anweisungen, die ohne das Schlüsselwort "event" geschrieben werden, gehören standardmäßig zu START-OF-SELECTION. Deshalb wird ein Bericht auch dann ausgeführt, wenn das Ereignis fehlt.

Beispiel: Ein einfaches ABAP-Reportprogramm

Das untenstehende Programm verknüpft die Zusätze, den Selektionsbildschirm und die Ereignisse zu einem Arbeitsbericht. Es liest die Auftragskopfdaten aus VBAK für die im Selektionsbildschirm eingegebenen Nummern und schreibt sie als 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.

Drei Details sind hervorzuheben. INITIALIZATION füllt den Datumsparameter, bevor der Selektionsbildschirm erscheint. AT SELECTION-SCREEN validiert die Eingabe und gibt eine Meldung der Klasse ZSD aus. HIDE speichert die Ordnungsnummer jeder geschriebenen Zeile, sodass durch einen Doppelklick eine sekundäre Liste erstellt werden kann, die im nächsten Abschnitt behandelt wird.

Formatieren des Berichts

ABAP ermöglicht es, die Berichte so zu formatieren, wie es der Benutzer wünscht. Beispielsweise müssen „Alternative Zeilen“ in verschiedenen Farben angezeigt werden und die Zeile „Gesamtsummen“ sollte in Gelb angezeigt werden.

Syntax

Format Color n

Format Color n Intensified On

n kann verschiedenen Zahlen entsprechen

Bitte beachten Sie, dass es neben dem Format noch weitere Ergänzungen gibt

FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF

Interaktive Berichtsprogrammierung

  • Mithilfe interaktiver Programmierung können Benutzer die Datenabfrage und -anzeige aktiv steuern.
  • Wird verwendet, um aus einer sehr einfachen Liste eine detaillierte Liste zu erstellen.
  • Die detaillierten Daten werden in eine Sekundärliste geschrieben.
  • Die sekundäre Liste kann entweder den ersten Bildschirm vollständig überlagern oder in einem neuen Bildschirm angezeigt werden
  • Die sekundären Listen können selbst interaktiv sein.
  • Die erste Liste kann auch eine Transaktion aufrufen.
  • Mit der interaktiven Programmierung sind verschiedene Ereignisse verbunden.

Einige Befehle, die für die interaktive Programmierung verwendet werden

Hotspot

Wenn man mit der Maus über die im Bericht angezeigten Daten fährt, verwandelt sich der Cursor in eine Hand mit ausgestrecktem Zeigefinger. Ein Hotspot kann mit der FORMAT-Anweisung erreicht werden.

Syntax:      Format Hotspot On (Off).

Verbergen

Mit diesem Befehl können Sie die Feldnamen speichern, auf deren Grundlage die weitere Verarbeitung erfolgt, um eine detaillierte Liste zu erhalten. Es wird direkt nach der WRITE-Anweisung für ein Feld geschrieben. Wenn eine Zeile ausgewählt wird, werden die Werte automatisch zur weiteren Verwendung in die Variablen eingetragen.

Syntax:     Hide <field-name>.

Berichte, die viele Tabellen lesen, können ihre SELECT-Anweisungen durch eine logische Datenbank ersetzen, die im Folgenden beschrieben wird.

Logische Datenbanken

  • Anstatt „Select“-Abfragen zu verwenden, können Sie eine logische Datenbank verwenden, um Daten für ein Programm abzurufen.
  • Logische Datenbanken werden durch Transaktionen erstellt SE36
  • Der Name einer logischen Datenbank kann bis zu 20 Zeichen lang sein. Es kann mit einem Namespace-Präfix beginnen.
  • Die Daten werden von einem anderen Programm ausgewählt und man kann mit GET auf die Daten zugreifen Befehl, der die Daten im Arbeitsbereich platziert .

Vorteile einer logischen Datenbank gegenüber normalen Select-Abfragen.

  1. Es bietet Prüfbedingungen, um zu prüfen, ob die Eingabe korrekt, vollständig und plausibel ist
  2. Es enthält zentrale Berechtigungsprüfungen für den Datenbankzugriff
  3. Verbesserungen wie Leistungsverbesserungen wirken sich sofort auf alle Berichte aus, die eine logische Datenbank verwenden.

Hinweis: Aufgrund der Komplexität werden logische Datenbanken in den meisten Fällen nicht verwendet.

Häufig gestellte Fragen

PARAMETERS erstellt ein Eingabefeld, das einen einzelnen Wert aufnehmen kann. SELECT-OPTIONS erstellt eine interne Tabelle mit den Feldern SIGN, OPTION, LOW und HIGH und akzeptiert daher Bereiche, Ausschlüsse und Mehrfachauswahlen.

AT LINE-SELECTION reagiert auf einen Doppelklick oder die Taste F2, und AT USER-COMMAND reagiert auf einen Funktionscode aus dem Menü. Beide erstellen die sekundäre Liste aus den von HIDE gespeicherten Werten.

Das Listenmenü bietet die Optionen „Liste“, „Speichern“ und „Lokale Datei“ für einen klassischen Bericht. Ein Programm kann außerdem den Funktionsbaustein GUI_DOWNLOAD aufrufen, und eine ALV-Liste wird ohne zusätzlichen Programmieraufwand in eine Tabellenkalkulation exportiert.

Ja. KI-Assistenten in ABAP-Entwicklungswerkzeugen generieren den REPORT-Header, die SELECT-OPTIONS und die Ereignisblöcke anhand einer einfachen Beschreibung der benötigten Liste. Die generierte SELECT-Anweisung muss noch auf ihre Performance hin überprüft werden.

KI-Tools fassen lange Listen zusammen, heben Ausreißer hervor und beantworten Fragen zu den Daten in verständlicher Sprache. Die Integration solcher Analysen bedeutet üblicherweise die Umwandlung der klassischen Liste in eine ALV- oder Fiori-basierte Ausgabe.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: