Bei meiner Recherche bezüglich der Aufbereitung von Daten aus einer Internen Tabelle/Struktur zu einem XML Dokument habe ich mit den Simple Transformations bis jetzt einige Erfahrungen gemacht.
Mein Ziel ist es Daten in ein XML Format umzuwandeln um
das ganze dann an ein Fremdsystem zu schicken.
Jetzt ist mir die Klasse cl_ixml über den Weg gelaufen. Ich beschäftige mich jetzt schon seit einiger Zeit damit habe aber immer noch nicht rausgefunden ob die Klasse genau hinterher das macht was ich brauche? :-) Hat jemand vielleicht noch andere Ideen wie ich ein XML Dokument aus bestehenden ABAP Informationen aufbauen kann? Die XML Felder sind durch das Fremdsystem vorgegeben und somit auch der Aufbau der XML.
Mit einer Simple Transformation hat das bis jetzt am besten geklappt.
Grundsätzlich solltest du bei der XML-Transformation von ABAP-Daten immer(!) das ASXML-Format im Hinterkopf haben. Wenn du direkt ABAP Daten beim Aufruf von CALL TRANSFORMATION übergibst, werden die Daten zuerst in dieses Format umgewandelt bevor die eingentliche Transformation (sei es jetzt ST oder doch XSLT) durchgeführt wird. Wie das genau aufgebaut ist, sollte in der Hilfe ausreichend beschrieben sein. Sobald die Daten in ASXML vorliegen funktioniert alles weitere genauso wie in anderen Sprachen beim Handling von XSLT und Co. Wenn du also den grundsätzlichen Aufbau und die Herangehensweise bei XML kennst, solltest du es auch unter ABAP schaffen. Grundkurse und Hilfestellungen zu XML und XSLT gibt es im Netz ja zu Hauf.
Die von dir gefundene CL_IXML Klasse ist die ABAP-Implementierung des XML-DOM Models und um Lichtjahre besser als das alte CL_DD_DOCUMENT. Hiermit hast du die Möglichkeit ein XML-Dokument zu parsen, rendern und Knoten für Knoten im Hierarchiebaum auszulesen. Herrlich ist, dass die SAP nicht auf Tools wie Iterator und Filter vergessen hat. Wenn man ein Dokument zur Laufzeit erzeugen oder bearbeiten möchten, das Mittel zur Wahl.
In ABAP gibt es übrigens auch die Möglichkeit mittels XPATH Knoten aus einem iXML-Dokument abzufragen, nur ist dieser Weg etwas kryptisch hinter mehreren IMHO irreführenden Methodenaufrufen im XSLT-Prozessor versteckt. Von Java zum Beispiel bin ich da anderes, weil sprechender benannt und intuitiver aufgebaut, gewohnt.
Wenn du konkrete Fragen hast, kannst du dich gerne an mich wenden.
lg ADT
P.S: Persönlich versuche ich ST nicht zu verwenden, weil es sich um eine Spracherweiterung handelt die nur unter SAP/ABAP funktioniert. Ich finde es besser alles im XSLT-Standard umzusetzen, so hat man dann keine Problem in anderen Sprachen/Umgebungen mit Transformationen.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.