XML-Transformation in SAP ERP einfach erstellen

In diesem Artikel zeige ich Dir, wie man einfach und schnell eine XML-Transformation in SAP ERP bzw. SAP S/4HANA umsetzt. Dabei wird Schritt-für-Schritt anhand eines Beispiels erklärt, wie man eine XML-Transformation erstellt, Daten in eine XML-Struktur packt und diese Datei auf sein gewünschtes Verzeichnis herunterladen kann. Diese Erklärungen können so an Deine eigenen Bedürfnisse angepasst werden.

Was ist eine XML-Transformation?

Eine XML-Transformation ist eine Umwandlung einer ABAP-Struktur oder eines ABAP-Tabellentyps in eine XML-Struktur. So ist es möglich, seine gewünschten Daten im SAP-System in eine XML-Datei zu packen und in einem separaten System zu verarbeiten.

Durch eine XML-Transformation kann man somit eine einfache Schnittstelle zur Verfügung stellen, da XML auch noch heute eine der am meisten verwendeten Datenstrukturen überhaupt ist. Die Abkürzung XML steht dabei für eXtensible Markup Language und stellt eine Auszeichnungssprache für die Abbildung von hierarchisch strukturierter Daten dar.

Eine XML-Transformation kann man im SAP-System auf zwei Arten abbilden:

  • XSL-Transformation
  • Simple Transformation

Der Unterschied liegt dabei an der Umsetzung. XSL-Transformation baut auf den Standard XSLT auf. XSLT steht für Extensible Stylesheet Language Transformation. Simple Transformation hingegen ist eine SAP-eigene Programmiersprache, die ebenfalls die Umwandlung von ABAP-Daten in XML und umgekehrt ermöglicht. Beide Optionen lassen sich perfekt für die XML-Transformation in SAP ERP bzw. SAP S/4HANA nutzen.

Eine XML-Transformation kann man in ABAP über die Funktion CALL TRANSFORMATION <ID> nutzen.

XML-Transformation in SAP ERP einfach erstellen

Anhand eines simplen Beispiels erkläre ich Dir, wie man einfach und schnell eine XML-Transformation in SAP ERP bzw. SAP S/4HANA einrichten kann. In diesem Beispiel wird eine Bestellung (Bestellkopf und -positionen) in eine XML-Struktur über eine XML-Transformation gepackt und lokal auf den Computer heruntergeladen. Die notwendigen Bestelldaten sind in den SAP-Tabellen EKKO und EKPO gespeichert.

Dabei werden folgende Schritte ausgeführt:

  1. Struktur erstellenABAP Dictionary (Transaktion SE11)
  2. XML-Transformation erstellen – Transformation Editor (Transaktion XSLT_TOOL oder STRANS)
  3. ABAP-Programm implementieren – ABAP Editor (Transaktion SE38)
    1. Gewünschte Daten selektieren
    2. Transformation aufrufen
    3. XML-Daten in XML-Datei lokal herunterladen

Struktur erstellen

In der Transaktion SE11 (ABAP Dictionary) erstellen wir nun die gewünschte Struktur. Es ist möglich, in einer XML-Datei mehrere Knoten mit der gleichen Struktur zu verwenden. Hierfür benötigt man eine Struktur, die einen Zeilentyp enthält. In unserem Beispiel benötigen wir somit eine Struktur, die die Kopfinformationen der Bestellung und als Tabellentyp die Bestellpositionen enthält.

Zuerst erstellen wir den Tabellentyp mit dem Zeilentyp EKPO. Hierzu wählt man im ABAP Dictionary den Radiobutton „Datentyp“ aus, gibt den gewünschten Namen ein und drückt auf den Anlegen-Button. Daraufhin wählt man „Tabellentyp“ aus. Im Anschluss gibt man die Kurzbeschreibung und den Zeilentyp an. Nachdem man gespeichert und aktiviert hat, kann man den Tabellentyp verwenden.

Tabellentyp definieren

Anschließend erstellt man die notwendige Struktur im ABAP Dictionary. Hierzu wählt man erneut die Option „Datentyp“ aus und legt anschließend über „Struktur“ die notwendige Struktur an. In unserem Fall werden einzelne Felder aus der Tabelle EKKO für die Kopfinformationen der Bestellung in der Struktur angelegt. Außerdem wird der Tabellentyp für die Bestellpositionen angegeben.

Struktur für XML-Transformation anlegen

Aus Gründen der Einfachheit und Übersichtlichkeit werden nicht alle Felder von der Tabelle EKKO übernommen.

Wenn man in einer XML-Datei mehrere Bestellungen abbilden möchte, muss man diese Struktur erneut in einen Tabellentyp, welcher wiederum in eine Struktur angegeben wird, packen. Alternativ kann man direkt im Transformation Editor bei der Anlage eines Wurzelements angeben, dass es sich um einen Zeilentyp handelt.

In unserem Beispiel reicht diese Struktur aus, da wir pro XML-Datei lediglich eine Bestellung anzeigen lassen möchten.

XML-Transformation erstellen

Als notwendige Voraussetzung für eine XML-Transformation gilt eine Struktur, die die ABAP-Daten enthalten wird. Diese Daten werden dann in die gewünschte XML-Struktur konvertiert.

Die notwendige Konvertierung wird im Transformation Editor festgelegt. Hierfür verwendet man die Transaktion STRANS oder XSLT_TOOL. Beide Transaktionen verweisen auf den gleichen Report START_XSLT_TOOL.

Ruft man eine der beiden Transaktionen auf (STRANS oder XSLT_TOOL), kann man die ID der Transformation angeben und auf den Anlegen-Button klicken.

XML-Transformation anlegen - ID

