Probleme beim Upload/Download in SAP Unicode-Systemen

Wenn aus einem SAP Unicode-System Dateien heruntergeladen und in einem Pfad abgelegt werden sollen besitzen diese die Codierung UTF-8. Diese Codierung ist Standard zur Anzeige von Zeichensätzen aller Sprachen und Länder.

Dies kann dazu führen, dass auf diese Weise erzeugte Dateien von der entsprechenden Anwendung nicht oder nur fehlerhaft geöffnet werden können.




Prozess in NICHT-Unicode-Systemen

Auf Seiten des Anwendungsservers werden bei Verwendung der Anweisung OPEN_DATASET Textdaten OHNE Codepage-Umsetzung und Texte immer im Systemformat gesichert. (Systemcodepages in Windows sind z.B. ISO8859-1 oder Windows-1252.

Auf Seiten des Frontends werden Texte mit GUI_UPLOAD/DOWNLOAD immer in die Frontend-Codepage umgesetzt.

SAP konvertiert die Daten im Binärmodus anschließend in diese Codepage.




Lösungen

Dateien, die in UTF-8 kodiert sind, können bspw. mit einem Microsoft Editor in die Codepage ANSI umgewandelt werden. Eine weitere Möglichkeit ist der folgende Befehl, der die Datei direkt in ANSI erstellt:

OPEN DATASET datei01 for output in text mode encoding non-unicode ignoring conversion errors

Bei Anwendungsentwicklungen, die mit Unicode-Systemen kommunizieren, sollte man die Auswahl der Kodierung anbieten:

  • NON-UNICODE
    In diesem Mode wird standardmäßig die Non-Unicode-Codepage gewählt, die der Anmeldesprache entspricht.
  • UTF-8
    Codepage aus Unicode-Systemen

Am Frontend ist die folgende Methode zu verwenden, um die Codepage der Datei zu ermitteln:

cl_gui_frontend_services=>file_open/save_dialog

Die so ermittelte Codepage wird dann dem Funktionsbaustein GUI_UPLOAD mitgegeben. Alternativ zum Methodenaufruf kann auch der Funktionsbaustein NLS_GET_FRONTEND_CP verwendet werden, der zu einer Sprache die passende non-unicode Codepage liefert.




Codingbeispiel:


call method cl_gui_frontend_services=>file_open_dialog
EXPORTING
...
WITH_ENCODING = 'X'
...
changing
...
FILE_ENCODING = lv_encoding
...
.


call function 'GUI_UPLOAD'
exporting
...
CODEPAGE = lv_encoding.

Ihr Kontakt

So erreichen Sie uns!

Wir freuen uns auf Ihren Anruf unter +49 721 2 76 62-0 oder Ihre E-Mail

weiter

Unsere Newsletter

Bleiben Sie am Ball!

Und abonnieren Sie doch Ihren eigenen Newsletter… weiter