This is a test message to test the length of the message box.
Login
ABAP Tipp Aufbau von Testdaten
Erstellt von Software-Heroes

ABAP Tipp - Aufbau von Testdaten

203

Welche Herausforderungen hat man beim Aufbau von Testtabellen und Testdaten und wie kann dir die maschinelle Verarbeitung dabei helfen.

Werbung


Beim heutigen Tipp geht es um eine leichte Erstellung von Testdaten, eine Migration der Testanwendung in andere Systeme und die schnelle Wiederherstellung der Daten im System. Dabei schauen wir uns die verschiedenen Möglichkeiten einmal genauer im Detail an.

 

Daten bereitstellen

Du baust gerade eine neue Tabelle auf und möchtest diese direkt mit Daten befüllen? Hierbei gibt es zwei Wege die Daten in die Tabelle zu bekommen:

  • Anlage eines Pflegeviews
  • Einfügen per Programm

 

Setzen wir dazu erst einmal eine Tabelle auf. Der einfache und schnelle Weg ist dabei die Anlage über die ABAP Development Tools (ADT), da hier die Tabelle in einfacher Form definiert wird. Im Anschluss sparst du dir die Einstellung der technischen Details und den Absprung in die Erweiterungskategorie. Unsere Testtabelle sieht dabei wie folgt aus:

 

Pflegeview

Hierbei wird nach dem Erstellen der Tabelle ein Tabellenpflegeview angelegt. Mit diesem kannst du dann neue Datensätze einfügen, bearbeiten und löschen. Dabei wird eine Funktionsgruppe und Pflegebausteine generiert, es werden also relativ viele Objekte benötigt.

  • Funktionsgruppe mit Bausteinen
  • Dynpros
  • Includes mit Events

 

Programm

Hierbei legst du eine ausführbare Klasse oder einen Report an und übernimmst das Befüllen der Daten auf Knopfdruck. Es wird nur ein einfaches Objekt (Klasse, Report) benötigt. Wie könnte so eine ausführbare Klasse also aussehen?

CLASS zcl_bs_demo_fill_account DEFINITION PUBLIC FINAL CREATE PUBLIC.
  PUBLIC SECTION.
    INTERFACES if_oo_adt_classrun.

  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.


CLASS zcl_bs_demo_fill_account IMPLEMENTATION.
  METHOD if_oo_adt_classrun~main.
    DATA:
      lt_account TYPE STANDARD TABLE OF zbs_dy_account WITH EMPTY KEY.

    lt_account = VALUE #(
      ( identifier = '1000000010' amount = '12.34' currency = 'EUR' account_active = abap_true )
      ( identifier = '1000000011' amount = '200.00' currency = 'USD' account_active = abap_true )
      ( identifier = '1000000012' amount = '55.50' currency = 'EUR' account_active = abap_false )
      ( identifier = '2000000010' amount = '13.37' currency = 'CHF' account_active = abap_false )
    ).

    DELETE FROM zbs_dy_account.
    INSERT zbs_dy_account FROM TABLE @lt_account.

    out->write( |Datasets inserted { sy-dbcnt }| ).

    COMMIT WORK.
  ENDMETHOD.
ENDCLASS.

 

Hinweis: Damit die Klasse weiterhin ausführbar bleibt, solltest du vorm Einfügen der Daten die Tabelle erst einmal wieder aufräumen. Am Ende den sauberen Commit nicht vergessen.

 

Vergleich

Beim Vergleich der beiden Varianten ist der Pflegeview am Flexibelsten, du kannst die Einträge direkt anpassen und auf von Excel direkt in die Tabelle kopieren. Einzig negativer Punkt ist die große Anzahl an angelegten Objekten zur Pflege der Tabelle. Möchtest du die objekte in ein anderes System umziehen, ist dies nicht möglich, außer du würdest die Daten nach Excel exportieren. Hier bist du aber von einem automatische Prozess weit enfernt.

  • + Flexibel
  • - Anzahl Objekte
  • - Keine Migration der Daten

 

