Ermitteln der Codepage einer Datei

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

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

Ermitteln der Codepage einer Datei

Beitrag von Kaiwalker (Specialist / 165 / 0 / 0 ) »
Hallo,

ich habe ein Programm geschrieben, das von einem FTP-Server Dateien einliest, verarbeitet und per Mail weiterleitet.
Nun bekommen wir neuerdings die Daten in unterschiedlichen Codepages (UTF-8, UTF-16LE, Non-Unicode).
Für das Weiterleiten der Dateien lade ich die Datei zuerst per Gui_Download auf den lokalen Rechner und hänge diese dann per OLE2 an eine Outlook-Mail an.
Wenn ich aber nun die Datei, die im UTF-16LE Format eingelesen wurde weiterleite, kann die Datei nicht vernünftig gelesen werden.
Ich habe mir jetzt zwischenzeitlich damit geholfen, im SAP-Logon die Codepage auf UTF-16LE zu ändern, aber das ist ja auch nicht die Lösung.

Daher nun meine Frage: Kann man irgendwie ermitteln, mit welcher Codepage die Datei gespeichert wurde?

Viele Grüße und Danke
Kaiwalker
Möge die Macht mit euch sein.

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


Re: Ermitteln der Codepage einer Datei

Beitrag von abuma (Specialist / 102 / 36 / 14 ) »
Guten Morgen Kaiwalker,

vielleicht hilft dir das weiter:
cl_abap_file_utilities=>check_utf8( EXPORTING file_name = output_file
IMPORTING encoding = encoding ).

Bzw. generell vielleicht mal einen Blick in die Klasse werfen. Habe das jetzt nur auf meinen Notizen rauskopiert.

Liebe Grüße
abuma

Re: Ermitteln der Codepage einer Datei

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Hi.

Muss der Versand via OLE und Outlook erfolgen?
SAP kann normalerweise alles was du hier an Funktionalität aufgezählt hast auch ohne GUI-Beteiligung.
Wichtig ist bei der FTP-Operation die Destination SAPFTPA (Ausführung am Server) zu verwenden. Die Standard-Destination SAPFTP läuft am Client und da könntes es wieder zu Wechselwirkungen mit den Client-Einstellungen kommen.
Am Server kann man dann mit den diversen SAP-Klassen das Encoding prüfen und vorallem muss man auch nicht mit Dateien auf dem Dateisystem herumfuhrwerken.
Den Versand per Mail kann man dann mit den Klassen CL_BCS* sehr effizient bewerkstelligen. Vorallem das Attachment-Management ist um vieles besser als der "alte" Funktionsbaustein SO_NEW_DOCUMENT_ATT_SEND_API1.

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: Ermitteln der Codepage einer Datei

Beitrag von Kaiwalker (Specialist / 165 / 0 / 0 ) »
Hallo,

danke für die Antworten.
Die Klasse cl_abap_file_utilities kann ich leider nicht nutzen, weil die nur auf UTF-8 prüft.
Ich nutze OLE2 für die Erzeugung von Mails, da das SO nicht überall eingerichtet ist.

Gibt es noch weitere Ideen, wie ich die Codepage der Datei ermitteln kann?

Viel Grüße
Kaiwalker
Möge die Macht mit euch sein.

Re: Ermitteln der Codepage einer Datei

Beitrag von edwin (Specialist / 306 / 10 / 68 ) »
Hi,

du brauchst die 2-4 Bytes vom Anfang der Datei (Byte Order Mark), da ist (bei UTF-32/ UTF-16 / UTF-8 ) kodiert, was das ist. In der Klasse CL_ABAP_CHAR_UTILITIES sind die entsprechenden Konstanten definiert :

BYTE_ORDER_MARK_LITTLE = 'FFFE' "Unicode - Little Endian
BYTE_ORDER_MARK_BIG = 'FEFF' "Unicode - Big Endian
BYTE_ORDER_MARK_UTF8 = 'EFBBBF' "UTF-8 Representation of FEFF

google mal nach "Byte Order Mark"
Grüße edwin

*edit - Ergänzungen zu BOM

Re: Ermitteln der Codepage einer Datei

