Es war ja mit NW ABAP 7.52+ bekannt direkt über die ABAP Development Tools Klassen auszuführen und beispielsweise Daten in der Konsole auszugeben. Dafür musste das Interface if_oo_adt_classrun implementiert sein.
Die Klasse konnte dann direkt über F9 oder Rechtsklick > Run As > ABAP Application (Console) ausgeführt werden.
Das funktioniert auch sehr einfach.
CLASS zcl_test_sascha DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
interfaces if_oo_adt_classrun.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_test_sascha IMPLEMENTATION.
METHOD if_oo_adt_classrun~main.
SELECT * FROM zzt_test_sascha INTO TABLE @DATA(lt_test_sascha).
DATA(ls_test_sascha) = lt_test_sascha[ 1 ].
out->write( data = ls_test_sascha ).
ENDMETHOD.
ENDCLASS.
Soweit so gut aber was passiert wenn eine Exception geschmissen wird die man nicht abfängt. Ändern wir also mal den Index auf 6 (Tabelle hat 4 Zeilen).
Dump! Wie es ja auch zu erwarten ist. Den kann man sich wunderbar in den ADT oder im System anschauen, analysieren und so weiter.
Was aber interessant und neu ist. Die abstrakte Klasse cl_xco_cp_adt_simple_classrun. Von dieser kann man einfach eine Unterklasse erstellen und diesmal die main-Methode redefineren.
Darin führen wir jetzt dieselben 3 Zeilen Code aus.
CLASS zcl_test_simple_classrun DEFINITION
PUBLIC
INHERITING FROM cl_xco_cp_adt_simple_classrun
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
PROTECTED SECTION.
METHODS: main REDEFINITION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_test_simple_classrun IMPLEMENTATION.
METHOD main.
SELECT * FROM zzt_test_sascha INTO TABLE @DATA(lt_test_sascha).
DATA(ls_test_sascha) = lt_test_sascha[ 8 ].
out->write( ia_data = ls_test_sascha ).
ENDMETHOD.
ENDCLASS.
Und das Ergebnis… diesmal in der Konsole.
Mag Spielerei sein kann aber für Tests doch ganz interessant sein. 🙂
Sei der Erste der einen Kommentar abgibt