Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

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

Getting started ... Alles für einen gelungenen Start.
19 Beiträge • Seite 1 von 2 (current) Nächste
19 Beiträge Seite 1 von 2 (current) Nächste

Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von 19KnarfRed81 (ForumUser / 16 / 8 / 3 ) »
Hallo Zusammen,

ich benötige bitte mal Eure Hilfe. Ich bekomme über eine Proxy-SST ein doppelt BASE64-codiertes XML in einem Element geliefert. Dieses möchte ich in eine XML-Tabelle packen um es dann weiter zu verarbeiten.

Hier das relevante Coding:

Code: Alles auswählen.

...
DATA(o_base64) = NEW cl_hard_wired_encryptor( ).

DATA(lv_string) = cl_http_utility=>decode_base64(
                              cl_http_utility=>decode_base64(
                                  encoded = <ls_proxy_data> ) ).

REPLACE ALL OCCURRENCES OF REGEX '[[:cntrl:]]' IN lv_string WITH ''.              

DATA(lv_xstring) = o_base64->encrypt_string2bytes( lv_string ).

" XML-Tabelle erzeugen
        CALL FUNCTION 'SMUM_XML_PARSE'
          EXPORTING xml_input = lv_xstring
          TABLES    xml_table = gt_xml_data
                    return    = lt_return.
...
Mein Problem ist nun, dass SNUM_XML_PARSE hier die Fehlermeldung: "line 1 col 1-unexpected end-of-file" - und eben keine XML-Tabelle - zurückgibt.

Wenn ich mir im Debugger den String (lv_string) mit dem XML ansehe, finde ich nichts Verwerfliches. Sagt Euch das was?

Code: Alles auswählen.

<?xml version="1.0" encoding="utf-8"?><xmlinterface><kostenvoranschlaege><kostenvoranschlag><kvID>19573</kvID><intKvID></intKvID><versorgungsdaten><kostentraegerID>2007</kostentraegerID><kostentraegerIK>134540</kostentraegerIK><kostentraegerdaten><name>...
PS: Das Entfernen der Sonderzeichen mit der RegEx habe ich nachträglich eingefügt, weil der XML-String noch "#"-Zeichen am Zeilenende hatte. Der Fehler in dem FM kam aber vorher genauso. Ich dachte zuerst nur, dass das das Problem sei.

Danke und Gruß 19KnarfRed81

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


Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von a-dead-trousers (Top Expert / 4350 / 219 / 1166 ) »
"unexpected end of file" klingt für mich nach, dass da hinten dran was fehlt. Da scheint also was abgeschnitten zu sein.
Was waren das für '#'-Zeichen? Kontrollier mal die Hex-Values um genau festzustellen um welche Sonder- bzw. Kontrollzeichen es sich handelt.
Ansonsten kannst du auch versuchen SMUM_XML_PARSE zu debuggen um festzustellen wo (bei welcher Zeichenposition) der Fehler ausgelöst wird.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
19KnarfRed81

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.

ECC: 6.18
Basis: 7.50

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von 19KnarfRed81 (ForumUser / 16 / 8 / 3 ) »
a-dead-trousers hat geschrieben:
01.08.2024 11:48
"unexpected end of file" klingt für mich nach, dass da hinten dran was fehlt. Da scheint also was abgeschnitten zu sein.
Was waren das für '#'-Zeichen? Kontrollier mal die Hex-Values um genau festzustellen um welche Sonder- bzw. Kontrollzeichen es sich handelt.
Ansonsten kannst du auch versuchen SMUM_XML_PARSE zu debuggen um festzustellen wo (bei welcher Zeichenposition) der Fehler ausgelöst wird.
Danke für die schnelle Antwort!

Wie ich jetzt erfahren habe, ist der BASE64-Teil formatiert worden, in dem alle 77 Zeichen ein Zeilenumbruch eingefügt wurde.
BASE64.PNG
Also müsste ich diesen ja vermutlich vor dem Decodieren entfernen? Könnte das zu diesem Fehler führen?

