Wer hat sich schon mit XML in ABAP auseinander gesetzt?

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

Wer hat sich schon mit XML in ABAP auseinander gesetzt?

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
Hallo liebe Abap-Community.

Ich hab hier mal wieder eine verzwickte Situation.

Ich habe ein XML File eingelesen und von diesem eine int. Tabelle dynamisch erstellt (ist nur solange vorhanden, solange das Programm aktiv ist, kein DDIC Objekt!)

Das Problem ist, dass ich bei dem erstellen dieser int.Tabelle mir die Werte von der XML-Datei nicht merken konnte. (Hätte diese ja nirgends hinschreiben können)

Nun lese ich die xml-Datei nochmal, um dann die Werte in die erstellte int. Tabelle zu schreiben. Damit ich dort dann werte ändern kann, und aus dieser int. Tabelle wieder eine XML Datei zu erstellen.
Dieser Punkt funktioniert aber nicht, da die XML-Datei (und auch die int. Tabelle) eine tiefe Struktur hat. Sprich es sind Unterstrukturen vorhanden.


Hier mein Code zum auslesen der xml-Datei: (das orangegeschriebene sollte nur hervorgehoben sein, darum ist der code immer unterbrochen, aber das ist eigentlich ein durchgängiger code!)

Das Orange geschriebene ist dafür da, die werte in die int. Tabelle zu schreiben. Das funktioniert leider nur, solange #document als root da ist. Sobald eine unterstruktur kommt, klappts nicht mehr, da ein feld der unterstruk tur so heißt z.b. typ_s_zone_line-zone. Vor dem Assign Component wo der name gelesen wird

Code: Alles auswählen.

name = node->get_name( ).
steht in name 'zone' drin.
Ich würde da aber "typ_s_zone_line-zone" als Wert benötigen, also die ganze 'adresse'.
Hat jemand nen Tip, wie ich den Namen der Unterstruktur auch auslesen kann?

Code: Alles auswählen.

  node ?= r_document.

  CHECK NOT node IS INITIAL.

  IF node IS INITIAL. EXIT. ENDIF.
* create a node iterator
  iterator = node->create_iterator( ).
* get current node
  node = iterator->get_next( ).

* loop over all nodes
  WHILE NOT node IS INITIAL.
    indent = node->get_height( ) * 2.
    indent = indent + 20.

    num_children = node->num_children( ).
    CASE node->get_type( ).
      WHEN if_ixml_node=>co_node_element.
* element node
        name = node->get_name( ).
TRANSLATE name TO UPPER CASE.
ASSIGN COMPONENT name OF STRUCTURE <fs_struc> TO <fs>.

Code: Alles auswählen.


        nodemap = node->get_attributes( ).
        node_root = node->get_root( ).
        name_root = node_root->get_name( ).
        node_parent = node->get_parent( ).
        name2 = node_parent->get_name( ).

        IF NOT nodemap IS INITIAL.
* attributes
          count = nodemap->get_length( ).
          DO count TIMES.
            index = sy-index - 1.
            attr = nodemap->get_item( index ).
            name = attr->get_name( ).
            value = attr->get_value( ).
MOVE value TO <fs>.

Code: Alles auswählen.


          ENDDO.
        ENDIF.
      WHEN if_ixml_node=>co_node_text OR
      if_ixml_node=>co_node_cdata_section.
* text node
        value = node->get_value( ).
MOVE value TO <fs>.

Code: Alles auswählen.


        node_parent = node->get_parent( ).
        name2 = node_parent->get_name( ).

    ENDCASE.
* advance to next node
    node = iterator->get_next( ).
  ENDWHILE.

Gruß
Markus

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


Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
hat sich erledigt. War der falsche Ansatz. Geht viel einfacher mit ner int. Tabelle.

Gruß
Markus

Seite 1 von 1

Vergleichbare Themen

1
Antw.
3855
Views
Ende der Abrechnung irrtümlich gesetzt
von ginotico » 09.07.2007 08:40 • Verfasst in Human Resources
5
Antw.
2834
Views
Checkbox im Feldkatalog wird nicht gesetzt
von ABAP_User » 15.04.2012 19:02 • Verfasst in ABAP® für Anfänger
0
Antw.
957
Views
Negatives Fiktivnettoentgelt wurde auf Null gesetzt
von missforgotten » 05.02.2019 09:43 • Verfasst in Human Resources
1
Antw.
4389
Views
Pa03 Abrechnung versehentlich auf Ende gesetzt
von JoergS » 26.03.2007 16:08 • Verfasst in Human Resources
1
Antw.
2229
Views
Konfiguration Kundenauftrag - Systemstatus KONU wird nicht gesetzt
von wolli » 04.07.2022 14:13 • Verfasst in Sonstige Module

Über diesen Beitrag

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

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor 8 Stunden von Bright4.5 3 / 1481
Regex in where
vor 9 Stunden von tar 6 / 146

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

Daten an Tabelle binden
vor 8 Stunden von Bright4.5 3 / 1481
Regex in where
vor 9 Stunden von tar 6 / 146

Unbeantwortete Forenbeiträge

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