ABAP Obsolet - Form
Beim Aufbau eines Report in SAP benötigt man vor allem eine sinnvolle Strukturierung, viele verwenden dazu noch Forms. Doch was kannst du nun machen, um diesen obsoleten Begriff zu ersetzen.
Inhaltsverzeichnis
Die Lösung des Problems ist recht einfach und wird bereits in der offiziellen Doku in einem kurzen Satz beschrieben. Du solltest auf jeden Fall nur noch Methoden verwenden.
Viele der alten Programme im System funktionieren aber noch genau so! Sie verwenden Forms um Coding Bestandteile zu kapseln, Ordnung in den Quellcode zu bringen und Programmbestandteile wiederverwenden zu können.
Lösung
Verwende dazu doch einfach Klassen! Sie strukturieren den Quellcode genau so schön und bieten viele Vorteile bei der Handhabung und Implementierung in bestehendes Coding.
Seit der Umstrukturierung durch das Moderne ABAP, funktionieren viele Dinge viel leichter. Ein Beispiel wäre die Implementierung von Methodenaufrufen mit Returning Parameter in IF Statements, was bis heute bei Forms nicht möglich ist.
" Aufruf Methode bei Prüfung
IF lcl_app=>check_selection( ) = abap_false.
" ... Code oder Nachricht
ENDIF.
Wir prüfen den Rückgabewert der Selektionsbild Prüfung und entscheiden wie es im Report weiter gehen soll. Dies sieht einfach und übersichtlich aus, vor dem Modernen ABAP sah das aber leider noch etwas anders aus.
" Variablendefinition
DATA ld_check TYPE abap_bool.
" alter Aufruf
CALL METHOD lcl_app=>check_selection
IMPORTING
ed_check = ld_check.
" Prüfung
IF ld_check = abap_false.
" ... Code oder Nachricht
ENDIF.
Hier erinnert die Umsetzung eher etwas an ein Form, wodurch viele Entwickler lieber bei ihrer altbewährten Technik bleiben wollten. Was wir an dieser Stelle auch verstehen können.
Verwendung
Die Verwendung in einem neuen Report ist ganz einfach, du musst dir nur die Klasse definieren und dann implementieren, schon kannst du sie in beliebigen Programmteilen aufrufen und verwenden.
" Klassendefinition
CLASS lcl_app DEFINITION.
PUBLIC SECTION.
CLASS-METHODS:
check_selection
RETURNING VALUE(rd_check) TYPE abap_bool.
PRIVATE SECTION.
ENDCLASS.
" Klassenimplementierung
CLASS lcl_app DEFINITION.
METHOD check_selection.
" ... Code
ENDMETHOD.
ENDCLASS.
Die Implementierung und die Definition der Schnittstelle sind immer von einander getrennt, was den Code sauber hält. Mit einem Doppelklick auf den Methodennamen kannst du einfach zwischen Definition und Implementierung hin- und herspringen.
Vorteile
Mit der Implementierung und dem Einsatz von Klassen, gibt es auch noch einige kleinere Vorteile die wir hier erwähnen wollen.
- Vermeidung eines obsoleten Befehls
- Strukturierung und Kapselung des Reports
- Einfache Implementierung von ABAP Unit Tests für den automatisierten Test der Entwicklung
- Verwendung als Inline Methoden
Fazit
Der Umstieg ist für dich zum Greifen nah, versuche es einmal in einem neuen Report oder einer kleinen Auswertung. Du wirst merken wie schnell du die Forms eigentlich vergessen hast und damit auch einen obsolten Teil einer moderner werdenden Sprache.
In einem nächsten Artikel wollen wir dann etwas genauer auf den Aufbau eines Reports nach den Forms zu sprechen kommen und die Strukturierung einmal etwas genauer beleuchten.
Quelle:
SAP Dokumentation - FORM