Aufgabe
Wir brauchen eine Testumgebung und wollen uns komplett in der Eclipse Welt ohne SAPGUI bewegen. Da uns Reports nicht mehr zur Verfügung stehen, brauchen wir eine Alternative.
Diese Alternative für die moderne ABAP Cloud Welt heißt Konsolenanwendung.
In dieser Aufgabe wird zuerst eine solche einfache Konsolenanwendung erstellt. In einem zweiten Schritt wird diese dann noch optimiert, so dass wir danach sehr universell testen können.
Lernziele
- Den Umgang mit Eclipse üben
- Konsolenanwendungen kennenlernen
- Eine ABAP Objects Klasse über den Eclipse Wizard anlegen
- Erster Kontakt mit Interfaces und Vererbung
- Perspektiven ABAP und Debug kennenlernen
Vorgehensweise
Achtung: Überall ## durch eigene Teilnehmernummer ersetzen.
ABAP Klasse anlegen
- Eclipse öffnen
- Paket
$TMP auswählen
- Über das Kontextmenü
New - ABAP Class auswählen
- Wizard wie folgt verwenden:
- Name:
ZCL_BC_AOO_##_TESTTOOL_SAP
- Description:
Brandeis Training: ABAP Objects - Testtool SAP Standard ##
- Interface:
IF_OO_ADT_CLASSRUN über die Suchhilfe zuordnen
- Wizard abschließen
Interface implementieren
- im Code wurde bereits eine Methode
if_oo_adt_classrun~main angelegt
- hier den Code
out->write( |Hallo ABAP Objects!| ). einbauen
- Mit
STRG-F3 aktivieren
- mit
F9 die Konsolenanwendung starten
- Es sollte sich die Sicht
Console öffnen und Hallo ABAP Objects! anzeigen
Debugger testen
- Breakpoint am Befehl
out->write setzen (Doppelklick auf Rand oder STRG-Umsch-B)
- noch mal mit
F9 starten
- es öffnet sich die Perspektive
Debug
- am rechten Rand werden die Variablen des Debuggers angezeigt
- hier darauf achten, dass die Variable
ME ein {O:101*\CLASS=ZCL* anzeigt. Das ist ein Hinweis auf eine Objektinstanz!
- Mit den Tasten
F5-F8 den Debugger bedienen - F8 für Programm ohne Unterbrechung fortsetzen
- Nach dem Ende die Perspektive
ABAP wählen
Eine weitere Konsolenanwendung erstellen für unsere späteren Übungen
- Klasse
ZCL_BC_AOO_##_TESTTOOL_SAP auswählen
- Im Kontextmenü
Duplicate auswählen
- Den Namen ändern in
ZCL_BC_AOO_##_TESTTOOL_BEC (BEC für Brandeis Consulting)
- Wizard abschließen - die neue Klasse erscheint im Arbeitsbereich
- View
Properties öffnen und unter General den Beschreibungstext ändern: SAP Standard ## durch BEC Experts ## ersetzen
- Im oberen Abschnitt
DEFINITION hinter CREATE PUBLIC vor dem Punkt INHERITING FROM zcl_bc_aoo_testtool_helper einfügen (Hinweis: hiermit wird eine Vererbung definiert)
- In der
PUBLIC SECTION hinter der Zeile INTERFEACES ... eine neue Zeile METHODS test_hello. einfügen (Hinweis: hiermit wird eine neue public sichtbare Methode definiert)
- Die Fehlermeldung ignorieren und auf
test_hello die Tastenkombination STRG-1 für Quickfix aufrufen.
- Es erscheint eine Option für das Anlegen einer Implementierung für die neue Methode
test_hello. Aufrufen.
- Die Implementierung der Methode
test_hello mit dem Inhalt der bisherigen Interface-Methode if_oo_adt_classrun~main auffüllen
- Den Code in der Methode
if_oo_adt_classrun~main mit dem folgendem Code ersetzen:
Code für if_oo_adt_classrun~main
METHOD if_oo_adt_classrun~main.
me->out = out. me->attendee_id = '99'. me->virtual_player = 3.
data(lv_method) = |test_hello|.
test_start( ).
test_info( ).
test_method( lv_method ).
test_end( ).
ENDMETHOD.
- Pretty-Printer mit
Strg-Umsch-F ausführen
- Aktivieren mit
Strg-F3
Debugger testen und Variable ändern
- Danach erneut Breakpoint setzen: z.B. auf
test_start( ) und mit F9 das Programm und damit auch den Debugger ausführen
- auf Variable
lv_method im Debugger Variables View gehen und Change Value auswählen
- diesen Wert ändern: z.B.
test_hello2 und bestätigen
- Der Wert hat sich auch im View
Variables geändert
- Programm fortsetzen mit
F8
- es erscheint eine Fehlermeldung im View
Console
- Hintergrund: damit können wir später neue Methoden testen ohne ein neues Testtool bauen zu müssen
Vorgehensweise für neue Methode
- im Bereich
DEFINITION die Zeile für Methode test_hello kopieren, dahinter wieder einfügen und einen neuen Namen vergeben: z.B. test_hello2
- im Bereich
IMPLEMENTATION die Methode test_hello komplett kopieren und dahinter wieder einfügen
- den Namen der Methode ändern auf den Namen, der zuvor gewählt wurde
- den Code entsprechend den Übungen ersetzen - zum Testen einfach gegen
out->write( |Hallo ABAP Objects 2!| ). ersetzen
- sichern und aktivieren
- Danach den Test aus 8 wiederholen
- Die Fehlermeldung sollte jetzt nicht mehr auftreten und eine andere Meldung in der
Console erscheinen
Glückwunsch!
Wir haben erfolgreich die Grundlagen geschaffen, um unsere weiteren Übungen einfach testen zu können. So nebenbei hatten wir bereits Kontakt mit ein paar grundlegenden ABAP Objects Funktionen und ein bisschen Eclipse geübt.
Lösung
Lösung Testtool SAP Standard
CLASS zcl_bc_aoo_##_testtool_sap DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
INTERFACES if_oo_adt_classrun .
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_bc_aoo_##_testtool_sap IMPLEMENTATION.
METHOD if_oo_adt_classrun~main.
out->write( |Hallo ABAP Objects!| ).
ENDMETHOD.
ENDCLASS.
Lösung Testtool BEC Experts
CLASS zcl_bc_aoo_##_testtool_bec DEFINITION
PUBLIC
FINAL
CREATE PUBLIC
INHERITING FROM zcl_bc_aoo_testtool_helper.
PUBLIC SECTION.
INTERFACES if_oo_adt_classrun .
METHODS test_hello.
METHODS test_hello2.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_bc_aoo_##_testtool_bec IMPLEMENTATION.
METHOD if_oo_adt_classrun~main.
me->out = out. me->attendee_id = '99'. me->virtual_player = 3.
DATA(lv_method) = |test_hello|.
test_start( ).
test_info( ).
test_method( lv_method ).
test_end( ).
ENDMETHOD.
METHOD test_hello.
out->write( |Hallo ABAP Objects!| ).
ENDMETHOD.
METHOD test_hello2.
out->write( |Hallo ABAP Objects 2!| ).
ENDMETHOD.
ENDCLASS.
Zusatzaufgaben
Wer zu schnell fertig ist, der kann mit dem Debugger mal in die geerbten Methoden abtauchen und den Umgang mit dem Debugger und den Funktionstasten F5-F8 üben
Weitere Hinweise
Das folgende SAP Learning beschreibt die Anlage von Eclipse Konsolenanwendungen
Der Expertenmodus kommt natürlich durch die Vererbung aus Klasse ZCL_BC_AOO_TESTTOOL_HELPER. Hier kann man sich vielleicht einige Anregungen für eigene wiederverwendbare Tools holen.