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.
4497
Views
Ende der Abrechnung irrtümlich gesetzt
von ginotico » 09.07.2007 08:40 • Verfasst in Human Resources
1
Antw.
4689
Views
Pa03 Abrechnung versehentlich auf Ende gesetzt
von JoergS » 26.03.2007 16:08 • Verfasst in Human Resources
5
Antw.
3007
Views
Checkbox im Feldkatalog wird nicht gesetzt
von ABAP_User » 15.04.2012 19:02 • Verfasst in ABAP® für Anfänger
0
Antw.
1068
Views
Negatives Fiktivnettoentgelt wurde auf Null gesetzt
von missforgotten » 05.02.2019 09:43 • Verfasst in Human Resources
0
Antw.
10513
Views

Über diesen Beitrag

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

Aktuelle Forenbeiträge

Banf anlegen
vor 3 Tagen von wreichelt 2 / 3777
Banf anlegen
vor 3 Tagen von Manfred K. 1 / 3566
IBAN und BUT0BK
vor einer Woche von waltersen gelöst 10 / 18127
GUIXT Tabellen in Container ansprechen
vor einer Woche von Denaris 1 / 8742
SAPGui 8.00 32 Bit vs 64 Bit
vor einer Woche von DeathAndPain 3 / 10514

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

Banf anlegen
vor 3 Tagen von wreichelt 2 / 3777
Banf anlegen
vor 3 Tagen von Manfred K. 1 / 3566
IBAN und BUT0BK
vor einer Woche von waltersen gelöst 10 / 18127
GUIXT Tabellen in Container ansprechen
vor einer Woche von Denaris 1 / 8742
SAPGui 8.00 32 Bit vs 64 Bit
vor einer Woche von DeathAndPain 3 / 10514