SmartForms: Adressen und Texte enthalten fehlerhaftes #

SmartForms: Adressen und Texte enthalten fehlerhaftes #

Mir ist es bei SmartForms aufgefallen, kann aber auch bei SAPScript vorkommen. Folgendes Szenario: Ein Formular wird in englischer Sprache ausgedruckt. Der Adressat findet sich in Dänemark und der Warenempfänger in Ungarn. Die dänische Adresse wird korrekt dargestellt, die ungarische nicht. Dort kommen bei den Sonderzeichen eine #, was falsch ist.

Rechts sehen wir die fehlerhaften #-Zeichen

Aber nicht nur bei Adressen kann das Problem auftreten, auch bei Texten kann dieses Phänomen vorkommen.

Die Analyse im Debugger zeigt, dass die Adressen korrekt im SAP hinterlegt sind und auch korrekt im Formular ankommen. Dies sollte aber stets kontrolliert werden, da vor allem nach einer Migration Zeilenumbrüche oder Sonderzeichen in #-Zeichen umgewandelt werden!

Letztlich liegt das Problem aber beim Drucker bzw. beim Druckertyp. Denn dort wird fest ein Zeichensatz hinterlegt, der aber nicht alle Sonderzeichen kennt. Hierzu gehen wir in die Transaktion SPAD und schauen uns den genutzten Drucker an. Anschließend über das Menü Springen->Gerätetyp:

In diesem Gerätetyp wird der SAP-Zeichensatz 1116 genutzt für ISO 8859-1. Dieser enthält keine ungarischen Zeichen, denn diese sind im ISO 8859-4.

Letztlich kann hier ein Zeichensatz hinterlegt werden. Allerdings geht das nicht "on the fly" im Produktivsystem sondern muss transportiert werden. Außerdem behebt das nur ein Symptom und nicht das Problem und spätestens bei einer Mischung aus mehreren Sprachen scheitern wir hier erneut.

Lösung: UPE nutzen

Statt den Zeichensatz zu ändern liegt die Lösung einen Schritt früher. Nämlich im Drucker. Hier werden wir UPE (Unicode Printing Enhancement) nutzen. D.h. wenn ein Zeichen im Zeichensatz nicht gefunden wird, dann lesen wir es aus einer Liste an zusätzlichen Zeichensätzen das fehlende Sonderzeichen nach. Somit sind wir voll flexibel und können in einem Formular Zeichen aus unterschiedlichen Sprachen (deutsch, englisch, norwegisch, ungarisch und auch Sprachen aus dem asiatischen Raum) nachlesen.

Die Einstellungen müssen nicht transportiert werden und können somit direkt im Produktivsystem erfolgen. Wir gehen hierzu in die Transaktion SPAD und wählen unseren Drucker. Dort in den Ändern-Modus wechseln. Hier sollte nun folgender Button erscheinen:

Der Button "Unicode Print Settings" erscheint nur im Ändern Modus.

Sollte der Button nicht erscheinen so muss das UPE noch per OSS Hinweis #1812076 aktiviert werden.

Mit Klick auf den Button erscheint folgende Auswahl. Hierbei ist die Auswahl nur dann entscheidend, wenn Sie gewisse asiatische Schriftzeichen bevorzugen wollen. In unserem Beispiel mit ungarischen Sprachzeichen ist die Auswahl egal, da diese in allen vorkommt:

Die Auswahl ist nur bei den asiatischen Schriften relevant

Ich wähle hier URDTC und bestätige mit dem grünen Haken. Im unteren Teil des Reiters erscheint nun ein neuer Bereich:

Bereich erscheint nur wenn ein UPE-Setting gewählt wurde

Mit Klick auf "Supported Languages" sehen Sie welche Zeichensätze unterstützt werden:

Es bedarf keiner weiteren Einstellungen und der Druck sollte nach dem Speichern nun korrekt erfolgen.

Ergebnis nach Umstellung auf UPE und URDTC.

Einziger Nachteil ist die Tatsache, dass diese Einstellung für jeden Drucker erfolgen muss.