Lerne und übe ABAP – ETL (Extract Transform Load)

Erwirb und verbesser Dich in der Programmiersprache ABAP. In der Übung „ETL“ hast du die Möglichkeit ein ABAP-Programm zu entwickeln, um den Transformationsschritt eines Extract-Transform-Load-Prozesses durchzuführen. Mit 40 anspruchsvollen Übungen auf der Plattform Exercism, kannst du deine Fähigkeiten in ABAP verbessern. Du hast die Wahl, entweder in deinem eigenen SAP-System zu üben oder dich kostenlos auf der Plattform anzumelden und die Übungen zu absolvieren. Du hast sogar die Möglichkeit, Lösungen von anderen Nutzern zu betrachten und so deine eigene Lösung zu vergleichen.

Aufgabenstellung

Wir werden den Transformationsschritt eines Extract-Transform-Load durchführen.

Extract-Transform-Load (ETL) ist eine schicke Umschreibung für „Wir haben ein paar muffige Altdaten in diesem System und brauchen sie jetzt in diesem glänzenden neuen System hier drüben, also werden wir sie migrieren.“

(In der Regel folgt darauf der Satz: „Wir müssen das nur einmal ausführen.“ Darauf folgt in der Regel viel Stirnrunzeln und Stöhnen darüber, wie dumm wir doch sein könnten).

Wir werden einige Scrabble-Ergebnisse aus einem Altsystem extrahieren.

Das alte System speicherte eine Liste von Buchstaben pro Punktzahl:

  • 1 Punkt: „A“, „E“, „I“, „O“, „U“, „L“, „N“, „R“, „S“, „T“,
  • 2 Punkte: „D“, „G“,
  • 3 Punkte: „B“, „C“, „M“, „P“,
  • 4 Punkte: „F“, „H“, „V“, „W“, „Y“,
  • 5 Punkte: „K“,
  • 8 Punkte: „J“, „X“,
  • 10 Punkte: „Q“, „Z“,

Das neue Scrabble-System speichert stattdessen die Punkte pro Buchstabe, was die Berechnung der Punkte für ein Wort wesentlich schneller und einfacher macht. Außerdem werden die Buchstaben in Kleinbuchstaben gespeichert, unabhängig von der Groß-/Kleinschreibung der eingegebenen Buchstaben:

  • „a“ ist 1 Punkt wert.
  • „b“ ist 3 Punkte wert.
  • „c“ ist 3 Punkte wert.
  • „d“ ist 2 Punkte wert.
  • Und so weiter.

Deine Aufgabe, falls du sie annimmst, ist es, das alte Datenformat in das neue Format umzuwandeln.

Ein letzter Hinweis zur Punktevergabe: Scrabble wird weltweit in einer Vielzahl von Sprachen gespielt, die jeweils ihre eigene Punktetabelle haben. So wird beispielsweise ein „E“ in der Māori-Sprachversion des Spiels mit 2 bewertet, während es in der hawaiianischen Sprachversion mit 4 bewertet wird.

Beispiel Programmierung

CLASS zcl_etl DEFINITION
  PUBLIC
  FINAL
  CREATE PUBLIC.

  PUBLIC SECTION.
    TYPES:
      BEGIN OF ty_legacy_data,
        number TYPE i,
        string TYPE string,
      END OF ty_legacy_data,
      BEGIN OF ty_new_data,
        letter TYPE c LENGTH 1,
        number TYPE i,
      END OF ty_new_data,
      tty_legacy_data TYPE SORTED TABLE OF ty_legacy_data WITH UNIQUE KEY number,
      tty_new_data    TYPE SORTED TABLE OF ty_new_data WITH UNIQUE KEY letter.

    METHODS transform IMPORTING legacy_data     TYPE tty_legacy_data
                      RETURNING VALUE(new_data) TYPE tty_new_data.
  PROTECTED SECTION.
  PRIVATE SECTION.
ENDCLASS.



CLASS zcl_etl IMPLEMENTATION.
  METHOD transform.
    "Implement Solution.

    DATA: lv_letter TYPE c,
          lv_offset TYPE i.
    DO strlen( sy-abcde ) TIMES.
      lv_offset = sy-index - 1.
      lv_letter = sy-abcde+lv_offset(1).
      LOOP AT legacy_data ASSIGNING FIELD-SYMBOL(<fs_legacy_entry>) WHERE string CA lv_letter.
        APPEND VALUE #( letter = to_lower( lv_letter ) number = <fs_legacy_entry>-number ) TO new_data.
        EXIT.
      ENDLOOP.
    ENDDO.
  ENDMETHOD.
ENDCLASS.

Erklärung

Die Methode transform in der Klasse zcl_etl ist eine Transformation, die Daten aus einem Eingabetableau legacy_data in ein neues Tableau new_data überträgt.

Der Code durchläuft die Buchstaben „A“ bis „Z“ und „a“ bis „z“. Für jeden Buchstaben, lv_letter, wird eine Schleife über das Eingabetablett legacy_data ausgeführt, um zu prüfen, ob ein Eintrag mit einem Stringfeld existiert, das den aktuellen Buchstaben enthält. Wenn ein solcher Eintrag gefunden wird, wird ein neues Element zum neuen Tablett new_data hinzugefügt, wobei letter ein Kleinbuchstabe und number der entsprechende Zahlenwert aus dem Eingabetablett ist.

Diese Methode wandelt also die Eingabedaten von einem Format, in dem jeder Eintrag eine Zahl und einen String enthält, in ein Format um, in dem jeder Eintrag einen Buchstaben und eine Zahl enthält.

Über den Autor

Andreas Geiger

Mein Name ist Andreas Geiger und ich bin ein erfahrener Senior SAP Berater. Mit mehr als 10 Jahren Berufserfahrung habe ich mehrere SAP-Projekte erfolgreich abgeschlossen und umfangreiche Kenntnisse in verschiedenen Bereichen wie SAP FI, SAP MM und ABAP erworben. Nun möchte ich mein Wissen mit Dir teilen, um Dir einen Mehrwert zu bieten und Dich bei Deiner täglichen Arbeit mit dem SAP-System zu unterstützen.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Schreibe einen Kommentar