This is a test message to test the length of the message box.
Login
Aufbau eines Reports
Erstellt von Software-Heroes

ABAP - Aufbau eines Reports

3047

Wie geht es weiter nach dem virtuellen Ende des Forms? Wie solltest du den Report aufbauen, was ist zu beachten und was gibt es für nützliche Sachen. Mehr dazu in diesem Artikel.

Werbung


Im letzten Artikel haben wir die Möglichkeiten betrachtet, wie wir Klassen in den Report implementieren und somit von den  mittlerweile obsoleten Forms wegkommen. Heute wollen wir mit dir zusammen aufzeigen, was sich sonst noch so bei der Strukturierung ändern lässt, um sauberen und übersichtlichen Code zu generieren.

 

Die Klasse

Bei der Implementierung der Klasse wird man erst einmal vor der Frage stehen, wie soll die Klasse implementiert werden. Willst du sie lokal anlegen oder global? Soll sie statisch sein, mit einer Instanz oder im Singleton Prinzip arbeiten?

Jede dieser Implementierungen hat natürlich eigene Vor- und Nachteile, das sollte dir bewusst sein, bei der Auswahl der passenden Methode für die Implementierung.

  1. Solltest du dir Gedanken darüber machen, ob du die Klasse vielleicht noch einmal verwenden willst oder ob sie so statisch ist, dass sie nur zu diesem einen Fall passt, dann greife zu einer lokalen Klasse direkt im Programm.
  2. Möchtest du die Klasse wiederverwenden und sie leicht abgewandelt in anderen Reports einsetzen, dann verwende eine nicht finale globale Klasse.
  3. Bei einer lokalen Klasse kannst du je nach eigenem Geschmack entscheiden. Willst du eine Instanz, dann lege die Klasse als Instanz bei der Initialisierung bzw. beim Load-of-Program an.

 

Struktur

Bei der Anlage eines neuen Reports ist eine gute Struktur der erste Teil zum Ziel. Die Übersichtlichkeit und die Navigation im Report ist auch wichtig für deine Kollegen, die später einmal den Report übernehmen oder warten müssen.

Von daher solltest du dir ganz zu Anfang Gedanken darüber machen, wie du allgemein deine Reports strukturieren möchtest. Wir wollen dir daher einen Vorschlag dazu geben.

 
Einstieg

Direkt nach dem Einstieg solltest du direkte Navigationsmöglichkeiten anbieten. Das Ganze am Beispiel einer statischen/lokalen Klasse.


*----------------------------------------------------------------------*
*--- Includes
*----------------------------------------------------------------------*
INCLUDE:
  ztest_01_top,
  ztest_01_sel,
  ztest_01_c01.

*----------------------------------------------------------------------*
*--- ABAP Events
*----------------------------------------------------------------------*
INITIALIZATION.
  lcl_prog=>init_program( ).

AT SELECTION-SCREEN OUTPUT.
  lcl_prog=>pbo_1000( ).

AT SELECTION-SCREEN.
  lcl_prog=>ucomm( sscrfields-ucomm ).

END-OF-SELECTION.
  lcl_prog=>start( ).

In dem gezeigten Beispiel startet das Programm mit den Includes des Reports, also alles was so an Daten und weiteren Definitionen zum Report dazu gehört. Danach folgen die Report Ereignisse der einzelnen Verarbeitungsschritte. In jedes Include und jede Methode der Events kann man mit einer Vorwärtsnavigation abspringen und sich direkt den Code ansehen.

 

Includes

Die Includes sorgen für eine saubere Strukturierung des Programms und der einzelnen Bestandteile. 

  • Im TOP-Include (_TOP) wird der Programmkopf und die Nachrichtenklasse definiert. Weiterhin werden alle globale Variablen und Typen definiert. Im Normalfall wird allerdings nur der Verweis auf die Screenfields (sccrfields) benötigt, die den Usercommand weitergibt (siehe oberes Beispiel).
  • Im Selektionsinclude (_SEL) liegen alle Selektionsbilder die für den Report benötigt werden.
  • In den Klassenincludes (_Cxx) liegen jeweils Klassendefinition- und Implementierung einer Klasse, um die Ressourcen vom Rest des Programms zu trennen.
  • Weiterhin könnte es noch ein Form-Include (_Fxx) geben, dass aber eigentlich nur noch für Modul-Routinen von Dynpros verwendet wird.

 

