OPEN xml-Dateien mit Sonderzeichenn

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

OPEN xml-Dateien mit Sonderzeichenn

Beitrag von Tellerchen58 (ForumUser / 21 / 0 / 0 ) »
Hallo zusammen,

obwohl wir mit UNICODE arbeiten, gibt es ein Problem beim Öffnen von xml-Dateien. Sobald sich im Text Sonderzeichen (Akzente, kyrillische Zeichen etc.) befinden, werden beim Einlesen der Daten nur noch Hieroglyphen angezeigt (auch im Debugger nach dem Einlesen). In der Ursprungsdatei sind die Zeichen durchaus richtig.
Wir haben schon mehrere OPEN-Versuche unternommen gemäß der SAP-Dokumentation.
Zur Zeit arbeiten wir mit: OPEN DATASET P_SFILE IN LEGACY BINARY MODE FOR INPUT. Wir haben es auch schon mit der Angabe der Codepage versucht. Auch die Angabe
OPEN DATASET P_SFILE IN text MODE encoding utf-8 FOR INPUT. führte nicht zum Erfolg.

Hat jemand einen Tipp ?

Danke und liebe Grüße
Tellerchen58

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


Re: OPEN xml-Dateien mit Sonderzeichenn

Beitrag von a-dead-trousers (Top Expert / 4483 / 231 / 1205 ) »
hi!

Naja, Unicode ist nicht immer gleich UTF-8.
Sind die XML-Dateien überhaupt in UTF-8 abgespeichert?
Ist in den XML-Dateien evtl. eine BOM (Byte Order Mark) hinterlegt?

Eine Möglichkeit die mir einfällt, die bei uns im System funktioniert hat war die Datei als XString einzulesen (OPEN DATASET ... IN BINARY MODE FOR INPUT und READ DATASET ... INTO ... ) und dann den ganzen XString im SAP-System mittels der Klasse CL_ABAP_CONV_IN_CE in einen String umwandeln.

mfg
ADT
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: OPEN xml-Dateien mit Sonderzeichenn

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Warum willst Du einen XML-Stream überhaupt als Text einlesen?
Was spricht gegen Einlesen IN BINARY MODE in ein Feld vom Typ XTRING?

Denn der verwendete Zeichensatz kann sich ja von Datei zu Datei unterscheiden und wird ja im XML-Header angegeben.
S. auch die etwas ältere Diskussion hier:

http://www.abapforum.com/forum/viewtopi ... =1&t=16988

Insbesondere meine letzte Antwort:

http://www.abapforum.com/forum/viewtopi ... 050#p57050

Re: OPEN xml-Dateien mit Sonderzeichenn

Beitrag von Tellerchen58 (ForumUser / 21 / 0 / 0 ) »
Hallo zusammen,

wie lest Ihr die xml-Daten denn überhaupt ein ?

Hier mein Coding:

OPEN DATASET P_SFILE IN LEGACY BINARY MODE
FOR INPUT.

IF SY-SUBRC NE 0.
WRITE: / 'Keine Datei vorhanden'.
ENDIF.


READ DATASET P_SFILE INTO H-XML.
IF SY-SUBRC NE 0.
WRITE: / 'Keine Datei vorhanden'.
ENDIF.


CLOSE DATASET P_SFILE.




H-XML ist vom Typ STRING, XSTRING führt hier zu einem Umwandlungsfehler.
Ich habe den entsprechenden Report "geerbt" und lt. Aussage des damaligen Programmierers gibt es hierzu keine sinnvolle Alternativde in SAP.

Hat jemand Gegenvorschläge ?

LG
Tellerchen58

Re: OPEN xml-Dateien mit Sonderzeichenn

Beitrag von ratsnus (Specialist / 357 / 2 / 56 ) »
Hmm also wir nutzen dafür ein XI System. Das liefert mir die Daten, ( gegebenenfalls schon aufbereitet ), diese XML Daten kann ich dann im R3 in der generierten Proxy Class weiterverarbeiten.

das mal nur zu deiner Frage wie wir XML einlesen.

