Codepage / gültige Zeichen

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

Codepage / gültige Zeichen

Beitrag von jspranz (ForumUser / 76 / 5 / 0 ) »
Hallo,

Es gibt Programme, die auf unserem Unicode-System Dateien in ein nicht Uni-Code-System schreiben.
OPEN DATASET
TRANSFER

In Ausnahmefällen kommt es nun vor, dass eine Zeile nicht in die Datei geschrieben werden kann, da ein entsprechendes Zeichen nicht umgesetzt werden kann.

Gibt es eine Möglichkeit einen String (oder die Zeile einer internen Tabelle) zu prüfen ob sie ungültige Zeichen enthält.
Dann könnte man eine entsprechende Fehlerbehandlung machen ohne dass das Programm dann beim TRANSFER mit einem Dump

Kategorie ABAP Programmierfehler
Laufzeitfehler CONVT_CODEPAGE
Ausnahme CX_SY_CONVERSION_CODEPAGE

abbricht.

Es könnte mit den Klassen CL_ABAP_CONV... gehen.

Aber wie?

Vielleicht hat jemand ein Beispielcoding bzw. andere Erklärungen.

Wäre super.

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


Re: Codepage / gültige Zeichen

Beitrag von a-dead-trousers (Top Expert / 4300 / 214 / 1147 ) »
hi!

Der Zusatz IN TEXT MODE ENCODING NON-UNICODE funktioniert also nicht.

Grundsätzlich kannst die Konvertierung auch selber im Programm ausführen.
Dazu brauchst du die Klasse CL_ABAP_CONV_OUT_CE.
Mit der Methode CREATE erstellst du dir den etsprechenden Konverter und mit CONVERT kannst du die Daten dann umwandeln.

Am Besten du wandelst alle Zeilen deiner internen Tabelle die du ausgeben möchtest in einen String um.
Mein Code-Schnippels für CONCATENATE sollte hier wunderbar funktionieren.
Den fertigen STRING kannst du dann mit der CONVERT Methode auf einen Rutsch in einen XSTRING umwandeln und diesen dann mit OPEN DATASET IN BYTE MODE sowie TRANSFER abspeichern.

lg ADT

EDIT:
Vielleicht probierst du auch die Zusätze IGNORING CONVERSION ERRORS bzw. REPLACEMENT CHARACTER des OPEN DATASET mal aus :wink:
Damit sollte sich der Fehler abfangen lassen, nur sind dann halt die Daten nicht 100% korrekt. Statt dem "fehlerhaften" Zeichen steht dann das REPLACEMENT CHARACTER.
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: Codepage / gültige Zeichen

Beitrag von jspranz (ForumUser / 76 / 5 / 0 ) »
Vielen Dank für die Antwort.

Ich würde gerne die Datei bevor ich mit der Klasse rummache probieren die Datei als UTF-16 zu schreiben.
So wie ich das aber aus den SAP-Informationen rausgelesen habe geht das nicht so einfach...? Zumindest nicht mit open dataset - oder?

In UTF-8 haben wir es probiert. Die Fremdapplication kann aber die Daten nicht lesen.
Wir haben die Datei mit einem editor (notepad++) als UTF-16 abgespeichert. Diese konnte die Fremdapplication dann öffnen.

Vielen Dank für weitere Informationen.

Re: Codepage / gültige Zeichen

Beitrag von a-dead-trousers (Top Expert / 4300 / 214 / 1147 ) »
jspranz hat geschrieben:Es gibt Programme, die auf unserem Unicode-System Dateien in ein nicht Uni-Code-System schreiben.
jspranz hat geschrieben:In UTF-8 haben wir es probiert. Die Fremdapplication kann aber die Daten nicht lesen.
Wir haben die Datei mit einem editor (notepad++) als UTF-16 abgespeichert. Diese konnte die Fremdapplication dann öffnen.
Wo ist dann das Problem?
Euer SAP ist Unicode (UTF-8) und die Fremdapplikation unterstützt sogar eine noch "bessere" Codepage (UTF-16).
Laut deiner ersten Aussage ging es darum von SAP (UTF-8) in ein "niedrigeres" Format umzuwandeln.

Es sollte also reichen in SAP die Daten OHNE den Encoding Zusatz zu exportieren.

Wenn du seitens SAP testen willst BEVOR du die Daten rausschreibst, kannst du wie gesagt die Klasse CL_ABAP_CONV_OUT_CE verwenden.
Die wirft genauso wie das OPEN DATASET eine Exception wenn es zu einem Fehler kommt. (Der Parameter IGNORE_CERR bei CREATE muss auf ABAP_FALSE stehen)

lg 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: Codepage / gültige Zeichen

Beitrag von jspranz (ForumUser / 76 / 5 / 0 ) »
Das Problem ist die Fremdapplication, die nur UTF-16 aber nicht utf-8 versteht.
Bisher schreiben wir es als no-unicode-Datei raus. Also ANSII.

Re: Codepage / gültige Zeichen

Beitrag von a-dead-trousers (Top Expert / 4300 / 214 / 1147 ) »
hmmm...
ABAP Hilfe zu SET LOCALE hat geschrieben:Textumgebung in Unicode-Systemen setzen
Die Codepage eines Unicode-Systems ist immer UTF-16 und wird durch die Anweisung SET LOCALE nicht beeinflusst. Nach Ausführung von SET LOCALE wird aber die Nicht-Unicode-Codepage, die in einem Nicht-Unicode-System von der Anweisung gesetzt würde (siehe unten), bei speziellen Anweisungen wie z.B. dem Lesen und Schreiben von Legacy-Dateien für Konvertierungen verwendet.
Jetzt bin ich vollends verwirrt. :?

Ne, versuch doch mal das was ich in meinem ersten Post geschrieben hab.
1) Umwandeln der Tabelle in einen kompletten String.
2) Konvertieren mit CL_ABAP_CONV_OUT_CE in einen XSTRING und Encoding 4103 (lt. Tabelle TCP00 ist das UTF-16)
3) Speichern des Ergebnis mit OPEN DATASET IN BINARY MODE /TRANSFER in eine Datei.

lg 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

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1166
Views
keine gültige Referenzvariable
von JohnLocklay » 28.11.2016 10:05 • Verfasst in ABAP® Core
6
Antw.
2489
Views
Gültige Felder einer Tabelle
von Gast » 06.08.2004 16:16 • Verfasst in ABAP® Core
0
Antw.
971
Views
Latin2 codepage
von Bajdu » 15.08.2006 08:19 • Verfasst in ABAP® für Anfänger
2
Antw.
9822
Views
CODEPAGE Problem
von Beni » 26.10.2005 18:22 • Verfasst in ABAP® Core
6
Antw.
4855
Views
Codepage für FTP_R3_TO_SERVER
von schmitzandreas » 06.11.2007 13:17 • Verfasst in ABAP® Core

Über diesen Beitrag


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.