Falls ja wie muss ich das machen? Kann ich den Regex einfach vor dem Decodieren einsetzen?

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von a-dead-trousers (Top Expert / 4350 / 219 / 1166 ) »
Ja
Ja
So wie du es für den decodierten String zuvor schon gemacht hast
Ja
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.

ECC: 6.18
Basis: 7.50

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von 19KnarfRed81 (ForumUser / 16 / 8 / 3 ) »
a-dead-trousers hat geschrieben:
01.08.2024 12:54
Ja
Ja
So wie du es für den decodierten String zuvor schon gemacht hast
Ja
Hmmm... Ich hab das jetzt so umgebaut, aber es kommt immer noch derselbe Fehler. 😭

Code: Alles auswählen.

...
        DATA(lv_string) = <ls_proxy_data>-kostenvoranschlag_container-inhalt.
        REPLACE ALL OCCURRENCES OF REGEX '[[:cntrl:]]' IN lv_string WITH ''.

        lv_string = cl_http_utility=>decode_base64( cl_http_utility=>decode_base64( encoded = lv_string ) ).

        DATA(lv_xstring) = o_base64->encrypt_string2bytes( lv_string ).

        " Wenn alles ok, dann XML-Tabelle erzeugen
        CALL FUNCTION 'SMUM_XML_PARSE'
          EXPORTING xml_input = lv_xstring
          TABLES    xml_table = gt_xml_data
                    return    = lt_return.
...
Debuggen von SMUM_XML_PARSE bringt mich leider auch nicht weiter. :-|
das hier lässt sich irgendwie nicht tiefer debuggen. Der kommt hier mir dem Error raus und das war es.

Code: Alles auswählen.

parser = g_ixml->create_parser( stream_factory = streamFactory
                                istream        = iStream
                                document       = document ).
if parser->parse( ) ne 0.
...

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von IHe (Specialist / 148 / 35 / 48 ) »
Die Meldung unexpected end of file mit Position Line 1 und Col 1 bedeutet in der Regel, dass die zu verarbeitende "Datei" (Input) leer ist. Er erwartet Inhalt und es ist keiner da.

Wie sieht denn lv_xstring im Debugger aus? Ein XString-XML kann man sich auch problemlos mit Sicht "VAR_XML" anzeigen lassen.

Folgende Benutzer bedankten sich beim Autor IHe für den Beitrag:
19KnarfRed81

Ingo Hoffmann

ECC|S/4HANA|BTP
dbh SAP Solutions

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von 19KnarfRed81 (ForumUser / 16 / 8 / 3 ) »
IHe hat geschrieben:
01.08.2024 14:36
Wie sieht denn lv_xstring im Debugger aus? Ein XString-XML kann man sich auch problemlos mit Sicht "VAR_XML" anzeigen lassen.
Meinst du wirklich lv_xstring, also HEX-Wert? Der sieht so aus:
LV_XSTRING.PNG

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von a-dead-trousers (Top Expert / 4350 / 219 / 1166 ) »
19KnarfRed81 hat geschrieben:
01.08.2024 13:51

Code: Alles auswählen.

        lv_string = cl_http_utility=>decode_base64( cl_http_utility=>decode_base64( encoded = lv_string ) ).
Ich würde mir diese Zeile nochmal GENAUER anschauen.
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.

ECC: 6.18
Basis: 7.50

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von 19KnarfRed81 (ForumUser / 16 / 8 / 3 ) »
a-dead-trousers hat geschrieben:
01.08.2024 15:46
Ich würde mir diese Zeile nochmal GENAUER anschauen.
Naja die Quelle ist doppelt BASE64-codiert. Daher muss ich das doch 2x decodieren?
Und wenn ich mir den lv_string im Debugger ansehe, ist dort ja auch lesbarer xml-code drin gespeichert. Siehe Auszug oben.... Verstehe nicht, was du damit sagen willst?

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von a-dead-trousers (Top Expert / 4350 / 219 / 1166 ) »
Okay. Sorry. Ich dachte das ist ein Fehler. Hab noch nie einen Grund dafür gesehen etwas doppelt in Base64 zu codieren.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
19KnarfRed81

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.