gruss
tony
<:: XING-Gruppe Tricktresor::>

Re: OPEN xml-Dateien mit Sonderzeichenn

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Tellerchen58 hat geschrieben: Hier mein Coding:

OPEN DATASET P_SFILE IN LEGACY BINARY MODE
FOR INPUT.

Warum LEGACY BINARY MODE?
Du willst an der Stelle keinerlei Konvertierung, also

Code: Alles auswählen.

OPEN DATASET p_sfile IN BINARY MODE FOR INPUT.
H-XML ist vom Typ STRING, XSTRING führt hier zu einem Umwandlungsfehler.
Wo genau ist "hier"? Was für Umwandlungsfehler?

Wenn Du eine Datei im BInärformat einliest, sollte es keinerlei "Umwandlung" geben.
Woher kommt die XML-Datei?
Passt die in der XML-Datei verwendete Code Page zu der Angabe im Header?
Ansonsten ist das kein gültiges XML.

Was passiert in dem Programm nach dem READ DATASET noch mit den eingelesenen Daten?
Ich habe den entsprechenden Report "geerbt" und lt. Aussage des damaligen Programmierers gibt es hierzu keine sinnvolle Alternativde in SAP.
Es gibt immer Alternativen.
Aber um sinnvolle Alternativen zu nennen, muss man erst mal das Problem kennen.

Re: OPEN xml-Dateien mit Sonderzeichenn

Beitrag von Tellerchen58 (ForumUser / 21 / 0 / 0 ) »
Hallo,

das Feld H-XML kann nicht als XSTRING definiert werden, da ich sonst die Fehlermeldung erhalte, dass an dieser Stelle nur ein zeichenartiges Datenobjekt erlaubt ist (also C, N, D, T oder STRING).

In das Feld H-XML werden die Daten beim READ übergeben.

Die Datei, die wir erhalten ist Unicode und kann auch vom einem beliebigen Parser gelesen werden. In der Datei selber sind alle Zeichen auch sauber zu sehen. Nach dem Einlesen sind sämtliche Sonderzeichen unlesbar. Es ist auch egal, welche Sprache genutzt wird (der Report wird europaweit eingesetzt, also auch für kyrillische Zeichen etc.) Selbst mit ü, ä use. kommt der Report nicht klar.
Statt 'wartet auf Frühpension' steht nach dem Einlesen z.B. 'wartet auf Frühpension' in H-XML.

Mir ist allerdings aufgefallen:

Wenn ich selber xm-Dateien ausgebe, so arbeite ich immer mit CDATA. Dies ist der Datei, die ich bekomme nicht genutzt. So weit ich weiss werden Daten, die innerhalb der CDATA-Klammer liegen, nicht weiter interpretiert.

Wäre es eine Lösung, die xml-Datei mit CDATA anzufordern.

Gruß
tellerchen58

Re: OPEN xml-Dateien mit Sonderzeichenn

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Tellerchen58 hat geschrieben:das Feld H-XML kann nicht als XSTRING definiert werden, da ich sonst die Fehlermeldung erhalte, dass an dieser Stelle nur ein zeichenartiges Datenobjekt erlaubt ist (also C, N, D, T oder STRING).
OK, anscheinend gibt es nicht nur unklare Fehlerbeschreibungen, sondern in diesem Falle auch unklare Fragen.

Ich meinte mit meiner Frage vor allem, an welcher Stelle (also bei welcher Anweisung) der Fehler auftrat.
Und, ob es um eine Syntaxfehlermeldung oder einen Laufzeitfehler ging.

Denn den von Dir gezeigten Textausschitten dürfte es eigentlich keinen solchen Fehler geben.

Beim READ kann es nur dann zu einem Laufzeitfehler UC_OBJECTS_NOT_CHARLIKE geben, wenn beim OPEN DATASET nicht BINARY MODE, sondern TEXT MODE benutzt wird.
Sowohl bei LEGACY BINARY MODE als auch bei BINARY MODE (ohne Zusatz LEGACY) sollte das

Code: Alles auswählen.

