Ansicht
Dokumentation

SCP_REPLACE_STRANGE_CHARS - Transliteration von Texten

SCP_REPLACE_STRANGE_CHARS - Transliteration von Texten

BAL Application Log Documentation   Addresses (Business Address Services)  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

Funktionalität

Der Funktionsbaustein SCP_REPLACE_STRANGE_CHARS wird zur Transliteration von Texten verwendet. Dabei werden nationale Sonderzeichen durch einfache Zeichen ersetzt. Eine Übersicht über die unterstützten Zeichen und der zugeordneten Ersetzungen gibt der Anhang von Hinweis 1062237. Eigene von SAP definierte Zeichen (Rahmenzeichen oder Ikonen) werden nicht unterstützt.

Ursprünglich basierte die Implementierung von SCP_REPLACE_STRANGE_CHARS auf der Konvertierung zwischen zwei Zeichensätzen. Ab Basis Release 7.51 wird die Transliteration aber mit Hilfe der Klasse CL_ICU_TRANSFORMATION durchgeführt. Diese Klasse verwendet die sogenannten ICU Bibliotheken (ICU -International Components for Unicode). Damit gibt es keine Abhängigkeiten mehr zu den alten für die Transliteration verwendeten Zeichensätzen.

Schnittstelle

INTEXT: Text der transliteriert werden soll. INTEXT muss zeichenartig sein. (Typ C oder Typ STRING).

INTEXT_LG: Obsolet. Der Parameter wurde in der alten Implementierung in Kombination mit dem obsoleten Parameter IN_CP verwendet, um die Länge des Eingabetextes in Bytes zu definieren. In Unicode Systemen ist das nicht mehr notwendig, da die Länge des Eingabetextes eindeutig definiert ist.

INTER_CP, INTER_BASE_CP: die Parameter definieren zwei Zeichensätze, die die Regeln für die Transliteration festlegen. Aus Kompatibilitätsgründen bleibt die Bedeutung der Parameter erhalten, auch wenn die Transliteration nicht mehr durch eine Konvertierung von Zeichensätzen, sondern durch ICU Regeln durchgeführt wird.

Die von SAP speziell für Transliterationen ausgelieferten Zeichensätze sind 1146, 1155, 1156, 1157 wobei nur folgende Kombinationen sinnvoll sind

INTER_CP = 1146, INTER_BASE_CP = 1100

INTER_CP = 1155, INTER_BASE_CP = 1100

INTER_CP = 1156, INTER_BASE_CP = 8000

INTER_CP = 1157, INTER_BASE_CP = 1100

(siehe auch Hinweis 1062237). Eigene Zeichensätze können verwendet werden. Dabei werden entsprechende ICU Regeln zur Laufzeit generiert.

Hinweis: neue Anforderungen an die Transliteration durch SCP_REPLACE_STRANGE_CHARS sollten nicht mehr durch Änderungen an bestehenden Zeichensätzen oder durch neue Zeichensätze erfüllt werden. Transliterationen können direkt mit der Klasse CL_ICU_TRANSFORMATION implementiert werden.

IN_CP: Obsolet. Der Parameter wurde in der alten Implementierung verwendet, um in non Unicode Systemen mit MDMP oder Blended Codepage Konfiguration das Encoding von Texten eindeutig definieren zu können. In Unicode Systemen ist das nicht mehr notwendig, da jedes Zeichen eindeutig definiert ist.

REPLACEMENT: Der Parameter definiert das Ersetzungzeichen, das verwendet wird, falls für ein Eingabezeichen keine Transliteration definiert ist. Das Zeichen muss als alte SAP Zeichennummer übergeben werden. Die Zuordnung von alten SAP Zeichennummern zum entsprechenden Unicode Zeichen befindet sich in Tabelle TCP01. Falls nicht angegeben, wird das Zeichen U+002E (Dezimalpunkt) verwendet.

Falls REPLACEMENT = 0 gesetzt ist, wird - anstatt einer Ersetzung - die Exception CANNOT_CONVERT ausgelöst.

OUTTEXT: Ergebnis der Transliteration.

OUTUSED: Obsolet. In der alten Implementierung gab dieser Parameter die Anzahl der verwendeten Bytes an, die bei der Transliteration/Zeichenatz Konvertierung verwendet wurden.

OUTOVERFLOW: Obsolet. In der alten Implementierung gab der Parameter an, ob das Ergebnis der Transliteration abgeschnitten wurde. Dies ist immer dann der Fall, wenn die technische Länge von OUTEXT für das Ergebnis der Transliteration nicht ausreicht.

Ausnahmen

INVALID_CODEPAGE wird ausgelöst, falls eine der beiden Zeichensätze INTER_CP oder INTER_BASE_CP nicht existieren.

INTERNAL_ERROR wird ausgelöst, falls die Transliteration mit Klasse CL_ICU_TRANSFORMATION nicht möglich ist.

CANNOT_CONVERT wird ausgelöst, falls der Parameter REPLACEMENT = 0 ist und keine Regel für die Ersetzung eines Zeichens definiert ist.

FIELDS_NOT_TYPE_C wird ausgelöst, falls der Parameter INTEXT nicht zeichenartig ist.

Die Ausnahme CODEPAGE_MISMATCH is obsolet.





Parameter

INTER_BASE_CP
INTER_CP
INTEXT
INTEXT_LG
IN_CP
OUTOVERFLOW
OUTTEXT
OUTUSED
REPLACEMENT

Ausnahmen

CANNOT_CONVERT
CODEPAGE_MISMATCH
FIELDS_NOT_TYPE_C
INTERNAL_ERROR
INVALID_CODEPAGE

Funktionsgruppe

SCPC

Vendor Master (General Section)   BAL Application Log Documentation  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 5394 Date: 20240523 Time: 124622     sap01-206 ( 136 ms )