In einem Projekt wäre fast ein ToDo gewesen, dass ich die Inhalte einer XML-Datei hätte auslesen müssen. Das wäre ein Bestandsteil der Anforderung gewesen. Ich hatte zwar schon mal ein Code zur Hand, wo die Kurse von der polnischen Bank anhand einer XML-Datei ausgelesen und in eine SAP Struktur gebracht wird, aber ansonsten fehlt mir zu diesem Thema die Praxis.

Trotzdem als ich es mir kurz angeschaut hatte, hat es mein Interesse geweckt 😄 und deshalb habe ich wie oft in meiner Freizeit bei einer guten Serie nebenbei das XML Thema angeschaut.

Ich habe die Konvertierungsklasse ZCL_CONV_UTILITIES erweitert, sodass durch eine Methode eine XML-Datei, die entweder auf den Applikationsserver liegt oder per PoPup-Upload ausgewählt wird, verarbeitet und in eine interne Tabelle konvertiert wird.

Da hier mein Wissen begrenzt war, habe ich mir hier als Basis TrickTresor für die Variante mit dem Upload angeschaut(s. Beitragsende bei Quelle).

Die andere Variante im Fall, dass die XML-Datei auf dem Applikationsserver liegt, musste ich selber herausfinden:

OPEN DATASET iv_xml_from_applserver FOR INPUT IN BINARY MODE.
READ DATASET iv_xml_from_applserver INTO lv_xml_xstring.
CLOSE DATASET iv_xml_from_applserver.

lo_xml_document->parse_xstring (
  EXPORTING
    stream  = lv_xml_xstring
  RECEIVING
    retcode = lv_subrc ) .

Danach weiter mit FuBa SMUM_XML_PARSE als interne Tabelle konvertieren. Checks zu Dataset wegelassen.