READ DATASET p_sfile INTO h-xml.
funktionieren, wenn h-xml vom Typ XTRING ist.
(Einen Fehler kann es da eigentlich nur geben, wenn Du eine riesengroße Datei einlesen willst und vom Workprozess nicht genug Speicher reserviert werden kann.)

Füge doch mal nach READ DATASET eine BREAK-POINT-Anweisung ein (oder setze einen dynamischen Break-Point auf die Anweisung und prozessiere die Anweisung im Einzelschritt (F5).
Danach sollte h-xml mit dem Datei-Inhalt gefüllt sein.

Ich nehme an, du bist in einem System mit Basis-Release, in dem es schon den neuen Debugger gibt.

Dann einfach mal auf den Tab-Reiter "Detailanzeigen" wechseln, als Feldnamen h-xml angeben, Enter drücken, und im dann eingeblendeten Dropdown-Menü für Sicht die Option VAR_XML (XML-Browser) auswählen.

Wenn der Feldinhalt vom h-xml gültiges XML darstellt, dann wird der Inhalt ähnlich wie in einem Browser als XML-Dokument angezeigt.
Ansonsten enthält die Datei höchstwahrscheinlich kein gültiges XML.

h-xml kann man jetzt z.B. unverändert an CALL TRANSFORMATION ... übergeben, um bestimmte Inhalte auszulesen.

Tellerchen58 hat geschrieben:In das Feld H-XML werden die Daten beim READ übergeben.
Auch das war nicht meine Frage.
Sondern: Wer liefert die Datei? Wie wurde sie erstellt? Ist sichergestellt, dass die Datei gültiges XML enthält (z.B. durch Prüfung in verschiedenen Browsern oder anderen Programmen zur XML-validation)?

Es gibt mehr Softwareanbieter als man glauben mag, die versuchen, XML-Dateien per Hand zusammenzustricken und dann so Klopper erzeugen wie unkonvertierte <- oder >-Zeichen in Texteingaben des Benutzers.
Verwendung von UTF-8-codierten Umlauten in XML-Dokumenten, die im Header eine andere Codepage als utf-8 angegeben haben, würde mich da überhaupt nicht wundern.
Solchen Schrott würde ich auch gar nicht erst einzulesen versuchen, sondern auf Lieferung von validem XML bestehen.

Insbesondere wenn die Dateien von verschiedenen Lieferanten kommen, kann es durchaus passieren, dass die Dateien nicht die gleiche Code Page nutzen.
Das ist auch kein Problem, wenn man nicht versucht, sie immer mit der gleichen Code Page im (LEGACY) TEXT MODE einzulesen.
Tellerchen58 hat geschrieben:Die Datei, die wir erhalten ist Unicode und kann auch vom einem beliebigen Parser gelesen werden. In der Datei selber sind alle Zeichen auch sauber zu sehen. Nach dem Einlesen sind sämtliche Sonderzeichen unlesbar. Es ist auch egal, welche Sprache genutzt wird (der Report wird europaweit eingesetzt, also auch für kyrillische Zeichen etc.) Selbst mit ü, ä use. kommt der Report nicht klar.
Statt 'wartet auf Frühpension' steht nach dem Einlesen z.B. 'wartet auf Frühpension' in H-XML.
OK, das 'wartet auf Frühpension' sieht ziemlich eindeutig nach utf-8 aus.

Hast Du die Datei mal im BINARY MODE auf einen PC heruntergeladen und im Notepad nachgesehen, ob im Header auch utf-8 als encoding angegeben ist?

Wenn die Fehlermeldung "nicht zeichenartig" woanders auftritt, bitte noch mal genau beschreiben, was für eine Fehlermeldung das ist und bei welcher Anweisung sie auftritt.

Re: OPEN xml-Dateien mit Sonderzeichenn

Beitrag von Tellerchen58 (ForumUser / 21 / 0 / 0 ) »
Hallo,

in der xml-Datei befinden sich Daten, die auf unseren Kassen in den jeweiligen Verkaufsstellen erzeugt werden. Die Programme, die die Daten speichern und auch auf unseren Server übertragen, hat ein Softwarehaus geschrieben, mit dem wir kooperieren.

Im Header steht durchaus utf-8. Mit einem Parser kann man die Datei einwandfrei aufrufen, die Texte sind dann auch völlig in Ordnung.

Den Fehler bringt mir schon ABAP, wenn ich versuche, meinen Report zu aktivieren.

Gruß
Tellerchen58

Re: OPEN xml-Dateien mit Sonderzeichenn

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
OK, wenn der Fehler schon bei der Aktivierung hochkommt, ist es also ein Syntaxfehler.
Der muss dann aber offensichtlich zu einer Anweisung gehören, die in dem hier von Dir geposteten Quelltextausschnitt nicht vorhanden ist.

Per Doppelklick auf die Syntaxfehlermeldung navigierst Du zu der entsprechenden Quelltextzeile.

Poste doch mal den Quelltextausschnitt, für den der Fehler gemeldet wird.

Und wenn aus dem Kontext nicht klar wird, wozu die Anweisung gebraucht wird, dann vielleicht noch ein paar Bemerkungen dazu.


Abgesehen davon aber auch noch mal zurück zum Anfang.
Was heißt "obwohl wir mit Unicode arbeiten" genau?

War gemeint. dass die XML-Dateien Unicode (also UTF-8) benutzen?
War gemeint, dass in den Programm-Eigenschaften das Flag für Unicode-Fähigkeit gesetzt ist?
War gemeint, dass das SAP-System incl. DB auf Unicode migriert, also CL_ABAP_CHAR_UTILITIES=>CHARSIZE > 1 ist?

Denn wenn sichergestellt ist, dass in den XML-Dateien immer utf-8 verwendet wird, muss auch das Einlesen mit READ DATASET in ein Feld vim Typ STRING (nicht XSTRING) funktionieren, wenn man

Code: Alles auswählen.

OPEN DATASET p_sfile FOR INPUT IN TEXT MODE ENCODING UTF-8.
benutzt.

"Funktionieren" bedeutet hier aber erst einmal nur, dass nach dem READ DATASET die Umlaute im STRING korrekt dargestellt werden.

Wenn Du aber auch für das Einlesen in ein Feld vom Typ STRING LEGACY BINARY MODE oder LEGACY TEXT MODE oder TEXT MODE ENCODING NON-UNICODE (oder in einem nicht nach Unicode migrierten System TEXT MODE ENCODING DEFAULT oder in einem nicht unicode-fähigen Programm TEXT MODE ohne ENCODING-Zusatz) genommen hast, dann kann das für Dateien, die utf-8 verwenden, nicht funktionieren.

Umgekehrt wird TEXT MODE ENCODING UTF-8 nicht funktionieren, wenn in der XML-Datei auch mal eine andere Code Page als utf-8 vorkommt.
(OK, ASCII mit 7bit-Zeichen, also ohne Umlaute, dürfte dann immer noch funktionieren.)

Frank

Re: OPEN xml-Dateien mit Sonderzeichenn

Beitrag von Tellerchen58 (ForumUser / 21 / 0 / 0 ) »
Hallo,

wir werden das noch einmal prüfen.

Bin erst übernächste Woche wieder am Platze und melde mich dann.


Gruß
Tellerchen58

Seite 1 von 1

Vergleichbare Themen

2
Antw.
6966
Views
Dateien in SAP hochladen
von Monbebe » 22.03.2012 16:15 • Verfasst in ABAP® für Anfänger
15
Antw.
13941
Views
Archivierung von Dateien
von Mark33 » 21.08.2012 22:38 • Verfasst in ABAP® für Anfänger
0
Antw.
2379
Views
XML Dateien einlesen!
von Rabea1103 » 02.03.2009 11:32 • Verfasst in ABAP® Core
4
Antw.
3440
Views
Dateien senden
von cuncon » 04.04.2018 15:33 • Verfasst in ABAP® für Anfänger
3
Antw.
4365
Views
Laden von Dateien
von debianfan » 26.05.2017 15:08 • Verfasst in ABAP® für Anfänger

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.