Selektionsbild

Bei der Übergabe der Daten vom Selektionsbild an die Klasse gibt es zwei grundlegende Konzepte:

  • Du verwendest die globalen Parameter und Select-Options direkt in der Klasse und greifst auf sie zu, als wären sie exterene Datenquellen.
  • Du übergibst die Parameter beim Start der Verarbeitung direkt an die Verarbeitungsroutine.

Der zweite Fall wäre eigentlich der Sauberste, dafür aber auch der aufwändigste, da du die einzelnen Select-Options auch im Eingang typisieren müsstest.

 

Datenhaltung

Die globalen Daten in einem Programm würden zum Großteil verschwinden, dies ist aber nicht immer möglich, da gewisse Werte global gehalten werden müssen. Dazu einige Beispiele:

  • Screenfields für die Weitergabe des Usercommands an die Methode zur Auswertung
  • Hilfsfelder für Select-Options des Selektionsbildes
  • Globale Tabellen für Dynpros zur Datenhaltung und zur Verarbeitung
  • Globale Typisierungen

 

Alle anderen Werte würden in die Klasse wandern, da hier auch die Verarbeitung stattfindet. Somit liegen zum Beispiel ...

  • Konstanten
  • Daten
  • Typisierungen

... alle in der Klasse.

Wie genau dann die einzelne Klasse implementiert wird, liegt an dir als Entwickler und sollte sorgsam durchdacht werden, ob dies deinem Konzept entspricht und ob dies auch leicht erweiterbar und wartbar ist.

 

Fazit

Dies sollte nur ein Beispiel für die Strukturierung eines Reports sein und stellt keine Verpflichtung für dich da. Vielleicht konnten wir dich mit dem Konzept etwas auf neue Ideen und Ansätze bringen, die du nun in deine tägliche Arbeit übernehmen kannst.


Enthaltene Themen:
Modernes ABAPReportsFORM
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden Dienstag und Freitag neuen Content im Bereich ABAP und unregelmäßig in allen anderen Bereichen. Schaue bei unseren Tools und Apps vorbei, diese stellen wir kostenlos zur Verfügung.


ABAP - XCO Reguläre Ausdrücke

Kategorie - ABAP

Schauen wir uns einmal die XCO Klassen für die regulären Ausdrücke an und wie damit recht einfach REGEX gegen Texte und Eingaben in ABAP Cloud absetzen kannst. Dabei vergleichen wir auch mit klassischem ABAP.

07.11.2025

ABAP - Escape

Kategorie - ABAP

Schauen wir uns in diesem Artikel einmal im Detail verschiedene Escape Varianten an, die du für die ABAP Entwicklung und Sicherheit im System benötigst.

07.10.2025

ABAP - Datum und Uhrzeit

Kategorie - ABAP

Schauen wir uns in diesem Artikel einmal die Datentypen für das Datum und die Uhrzeit in ABAP etwas genauer an. Hat sich zwischen den verschiedenen Releases etwas geändert und was solltest du heute noch nutzen?

03.10.2025

ABAP - Assign

Kategorie - ABAP

In diesem Artikel schauen wir uns verschiedene Varianten von ASSIGN an und wie du sie in ABAP im Alltag nutzen kannst, um deine Entwicklung effektiver zu machen.

26.09.2025

ABAP - XCO Nachricht und Sprache

Kategorie - ABAP

Was kannst du zusätzlich mit Nachrichten und den Sprachobjekten der XCO Bibliothek in ABAP Cloud machen? Lass uns der Frage im Detail nachgehen.

01.07.2025