This is a test message to test the length of the message box.
Login
ABAP Cloud Test Daten Container
Erstellt von Software-Heroes

ABAP Cloud - Test Daten Container

107

Test Daten Container sind unter ABAP Cloud nicht freigegeben, wie also auf generische Testdaten zugreifen können? Hier ein Vorschlag für ein einfaches Framework.

Werbung


In diesem Artikel wollen wir dir das Open Source Projekt für die Test Daten Container vorstellen. Dabei werden wir auf den Aufbau und die Verwendung eingehen und dir weitere Möglichkeiten zeigen. Die Idee entstand in einer Diskussion mit Frank Engert.

 

Einleitung

Test Daten Container werden zum Testen im SAP System verwendet. Damit kannst du ganz einfach generische Daten ablegen und pflegen, ohne den eigentlichen Unit Test später anpassen zu müssen. Möchtest du etwas über die klassische Verwendung erfahren, dann gibt es hier einen Artikel in der SAP Community. Allerdings wurden die Container nicht für ABAP Cloud freigegeben, da es auch kein passendes Frontend für die Pflege der Daten gibt. Aktuell müssten damit alle Testdaten am Testfall gepflegt werden, was es etwas unhandlich und unübersichtlich macht.

 

Architektur

Die Architektur der Komponente ist relativ einfach gehalten und wir verwenden einige Standards wieder. Die Idee ist, einen externen Editor zu verwenden, um die Daten in strukturierten Formaten zu pflegen und die Formatierungsoptionen genau dieser Editoren zu verwenden. Damit übernimmt zum Beispiel der JSON Editor von GitHub die Validierung und Formatierung des Inhalts, ähnlich der Pflege in der SAP GUI. Im Anschluss können wir die Datei aus GitHub über das HTTP Protokoll beziehen und in unseren Tests verwenden. Dabei werden aktuell die Formate JSON, abapXML und RAW unterstützt.

 

 

Hinweis: Aktuell wird nur ABAP Cloud in der Public Cloud unterstützt, da wir den neuen HTTP Client verwenden, um eine Verbindung ins Internet aufzubauen.

 

Pflege 

Die Pflege der Daten geschieht außerhalb von ABAP. In diesem Beispiel verwenden wir die integrierte IDE in GitHub, um die Daten zu pflegen. Im Beispiel fehlt zum Beispiel ein Komma, der Editor markiert die entsprechende Stelle, sodass wir Unterstützung bei der Pflege der Daten erhalten und ein korrektes Format liefern.

 

Verwendung

In diesem Kapitel schauen wir uns die Verwendung für Unit Tests und innerhalb der Logik an. Um die Daten zu Lesen verwenden wir die 

 

Konfiguration

Eine Konfiguration bildet einen Zugriffsweg und die Leseroutine für diesen ab. Aktuell gibt es nur die Konfiguration für GitHub, diese findest du in der Klasse ZCL_TDC_GITHUB_CONFIG. Eine neue Konfiguration erzeugen wir, in dem wir den Pfad zur Datei an den Konstruktor übergeben.

DATA(configuration) = NEW zcl_tdc_github_config( test_file_path ).

 

Für das Laden der Datei wird der Pfad zum RAW File benötigt. Wenn du dir die Datei in GitHub anschaust, gibt es in der rechten Ecke einen Button, damit wird die Datei in der passenden Ansicht geladen. Diesen Pfad verwenden wir als Quelle für die Konfiguration.

 

Container

Im nächsten Schritt erzeugen wir uns einen Container, um an die Datei kommen zu können. Dazu übergeben wir die Konfiguration an die Methode der Factory und erhalten den Container zur Verwendung zurück.

DATA(container) = zcl_test_container_factory=>create( configuration ).

 

Der Container bietet uns verschiedene Methoden, um an die Daten zu kommen. Es gibt zwei Methoden um den Inhalt der Datei im RAW Format zu erhalten, einmal als String oder als XString. Über die anderen zwei Methoden können wir unsere Tabelle oder Struktur befüllen lassen, hier sind entsprechende Parser in den Methoden inkludiert.

 

Daten

Wollen wir nun die Daten laden, dann benötigen wir eine Struktur bzw. Tabelle, auf die wir die Daten mappen können. Dazu definieren wir uns einen lokalen Typen, der das gleiche Format wie die JSON-Datei hat.

TYPES: BEGIN OF github_test,
         text    TYPE string,
         number  TYPE i,
         boolean TYPE abap_bool,
       END OF github_test.
TYPES github_tests TYPE STANDARD TABLE OF github_test WITH EMPTY KEY.

 

Um nun die Daten zu lesen und in die Struktur zu befüllen, müssen wir nur die entsprechende Methode aufrufen. In diesem Fall lesen wir die Daten als JSON. Im Hintergrund wird der HTTP Client genutzt, um die Daten Live von GitHub zu laden.

container->get_json_data( CHANGING generic = result ).

 

Beispiele

Weitere Beispiele zur Verwendung es Test Daten Container findest du in den Unit Tests der Klasse ZCL_TEST_CONTAINER. Dort werden alle Methoden mit Beispielen aus dem Repository verwendet und du findest weitere Informationen zur Anlage der Struktur

 

GitHub

Das komplette Open Source Projekt für die Test Daten Container findest du bei uns im GitHub Repository. Das Projekt kannst du frei verwenden.

 

Fazit

Das kleine Framework kannst du nutzen, um komplexe Daten über eine externe Plattform zu verwalten und die Kapazitäten anderer Editoren zur Pflege zu verwenden. Grundsätzlich hast du mit der Komponente aber eine Abhängigkeit, sollte zum Beispiel das Internet mal nicht funktionieren. Am Ende kannst du den Container aber auch verwenden, um Daten für die Verarbeitung zur Verfügung zu stellen, da das Framework nicht nur auf Unit Tests eingeschränkt ist.


Enthaltene Themen:
ABAP CloudABAPTest Daten Container
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 Cloud - Message Logging

Kategorie - ABAP

Wie loggst du im Moment eigentlich Nachrichten über größere Blöcke von ABAP Code und wie gehst du dabei mit den unterschiedlichen Formaten um? Mal wieder ein neues Open Source Projekt.

22.08.2025

ABAP Cloud - Clean Core Level Concept

Kategorie - ABAP

Das neue Clean Core Level Concept für ABAP Cloud ist da, dieses löst das 3-TIER Model ab. In diesem Artikel schauen wir uns die Änderungen und Anpassungen im Detail an.

15.08.2025

ABAP Cloud ... ohne BTP?

Kategorie - ABAP

In diesem Artikel gehen wir der Frage nach, ob ABAP Cloud auch ohne BTP möglich ist und was du dabei beachten solltest.

24.06.2025

ABAP Cloud - Fähigkeiten für den Start

Kategorie - ABAP

Wann kannst du eigentlich mit moderner ABAP Entwicklung starten und welche Fähigkeiten brauchst du dafür mindestens? Lass uns diese Frage gemeinsam klären.

17.06.2025

ABAP Cloud - Systemfelder (Lösung)

Kategorie - ABAP

Wie könnte eine Lösung für ABAP Cloud aussehen, um an die Systeminformationen und -felder zu gelangen und dabei testbar und offen zu bleiben? Hier mehr.

13.06.2025