Wie erstellt man eine XSL-Transformation aus einem bestehenden Data Dictionary Element?

Eine Datenübergabe zwischen verschiedenen Programmen, Systemen oder Komponenten erfolgt anhand definierter Schnittstellen. Diese können auf unterschiedliche Arten mit Daten befüllt werden. Eine Methode ist beispielsweise das Einlesen (Parsen) von Rohtext-Dateien. Eine weitere, elegantere Möglichkeit stellen XML-Daten dar. Die XML-Daten, deren Übergabe und Transformation werden in diesem Artikel beschrieben.
Entwickler, die bereits komplexere XSL-Transformationen (XSLT) manuell erstellten und Felder editierten werden einer grafischer Modellierung den Vorzug geben. An einem kleinen Beispiel wird verdeutlicht, wie eine solche Transformation weitestgehend mit SAP Bordmitteln bewerkstelligt werden kann.
Die Aufgabenstellung besteht im Einlesen der folgenden XML-Datei. Diese könnte beispielsweise über eine Web-Schnittstelle oder andere Systemschnittstelle ankommen:
<?xml version="1.0" encoding="UTF-8"?>
<MITARBEITER>
  <MANDT/>
  <BUKRS/>
  <ID/>
  <ANREDE>Herr</ANREDE>
  <VORNAME>Hans</VORNAME>
  <NACHNAME>Mustermann</NACHNAME>
  <STRASSE>Musterstrasse</STRASSE>
  <PLZ>09090</PLZ>
  <ORT>Musterort</ORT>
</MITARBEITER>

Das folgende Beispiel beschreibt schrittweise das Erstellen einer XSL-Transformation anhand einer neu angelegten DDIC-Struktur. Nach jedem Schritt sollte entsprechend gespeichert und falls nötig die Arbeit auch aktiviert werden.

Schritt 1

Falls noch keine zu transformierenden Strukturen (Tabellen / Strukturen) im Data Dictionary (DDIC) vorhanden sind, so müssen diese mit der Transaktion (TA) SE11 entsprechend angelegt werden.

Strukturansicht in der SE11
Strukturansicht in der SE11

Schritt 2

Mit der Transaktion XSLT_TOOL kann die benötigte XSL-Transformation angelegt werden.

Transformation neu anlegen (1/2)

Transformation neu anlegen (1/2)

Transformation neu anlegen (2/2)

Transformation neu anlegen (2/2)

Schritt 3

Die zuvor erstellte Strutkur (vgl. Schritt 1) kann nun in der neu angelegten Transformation eingebunden werden. Nach dem Öffnen der Transformation sollte ein “Default-XSL” folgender Form vorhanden sein:

Transformation default (1/2)
Transformation default (1/2)
Nach einem Klick auf den Zauberstab (vgl. Bild “Transformation default (1/2)” ) erhält man folgende Übersicht:
Transformation default (2/2)

Transformation default (2/2)

Schritt 4

In dieser Übersicht kann nun ein neues Wurzel-Element erstellt udn verknüpft werden. Mit einem Klick auf die Rechte Maustaste > “Neue Wurzel einfügen” kann ein neues Element eingebunden werden.

Neue Wurzel einfügen (1/2)
Neue Wurzel einfügen (1/2)
Die neu einzubindende Wurzel benötigt noch einen sprechenden Namen sowie einen Datentypen. Der Datentyp bestimmt die Struktur des Wurzel-Elements.
Neue Wurzel einfügen (2/2)
Neue Wurzel einfügen (2/2)

Nach dem Erstellen des neuen Wurzel-Elementes mit dem gewünschten Typ sollte die komplette Struktur des zuvor erstellten DDICs sichtbar sein:

Struktur-Elemente in der Übersicht

Struktur-Elemente in der Übersicht

Einfaches Drag&Drop ermöglicht nun die Erstellung der Transformation. Hierzu einfach den jeweiligen Knoten aus dem linken Fenster (Datenwurzeln) in das rechte Fenster (Simple Transformation) ziehen.

 Drag&Drop der Struktur in den Tranformationsbereich

Drag&Drop der Struktur in den Tranformationsbereich

Die nun dargestellten Felder können nach belieben editiert werden. Nicht benötigte Felder können einfach aus dem rechten Fenster mit einfachen Klicks gelöscht werden. Das zu löschende Element auswählen, rechte Maustaste > “Knoten löschen” klicken und schon wird das Feld entfernt und nicht mit generiert.

Ein Doppelklick auf die neu erstellte Transformation sollte nun folgende XSL-Transformation darstellen:

Quelltext-Ansicht der erzeugten Transformation
Quelltext-Ansicht der erzeugten Transformation

Quelltext der erzeugten XSL-Transformation:

<?sap.transform simple?>
<tt:transform xmlns:tt="http://www.sap.com/transformation-templates"
xmlns:ddic="http://www.sap.com/abapxml/types/dictionary"
xmlns:def="http://www.sap.com/abapxml/types/defined">
  <tt:root name="MITARBEITER" type="ddic:Z86H6D_MA"/>
  <tt:template>
    <MITARBEITER>
      <MANDT tt:value-ref=".MITARBEITER.MANDT"/>
      <BUKRS tt:value-ref=".MITARBEITER.BUKRS"/>
      <ID tt:value-ref=".MITARBEITER.ID"/>
      <ANREDE tt:value-ref=".MITARBEITER.ANREDE"/>
      <VORNAME tt:value-ref=".MITARBEITER.VORNAME"/>
      <NACHNAME tt:value-ref=".MITARBEITER.NACHNAME"/>
      <STRASSE tt:value-ref=".MITARBEITER.STRASSE"/>
      <PLZ tt:value-ref=".MITARBEITER.PLZ"/>
      <ORT tt:value-ref=".MITARBEITER.ORT"/>
    </MITARBEITER>
  </tt:template>
</tt:transform>

Fazit

Die Eingangs dargestellte XML-Datei kann nun eingelesen und verarbeitet werden. Die entsprechenden Daten werden in die Datenbank-Tabelle bzw. -Struktur je nach Wunsch geschrieben.

Dieses einfache Beispiel verdeutlicht die Schrittfolge zur Erstellung einer XSLT anhand einer DDIC-Struktur. Je komplexer die abzubildende Struktur ist, desto mehr manueller Nacharbeit bedarf die passende XSLT. Das Generieren einer komplexen, verschachtelten DDIC-Struktur schlug leider mehrfach fehl. Aber vielleicht wird das in zukünftigen SAP Releases behoben.

Comments are closed.