Daraufhin erscheint ein Fenster, in dem man die Kurzbeschreibung und die Transformationsart auswählen kann. Beide Arten eignen sich hervorragend für die XML-Transformation. Wir wählen für unser Beispiel die Simple Transformation, da diese die SAP-eigene Sprache darstellt.

XML-Transformation anlegen

Anschließend werden im Transformation Editor die beiden Tabreiter Eigenschaften und Quelltext angezeigt. Es gibt nun zwei Arten mit denen man den notwendigen Quelltext für die XML-Transformation angegeben kann: Manuell oder über den grafischen Editor.

Man kann manuell direkt im Tabreiter Quelltext die notwendigen Tags und Definitionen angeben. Ich persönlich bevorzuge die grafische Bearbeitung, da diese eine nützliche und schnelle Unterstützung für die Erstellung der XML-Transformation darstellt. Diese grafische Bearbeitung kann man mit dem entsprechenden Button oder der Tastenkombination „Strg + Umschalt + F11“ aufrufen.

Simple Transformation graphisch bearbeiten

Daraufhin erscheint am Anfang eine leere Baumstruktur.

XML-Transformation graphisch bearbeiten

Hier möchten wir nun unsere Struktur als Wurzelelement einfügen. Dazu muss man mit der rechten Maustaste auf das Root-Element klicken und die Funktion „Neue Wurzel einfügen“ auswählen. Daraufhin erscheint ein Fenster, in dem man die angezeigten Wurzelnamen und den Typnamen angibt. Der Typname ist die erstellte Struktur.

XML-Transformation: neue Wurzel einfügen

Wenn man die Checkbox „Zeilentyp?“ auswählt, wird die Struktur als Zeilentyp hinzugefügt. Das ist dann notwendig, wenn man in der XML-Struktur mehrere Elemente mit der Struktur benötigt. Also im Kontext dieses Beispiels mehrere Bestellungen. Da aber in der XML-Struktur nur eine Bestellung abgebildet wird, bleibt diese Checkbox deaktiviert.

Im Anschluss erscheinen die einzelnen Felder der Struktur als Elemente in der Baumstruktur. Da es sich bei den Positionsdaten um einen Tabellentyp handelt, ist hier das Element entsprechend dargestellt.

Die Datenwurzeln müssen in die Simple Transformation überführt werden. Das kann man einfach mit Drag&Drop erledigen. Hier bewegt man das Wurzelelement „Bestellung“ per Drag&Drop in den rechten Bereich „Simple Transformation“. Bei Erfolg erscheint im rechten Bereich als Simple Transformation die entsprechende Struktur.

Wurzelement per Drag & Drop hinzufügen

Nun speichert und aktiviert man die XML-Transformation.

Wenn man nun zurück zum Quelltext geht, sieht man den generierten Quelltext der XML-Transformation. Hier ist es möglich, die Tag-Namen nach Belieben zu verändern. Im Standard werden alle Buchstaben großgeschrieben (z.B. BESTELLUNG, MANDT, EBELN, BUKRS). Nach der Änderung muss man natürlich wieder speichern und aktivieren.

XML-Transformation Quelltext

ABAP-Programm implementieren

Nun wurde die XML-Transformation mit der notwendigen Struktur erstellt und kann in einem ABAP-Programm verwendet werden. Die notwendige Funktion zum Aufrufen einer XML-Transformation lautet CALL TRANSFORMATION <ID>. Den Platzhalter <ID> muss man dabei mit der ID der XML-Transformation austauschen. Also im Beispiel mit Z_XML_ERP_UP.

Im ABAP-Programm sind folgende Schritte mindestens notwendig:

  • Gewünschte Daten selektieren
  • Transformation aufrufen, um ABAP-Daten in XML zu konvertieren
  • XML-Daten in XML-Datei lokal herunterladen

Im Folgenden wird ein ABAP-Report beispielhaft aufgeführt.

REPORT z_xml_transformation.

*----------------------------------------------------------------------
* Datendeklaration
*----------------------------------------------------------------------
PARAMETERS: p_ebeln TYPE ebeln,
            p_path  TYPE localfile.

DATA:
  lt_ekko_ekpo TYPE zekko_ekpo,
  lt_ekpo      TYPE TABLE OF ekpo,
  ls_ekpo      TYPE ekpo,
  ls_xml_out   TYPE string,
  lv_filename  TYPE localfile,
  lv_filepath  TYPE string,
  lt_xml_out   TYPE STANDARD TABLE OF string.

*----------------------------------------------------------------------
* Bestelldaten selektieren
*----------------------------------------------------------------------

SELECT SINGLE * FROM ekko INTO CORRESPONDING FIELDS OF lt_ekko_ekpo
  WHERE ebeln = p_ebeln.

SELECT * FROM ekpo INTO TABLE lt_ekpo
  WHERE ebeln = p_ebeln.

lt_ekko_ekpo-ekpo = lt_ekpo.

*----------------------------------------------------------------------
* XML-Transformation
*----------------------------------------------------------------------
CALL TRANSFORMATION z_xml_erp_up
  SOURCE bestellung = lt_ekko_ekpo
  RESULT XML ls_xml_out.

APPEND ls_xml_out TO lt_xml_out.

*----------------------------------------------------------------------
* XML-Datei erstellen - Download
*----------------------------------------------------------------------
CONCATENATE 'Bestellung-' p_ebeln '.xml' INTO lv_filename.
CONCATENATE p_path '\' lv_filename INTO lv_filepath.

CALL METHOD cl_gui_frontend_services=>gui_download
  EXPORTING
    filename    = lv_filepath
    filetype    = 'ASC'
    replacement = ''
  CHANGING
    data_tab    = lt_xml_out.

Ü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