Error XML Parser. Nach Unicode Umstellung

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

Error XML Parser. Nach Unicode Umstellung

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
Hallo,

ich habe ein Problem nach der Unicode Umstellung.

Code: Alles auswählen.

** Ausgabeobjekt erzeugen
  lr_ostream_string = lr_streamfactory->create_ostream_cstring(
                                 string = lf_xmlstring ).

** Ausgabeobjekte öffnen

  lr_ostream_string->open( ).

** Datei nach Character-Set erzeugen und kanonisieren


  lr_encoding = lr_ixml->create_encoding( character_set = 'UTF-8'
                                          byte_order    = 0 ).

  lr_ostream_string->set_encoding( encoding = lr_encoding ).
  lr_ostream_string->set_pretty_print( pretty_print = lf_pretty_print ).

** Erzeuge ein Rendererobjekt

  lr_renderer_string = lr_ixml->create_renderer( document = lr_document
                                         ostream  = lr_ostream_string ).


** Rendern
  lf_var_ret_string = lr_renderer_string->render( ).

  lf_xmlparse = lf_xmlstring.

* Erzeuge XML-Stream
  lr_istream = lr_streamfactory->create_istream_string( string =
                                                       lf_xmlparse ).
* Öffnen des Eingabestreams
  lr_istream->open( ).

* Erzeuge XML-Parser
  lr_parser = lr_ixml->create_parser( stream_factory = lr_streamfactory
                                      istream        = lr_istream
                                      document       = lr_document ).

* Parsen des Streams + Abbildung als DOM im XML-Document-Objekt
  IF lr_parser->parse( ) NE 0.
.......

an dieser Stelle wirft die Methode parse diese Fehlermeldung aus: "Parserfehler bei Dateierzeugung..."

Die Variable lf_xmlstring im XML Ansicht sieht wie ein normale XML aus. Im Schnellanzeige Modus sind dort irgendwelche chinesische Zeichen drin (s.h. Anhang)...

Vor der Uncode-Umstellung funktionierte alles richtig und die XML-Datei konnte erzeugt werden... jetzt hackt's an der Parse-Methode und bricht ab...
Vielen Dank für Eure Unterstützung!

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


Re: Error XML Parser. Nach Unicode Umstellung

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
Du verwendest einen CSTRING und renderst da UTF-8 hinein.
Das kann nicht funktionieren, weil der CSTRING in SAP UTF-16LE ist.
Intern wird hier der (binäre) UTF-8 String 1:1 in den UTF-16LE String umgewandelt. Da hier die Zeichen mal 2 und dann wieder 4 Bytes haben können, kommt in der Darstellung dann so ein Kauderwelsch heraus.
Verwende stattdessen entweder einen XSTRING für das Rendern und Parsen oder das richtige Encoding.
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: Error XML Parser. Nach Unicode Umstellung

Beitrag von isp (ForumUser / 39 / 16 / 0 ) »
a-dead-trousers hat geschrieben:Du verwendest einen CSTRING und renderst da UTF-8 hinein.
Das kann nicht funktionieren, weil der CSTRING in SAP UTF-16LE ist.
Intern wird hier der (binäre) UTF-8 String 1:1 in den UTF-16LE String umgewandelt. Da hier die Zeichen mal 2 und dann wieder 4 Bytes haben können, kommt in der Darstellung dann so ein Kauderwelsch heraus.
Verwende stattdessen entweder einen XSTRING für das Rendern und Parsen oder das richtige Encoding.
Danke!
ich habe die Stelle angepasst, statt UTF-8 verwende ich jetzt die UTF-16:

Code: Alles auswählen.

 lr_encoding = lr_ixml->create_encoding( character_set = 'UTF-16'
                                          byte_order    = 0 ).
dann funktioniert der Parser und im Debugger sehe ich die XML-Struktur und Daten ganz normal...

ich habe aber jetzt Problem in dem Funktionsbaustein weiter:

Code: Alles auswählen.

     OPEN DATASET lf_outputfilename
      FOR OUTPUT IN LEGACY BINARY MODE.
die Datei wird jetzt erzeugt, aber kein Inhalt drin.

dann habe ich den Zusatz LEGACY rausgenommen, die Datei wird erzeugt und Daten werden geschrieben, aber nicht vollständig und bricht an der Stelle auch ab.

Verstehe aber nicht warum, wird überhaupt eine Datei erstellt und warum bricht es ab.
Ist bei OPEN DATASET noch was zu beachten?

außerdem, den Inhalt der erzeugten Datei kann ich über AL11 nicht mehr ansehen... nur runterladen und dann ist der Inhalt ansehbar..

Re: Error XML Parser. Nach Unicode Umstellung

Beitrag von a-dead-trousers (Top Expert / 4395 / 223 / 1182 ) »
isp hat geschrieben:außerdem, den Inhalt der erzeugten Datei kann ich über AL11 nicht mehr ansehen... nur runterladen und dann ist der Inhalt ansehbar..
Klar, weil du die Datei als UTF-16 abgelegt hast und die AL11, soweit ich weis, versucht als UTF-8 oder ISO-8859-1 einzulesen.
isp hat geschrieben:die Datei wird jetzt erzeugt, aber kein Inhalt drin.

dann habe ich den Zusatz LEGACY rausgenommen, die Datei wird erzeugt und Daten werden geschrieben, aber nicht vollständig und bricht an der Stelle auch ab.

Verstehe aber nicht warum, wird überhaupt eine Datei erstellt und warum bricht es ab.
Ist bei OPEN DATASET noch was zu beachten?
Normalerweise nimmt das OPEN DATASET auch Codepage-Konvertierungen vor. Dem kannst du entgegenwirken indem du die Konvertierung selber machst und die Daten als Binärstream rausschreibst. Außerdem kriegst du dann "aussagekräftige" Fehlermeldungen zurück und nicht einfach nur einen Abbruch mit SY-SUBRC.

Code: Alles auswählen.

lr_convert = cl_abap_conv_out_ce=>create( encoding = 'UTF-8' ). "Oder welche Kodierung du halt haben möchtest
lr_convert->convert( exporting data = ld_string
                     importing buffer = ld_xstring ).
OPEN DATASET ld_file FOR OUTPUT IN BYTE MODE.
TRANSFER ld_xstring TO ld_file.
CLOSE DATASET ld_file.
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

Seite 1 von 1

Vergleichbare Themen

2
Antw.
4794
Views
Unicode-Umstellung
von ralf.wenzel » 06.03.2007 10:06 • Verfasst in ABAP® Core
1
Antw.
6362
Views
Unicode-Umstellung mit Syntaxfehler
von Kristin » 17.12.2008 13:33 • Verfasst in SAP - Allgemeines
3
Antw.
1970
Views
mySAP ERP und Umstellung auf UNICODE
von ta » 19.01.2006 09:22 • Verfasst in Basis
5
Antw.
6518
Views
Unicode-Umstellung: Codepages
von neXXus » 23.09.2013 10:50 • Verfasst in ABAP® Core
8
Antw.
4966
Views
Umstellung Unicode - Zuweisung gepackter Felder
von gutzeli » 18.10.2012 08:06 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Daten an Tabelle binden
vor einer Stunde von Lukas Sanders 2 / 788
Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 21 / 2616

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 einer Stunde von Lukas Sanders 2 / 788
Dialog-Container mit Toolbar/Status
vor 14 Stunden von black_adept gelöst 21 / 2616

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2402
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 8986