Ansicht
Dokumentation
SCP_REPLACE_STRANGE_CHARS - Transliteration von Texten
BAL Application Log Documentation Addresses (Business Address Services)Diese Dokumentation steht unter dem Copyright der SAP AG.
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_CPINTER_CP
INTEXT
INTEXT_LG
IN_CP
OUTOVERFLOW
OUTTEXT
OUTUSED
REPLACEMENT
Ausnahmen
CANNOT_CONVERTCODEPAGE_MISMATCH
FIELDS_NOT_TYPE_C
INTERNAL_ERROR
INVALID_CODEPAGE
Funktionsgruppe
SCPCVendor 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 )