ECC: 6.18
Basis: 7.50

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von 19KnarfRed81 (ForumUser / 16 / 8 / 3 ) »
Also das mit Zeilenumbruch im codierten String kann man glaube ich vernachlässigen. Ich habe gerade gesehen, dass der Pretty Printer beim Serviceprovider-Test diese direkt entfernt.

De decodierte String enthält offensichtlich noch Zeilenumbrüche (#). Also war das RegEx nach dem decodieren wohl doch besser aufgehoben. Ändert aber nichts daran, dass der SMUM_XML_PARSE weiterhin denselben Fehler bringt. 😏

Ich habe das BASE64-Element jetzt mal als Anhang beigefügt. Vielleicht ist es so einfacher nachzuvollziehen.

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von a-dead-trousers (Top Expert / 4350 / 219 / 1166 ) »
Bei mir musste ich folgendes machen um auf ein "funktionstüchtges" XML zu kommen:

Code: Alles auswählen.

REPLACE ALL OCCURRENCES OF REGEX '[[:cntrl:]]' IN lv_string WITH ''.

lv_string = cl_http_utility=>decode_base64( encoded = lv_string ).

REPLACE ALL OCCURRENCES OF REGEX '[[:cntrl:]]' IN lv_string WITH ''.

lv_string = cl_http_utility=>decode_base64( encoded = lv_string ).

REPLACE ALL OCCURRENCES OF REGEX '[[:cntrl:]]' IN lv_string WITH ''.
Nach der ersten Decodierung stecken wiederum Zeilenumbrüche im base64-codierten Text.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
19KnarfRed81

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.

ECC: 6.18
Basis: 7.50

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von 19KnarfRed81 (ForumUser / 16 / 8 / 3 ) »
a-dead-trousers hat geschrieben:
02.08.2024 09:26
Bei mir musste ich folgendes machen um auf ein "funktionstüchtges" XML zu kommen
Hast du den String auch in xString konvertiert und durch das FM laufen lassen? Bei mir kommt hier leider immer noch derselbe Fehler... 😖

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von a-dead-trousers (Top Expert / 4350 / 219 / 1166 ) »
Funktioniert wunderbar bei mir.
Ich verwende aber einen anderen Ansatz für die String<=>XString Umwandlung:
CL_ABAP_CONV_OUT_CE mit Encoding 4110 (UTF-8)

Code: Alles auswählen.

lr_converter = cl_abap_conv_out_ce=>create( encoding = '4110' ).
lr_converter->convert( EXPORTING data   = lv_string
                       IMPORTING buffer = lv_xstring ).

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
19KnarfRed81

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.

ECC: 6.18
Basis: 7.50

Re: Fehler beim Erzeugen der XML-Tabelle line 1 col 1-unexpected end-of-file

Beitrag von 19KnarfRed81 (ForumUser / 16 / 8 / 3 ) »
Oh mein Gott, das war es! Ich danke dir!!! 🤗

Kann ich noch irgendwas tun um die Schmierzeichen für Umlaute in der decodierten XML zu vermeiden?

Bsp.:
umlaute.png

Vergleichbare Themen

10
Antw.
5014
Views
Tif-File aus ABAP Liste erzeugen
von manuk » 18.11.2004 14:25 • Verfasst in Basis
6
Antw.
19224
Views
Download SAP-Tabelle als csv-File
von KlausB » 09.11.2006 11:55 • Verfasst in ABAP® Core
3
Antw.
14551
Views
URL File-Server Internet File Download /Delet cl_http_client
von Luigi91 » 04.10.2016 08:28 • Verfasst in ABAP Objects®
3
Antw.
5276
Views
Daten einer internen Tabelle in ein XML file downloaden
von Julian Waldmann » 01.02.2005 11:08 • Verfasst in ABAP Objects®
12
Antw.
5033
Views
FUBA für File Transfer von int.Tabelle in Text-Datei
von cuncon » 21.02.2018 12:13 • Verfasst in ABAP® für Anfänger

Ü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

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.