XML to itab

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
10 Beiträge • Seite 1 von 1
10 Beiträge Seite 1 von 1

XML to itab

Beitrag von Drogbar ( / / 0 / 3 ) »
Hallo!

XML to itab! Hat das schonmal jemand gemacht?

ich hab ne XML datei, sieht etwa so aus:

Code: Alles auswählen.

<data>
 <CATALOG>
   <test1>dfa</test1> 
   <test2>jjj</test2> 
   <test3>erqr</test3> 
   <test4>asdf</test4> 
   <test5>asf</test5> 
 </CATALOG>
 <CATALOG>
   <test1>12313</test1> 
   <test2>3332</test2> 
   <test3>333</test3> 
   <test4>fff</test4> 
   <test5>44</test5> 
 </CATALOG>
</data>
gibt es eine Möglichkeit/Funktionsbaustein der so eine Datei auffassen und in eine interne Tabelle laden kann? Ich habe das Forum bzw. das Internet bereits durchsucht aber keine funktionierende Lösung gefunden, könnt mir wer auf die Sprünge helfen?

Thanks forwarding

Greets

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von Gast ( / / 0 / 3 ) »
Wenn Du jetzt noch sagst, um welches SAP-Release es geht...

Beitrag von Drogbar ( / / 0 / 3 ) »
auf nem 4.7er System solls laufen!

Beitrag von Didier ( / / 0 / 3 ) »
Weiss dazu niemand einen Lösungssansatz?

habe auch das Problem :-(

Beitrag von Gast ( / / 0 / 3 ) »
Ab SY-SAPRL(1) >= '6' mal F1-Hilfe zu CALL TRANSFORMATION und in SE24 F4 mit CL_*XML*

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

es tut mir leid, aber ich habe das Problem noch nicht so richtig verstanden.

Wenn die XML-Datei auf einem externen System abgelet ist (Server, Front-End), dann muß man die bloß reinladen wie eine normale Textdatei.

Dann noch bei jedem Zeilenwechel einen neue Tabellenzeile und drin ist sie.

Oder sollen die Inhalte ausgewertet werden??

Falls ich das falsch verstanden habe, bitte ich um Entschuldigung.

Gruß
babap

Beitrag von Drogbar ( / / 0 / 3 ) »
also spezieller geht es um folgendes szenario:

ich bekomme vom kunden xml dateien, in denen daten drinstehen... also hab sie lokal aufm pc.

ich brauch aber nicht alles was in der xml steht, sondern nur den inhalt bestimmter tags.
deshalb will ich die komplette xml struktur in ne interne tab laden, mit der ich dann entsprechend weiter verfahren kann!

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

Wenn man die zugrundeliegende XML-Struktur kennt, könnten man eine SAP-Struktur aufbauen, die den Inhalt der XML-Struktur aufnimmt. Dazu gibt es Funktionsbausteine. Da muß man dann meistens mit Tabelle in Tabelle arbeiten ("tiefe Strukturen").


Es geht auch, wenn man die Struktur nicht fix ist. Dann kennt man zum Programmierungszeitpunkt die Feldnamen noch nicht. Die Bearbeitung geht dann mit Field-Symbols weiter.


Noch eine andere Möglichkeit ist folgende:

Man benutzt ein DOM (Document-Objekt-Model).

Für das DOM gibt es Klassen, womit es aufgebaut, "behandelt" und transformiert wird.

Ich habe es umgekehrt gemacht. Ich musste eine variable XML-Struktur erzeugen. Dazu habe ich erst das DOM aufgebaut und es dann als XML exportiert. (Es funktiniert sogar in 4.6C).

Bei dir könnte man folgendermaßen vorgehen:

Man liest das XML als String ein und transferiert es in ein DOM.

Dann "surft" man mit den entsprechenden Prozeduren über die gesamte DOM-Struktur und sucht sich die gewünschten Tags und ihre Inhalte raus.

Gruß
babap

Beitrag von Drogbar ( / / 0 / 3 ) »
Das mit dem DOM hört sich interessant an, aber das problem ist die struktur des xml ist nur bedingt gleich. manchaml sind mehr tags drin, manchmal weniger... die die ich brauche sind allerdings immer drin.

ich hab auch die Klasse "CL_IDOC_XML1" gefunden, da ich genauer ja möchte dass meine infosätze durch in den xml dateien stehenden daten geupdated werden, wärs vielleicht auch interessant das über idoc zu machen.

falls jemand hiermit erfahrung hat würds mich freuen wenn er die mit mir teilt, ansonsten werd ich mich hier wieder mit meinem fortschritten melden, da das thema anscheinend doch den ein oder anderen interessiert!

danke schonmal!

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hi Drogbar,

schau Dir auch mal die Klasse CL_XML_DOCUMENT an. Diese habe ich bisher immer benutzt, wenn ich etwas mit XML zu tun hatte.

Dazu habe ich dann eine eigene Klasse davon abgeleitet und die Methoden IMPORT_FROM_FILE und EXPORT_TO_FILE überschrieben (REDEFINED). Dort habe ich dann beim Export den DOM (in M_DOCUMENT) aufgebaut und per SUPER->EXPORT_TO_FILE rausschreiben lassen bzw. beim Import über SUPER->IMPORT_FROM_FILE die XML-Datei einelesen lassen und dann den DOM ausgewertet.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Seite 1 von 1

Vergleichbare Themen

30
Antw.
14144
Views
move itab 1 nach itab 2 mit bedingung
von c oco » 17.04.2012 14:39 • Verfasst in ABAP® für Anfänger
2
Antw.
412
Views
itab?
von DerAzubi » 19.10.2022 16:44 • Verfasst in ABAP® für Anfänger
2
Antw.
2486
Views
XML->ITAB
von ewx » 09.07.2008 10:24 • Verfasst in ABAP® Core
1
Antw.
1825
Views
itab in itab
von dimes » 07.02.2007 12:27 • Verfasst in ABAP® Core
3
Antw.
3974
Views
XML Datei to ITAB in SAP
von Powerentwickler » 24.03.2006 11:31 • Verfasst in ABAP® Core

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor einer Stunde von tar 8 / 176
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1488

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor einer Stunde von tar 8 / 176
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1488

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822