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.
...
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>...
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
19KnarfRed81
Danke für die schnelle Antwort!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.
Hmmm... Ich hab das jetzt so umgebaut, aber es kommt immer noch derselbe Fehler. 😭a-dead-trousers hat geschrieben: ↑01.08.2024 12:54Ja
Ja
So wie du es für den decodierten String zuvor schon gemacht hast
Ja
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.
...
Code: Alles auswählen.
parser = g_ixml->create_parser( stream_factory = streamFactory
istream = iStream
document = document ).
if parser->parse( ) ne 0.
...
Folgende Benutzer bedankten sich beim Autor IHe für den Beitrag:
19KnarfRed81
Meinst du wirklich lv_xstring, also HEX-Wert? Der sieht so aus:
Ich würde mir diese Zeile nochmal GENAUER anschauen.19KnarfRed81 hat geschrieben: ↑01.08.2024 13:51Code: Alles auswählen.
lv_string = cl_http_utility=>decode_base64( cl_http_utility=>decode_base64( encoded = lv_string ) ).
Naja die Quelle ist doppelt BASE64-codiert. Daher muss ich das doch 2x decodieren?a-dead-trousers hat geschrieben: ↑01.08.2024 15:46Ich würde mir diese Zeile nochmal GENAUER anschauen.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
19KnarfRed81
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 ''.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
19KnarfRed81
Hast du den String auch in xString konvertiert und durch das FM laufen lassen? Bei mir kommt hier leider immer noch derselbe Fehler... 😖a-dead-trousers hat geschrieben: ↑02.08.2024 09:26Bei mir musste ich folgendes machen um auf ein "funktionstüchtges" XML zu kommen
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