Dazu ist das Konstrukt mit ausführbarer Klasse relativ flexibel, da du immer wieder die Daten in der Klasse anpassen kannst. Hier arbeitest du aber immer mit dem vollen Datenpaket, wenn du die Daten änderst. Bei einer Migration der Objekte werden auch Dateninhalte mit verschoben und sind jederzeit im Zielsystem wieder verfügbar. 

  • - Relativ flexibel
  • + Anzahl Objekte
  • + Migration der Daten

 

Verwendung

Du möchtest dem Kollegen schnell mal eine kleine Anwendung zeigen und benötigst dazu Testdaten, dann ist die ausführbare Klasse ein schneller und einfacher Weg Daten zur Verfügung zu stellen und immer wieder anpassen zu können, ohne damit deinen eigentlichen Entwicklungsprozess zu stören. Ebenfalls ist die Anlage von Testdaten ein beliebtes Beispiel, wo man immer wieder mal die Daten anpassen muss, wenn man seine Testfälle anpasst. Wenn du eine übergreifende Anwendung geschrieben hast, dann möchtest du diese vielleicht auch in andere Systeme ausrollen und benötigst dort für deine ABAP Unit Testfälle die entsprechenden Daten.

Die Zahl der Fälle ist groß, bei denen du die Daten immer wieder benötigst. Dabei wird die Pflege über den Pflegeview zwar immer effektiv und die Einfachste bleiben, doch das Ausrollen des Pflegeviews über abapGit zum Beispiel, wird dir mehr Stolpersteine in den Weg legen, als du eigentlich brauchst. Die Deinstallation von solchen Pflegeviews wird aktuell noch nicht sauber unterstützt und am Ende werden dir die Daten zur Pflege fehlen.

Aus diesem Hintergrund heraus empfehlen wir die Verwendung des ausführbaren Objekts, wenn du nicht anderen Anforderungen hast, da es die flexibelste Variante ist beim Transfer von Objekten, die Migration und Bereitstellung von Daten in einem leeren System.

 

Hinweis: Ein Anlegen von Testdaten wird auch in der Cloud Umgebung (Steampunk) erschwert, da es keine GUI und keinen Tabellenpflegegenerator gibt. Hier ist der einfachste Weg die Anlage über die ausführbare Klasse.

 

Produktiv

Solche Anlageobjekte solltest du natürlich speziell sichern, damit niemand sie im produktiven System einfach so oder ausversehen ausführen kann. Am Einfachsten ist hier wahrscheinlich die Prüfung der Berechtigungen gegen Debug & Change, da in jedem sauberen Produktivsystem debuggen möglich ist, aber kein Debug & Change. Zumindest solltest du diesen Punkt im Auge behalten, wenn du solche Objekte in Produktion bringst.

 

Fazit

Wie bekommst du am Einfachsten Testdaten ins System und diese auch weiter ins nächste System übertragen? Hier gibt es verschiedene Ansätze und du solltest je nach Situation entscheiden, was dir am Besten passt.


Enthaltene Themen:
TippTestdatenAnlage von Testdaten
Kommentare (0)



Und weiter ...

Bist du zufrieden mit dem Inhalt des Artikels? Wir posten jeden 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 in der Praxis - Modern ABAP

Kategorie - ABAP

In dieser kleinen Aufgabe schauen wir uns bestehenden klassischen ABAP Quellcode an und versuchen diesen nach Modern ABAP zu optimieren.

27.08.2024

ABAP Tipp - Performance Datenfilterung

Kategorie - ABAP

Welche Anweisung verwendest du in ABAP zur Filterung von internen Tabellen und ist diese performant? In diesem Artikel mehr dazu.

13.08.2024

ABAP in der Praxis - Typkonvertierung

Kategorie - ABAP

Wie würdest du diese Typkonvertierung in ABAP durchführen? Ein Beispiel aus der Praxis und ein Lösungsvorschlag.

16.07.2024

ABAP Tipp - RFC Fehlerbehandlung

Kategorie - ABAP

Wie behandelt man eigentlich Fehler, wenn man über eine Destination im Funktionsbaustein kommuniziert? Mehr dazu in unserem Tipp.

05.03.2024

ABAP Tipp - CLEAR right

Kategorie - ABAP

Richtig löschen? In diesem Artikel wollen wir uns einmal anschauen, wann es Sinn macht zu löschen und wie du effektiv vorgehen kannst.

12.05.2023