Beitrag von a-dead-trousers (Top Expert / 4414 / 224 / 1186 ) »
Nochmal: Warum muss es eigentlich OLE sein?

EDIT:
Nevermind. Hab deinen Kommentar bezüglich SO überlesen.

EDIT 2:
Das Thema lässt mich doch nicht los.
Gerade in Zeiten von Webdynpro, UI5, Fiori usw. sollte man eher davon ausgehen, dass genau MS-Office nicht vorhanden oder nicht "erreichbar" ist. Gerade auf Handheld-Devices die mittlerweile in so ziemlich jeder Branche angekommen sind.
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: Ermitteln der Codepage einer Datei

Beitrag von Kaiwalker (Specialist / 165 / 0 / 0 ) »
edwin hat geschrieben:
09.07.2021 15:51
Hi,

du brauchst die 2-4 Bytes vom Anfang der Datei (Byte Order Mark), da ist (bei UTF-32/ UTF-16 / UTF-8 ) kodiert, was das ist. In der Klasse CL_ABAP_CHAR_UTILITIES sind die entsprechenden Konstanten definiert :

BYTE_ORDER_MARK_LITTLE = 'FFFE' "Unicode - Little Endian
BYTE_ORDER_MARK_BIG = 'FEFF' "Unicode - Big Endian
BYTE_ORDER_MARK_UTF8 = 'EFBBBF' "UTF-8 Representation of FEFF

google mal nach "Byte Order Mark"
Grüße edwin

*edit - Ergänzungen zu BOM
Danke.
Das könnte mir vielleicht weiterhelfen.
Möge die Macht mit euch sein.

Re: Ermitteln der Codepage einer Datei

Beitrag von Kaiwalker (Specialist / 165 / 0 / 0 ) »
a-dead-trousers hat geschrieben:
09.07.2021 19:08
Nochmal: Warum muss es eigentlich OLE sein?

EDIT:
Nevermind. Hab deinen Kommentar bezüglich SO überlesen.

EDIT 2:
Das Thema lässt mich doch nicht los.
Gerade in Zeiten von Webdynpro, UI5, Fiori usw. sollte man eher davon ausgehen, dass genau MS-Office nicht vorhanden oder nicht "erreichbar" ist. Gerade auf Handheld-Devices die mittlerweile in so ziemlich jeder Branche angekommen sind.
Das ist halt so.
Wir sind noch nicht so weit, dass wir diese "neuen" Techniken wie UI5, Fiori usw. nutzen können. (Damit fangen wir gerade erst an)
Die meisten unserer Kunden arbeiten über einen festen PC oder über einen Citrix-Client. Dort haben die dann auch immer Zugriff auf ein Mail-Programm, welches per OLE2 angesteuert werden kann. Für Kunden, die keinen Zugriff auf so ein Mail-Programm haben, habe ich aber auch eine abgeleitete Klasse erstellt in der die Funktionen des SAP Office angesprochen werden, sodass das auch bei Bedarf verwendet werden kann.

Trotzdem auch ein danke an dich.
Möge die Macht mit euch sein.

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1953
Views
Datum + Uhrzeit zu Datei auf Client oder Server ermitteln
von ralf.wenzel » 12.11.2013 12:32 • Verfasst in ABAP® Core
2
Antw.
10022
Views
CODEPAGE Problem
von Beni » 26.10.2005 18:22 • Verfasst in ABAP® Core
1
Antw.
3005
Views
Codepage Tschechien
von eschi78 » 05.06.2012 09:24 • Verfasst in ABAP® Core
0
Antw.
1198
Views
Latin2 codepage
von Bajdu » 15.08.2006 08:19 • Verfasst in ABAP® für Anfänger
6
Antw.
5081
Views
Codepage für FTP_R3_TO_SERVER
von schmitzandreas » 06.11.2007 13:17 • Verfasst in ABAP® Core

Ü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.

Unbeantwortete Forenbeiträge

SD_PRINT_TERMS_OF_PAYMENT
vor einer Woche von Manfred K. 1 / 1798
BUSOBJEKT zu CMIS PHIO ermitteln
vor 4 Wochen von snooga87 1 / 3631