Die Entwicklung mit ABAP erfordert inzwischen eine Unmenge von Wissen. In den letzten Jahren hat sich einiges bei den ABAP-Sprachelementen getan. Angefangen hat es mit String Templates, mit denen sich Zeichenketten einfacher und ohne Hilfsvariablen zusammensetzen lassen. Darüber hinaus sind nach und nach weitere Funktionen aus verschiedenen Bereichen hinzugekommen:

In den letzten zehn Jahren ist unglaublich viel Bewegung im ABAP-Umfeld. Neue Techniken, wie CDS-Views, UI5, RAP, CAP oder Cloud habe ich noch nicht einmal erwähnt …

Die Herausforderungen für SAP-Entwicklerinnen und -Entwickler sind dementsprechend groß und es stellt sich die Frage, wie man all diese Sprachelemente lernen soll.

In diesem Blogbeitrag möchte ich Ihnen zeigen, wie Voraussetzungen für Entwickelnde im eigenen SAP-System geschaffen werden, sodass sich diese nach und nach und im eigenen Tempo weiterbilden können.

Eigene Schulungsplattform aufbauen

Das Lernen von neuen Sprachelementen erweist sich mitunter als recht schwierig, da erstens Zeit und zweitens konkrete Anwendungsfälle fehlen. Zusätzlich müssen Entwickelnde erkennen, wann sich welches Sprachelement sinnvoll einsetzen lässt.

Eine Idee ist, dass Sie kleine Schulungsaufgaben vorgeben und diese von Entwickelnden lösen lassen. Damit Sie diese nicht kontrollieren müssen, bietet es sich an, die Ergebnisse der Aufgaben automatisiert durch Unit-Tests prüfen zu lassen. Auf diese Weise bekommen die Lernenden schnell und direkt eine Rückmeldung zu ihren Bemühungen.

Meine Idee ist die Folgende:

  • Sie erstellen ein Interface mit Übungsaufgaben. Die Aufgabenstellung können Sie mit Hilfe von ABAPdoc erstellen.
  • Sie erstellen eine globale Testklasse, in der Sie die Ergebnisse der Übungsmethoden mit Hilfe von Unit-Tests überprüfen.
  • Die Lernenden erstellen eine Klasse (mit dem eigenen Namenskürzel), in der sie das Interface mit den Übungsaufgaben implementieren und die Aufgaben mit entsprechendem Coding lösen.
  • In der Klasse wird eine Testklasse erstellt, die von der globalen Testklasse erbt. Auf diese Weise werden die Unit-Tests für die Klasse ausgeführt.

Die Aufgaben können nach und nach erweitert und verfeinert werden. Für verschiedene Bereiche können Sie unterschiedliche Klassen mit entsprechenden Aufgaben definieren.

Interface mit Übungsaufgaben erstellen

Im Folgenden zeige ich Ihnen, wie das Interface mit Übungsaufgaben aussehen kann.

Copy to Clipboard

Klasse mit Musterlösungen erstellen

Sie müssen eine Klasse erstellen, die das Interface mit den Übungsmethoden implementiert. Diese benötigen Sie, um sicherzugehen, dass die globale Master-Testklasse korrekt funktioniert.

So könnte die Klasse bspw. aussehen:

Copy to Clipboard

Test-Master erstellen

Erstellen Sie eine globale Testklasse, die Methoden mit entsprechend sinnvollen Unit-Tests enthält.

Definition der Klasse

Die Definition der Test-Masterklasse enthält Testmethoden. Diese müssen in der PROTECTED SECTION untergebracht werden, um die Methoden an die lokale Testklasse der Übungsklasse zu vererben. In der Methode SETUP wird eine Instanz der zu testenden Klasse erzeugt. Hierfür wird die bereits erstellte Klasse mit den Musteraufgaben benötigt. Die Instanzvariable CUT (kurz für „Code Under Test“) enthält die Referenz auf die Musteraufgabenklasse.

Copy to Clipboard

Implementierung der Klasse

In der Implementierung der Test-Masterklasse werden die Werte, die die Musterlösung erzeugt, geprüft. Dies geschieht in der Regel mit Hilfe der Methode CL_ABAP_UNIT=>ASSERT_EQUALS:

Copy to Clipboard

Je komplizierter die Aufgaben sind, desto umfangreicher müssen die Unit-Tests sein, um die Richtigkeit der Ergebnisse sicherzustellen.

Unit-Tests „scharf schalten“

Normalerweise werden Unit-Tests in dem dafür vorgesehenen Bereich der Klasse „Test classes“ mit lokalen Testklassen erstellt. Wir gehen jetzt leicht anders vor und erstellen nur den Bereich der Testklasse, der nicht von der Master-Testklasse abgedeckt wird:

  • Definition der lokalen Testklasse mit Vererbung von der Master-Testklasse
  • Definition der Instanzvariablen CUT mit der aktuellen Klasse mit den Musterlösungen
  • Initialisierung der Instanzvariablen CUT

Copy to Clipboard

Testklasse

Die Unit-Tests können nun mit Hilfe der Tastenkombination STRG-SHIFT-F10 ausgeführt werden. Sofern die Implementierung und die Unit-Tests korrekt waren, wird dies entsprechend angezeigt (grüner Balken unten im Screenshot):

Unit-Test für ABAP-Selbst-Lern-Plattform

Was müssen Übende tun?

Jeder, der sich an den Übungen beteiligen möchte, geht so vor, wie in „Interface mit Übungsaufgaben erstellen“ und „Unit-Tests scharf schalten“ beschrieben. Der Name der Klasse sollte einerseits den Übungsbereich“ (in diesem Beispiel VALUE) enthalten, als auch das eigene Namenskürzel. Auf diese Weise haben alle Teilnehmenden einen eigenen Übungsbereich.

Zusätzlich haben alle ihre eigene Musterlösung, auf die sie bei Bedarf zurückgreifen können.

Mit etwas mehr Aufwand könnten die Übungsklassen automatisch mit Hilfe des Funktionsbausteins SEO_CLASS_CREATE_COMPLETE angelegt werden. Die Übenden müssten dann nur die zu kopierende Klasse auswählen und ihr Namenskürzel angeben. Den Rest könnte das Programm erledigen.

Sourcecode

Der Sourcecode für einige Beispiele kann auf der Inwerken-Github-Seite mit Hilfe von abapGit installiert werden.

Fragen? Einfach schreiben an sapentwicklung@inwerken.de .