Ich habe folgendes Problem:
Ich lese eine XML-Message aus und bekomme in der Payload einen Stream zurückgeliefert in einer Bytereihenfolge. Diesen Stream lege ich in ein Feld ab, das als XSTRING definiert ist.
Da ich diesen Stream durchsuchen möchte, muß ich diesen XSTRING nach STRING (Datentyp) konvertieren.
Dazu existiert die Klasse CL_XMS_PART_UTIL mit der Methode CONVERT_XSTRING_TO STRING. Diese nutze ich auch, nur bekomme ich bei einigen Konvertierungen folgende Fehlermeldung:
"Bei der Codekonvertierung für Charset UTF-8 (Codepage 4110) trat ein Fehler auf: Zeichensatzkonvertierung für ein oder mehrere zeichen nicht möglich".
Eine Konvertierung erfolgt nicht - das Empfangsfeld (Datentyp STRING) bleibt leer.
Wie kann ich eine Konvertierung von 4110 nach 4103 durchführen (das System auf dem ich entwickle, ist ein WAS / 6.2; als Codepage gibt das Systems 4103 aus).
Kennt jemand eine Möglichkeit diesen XSTRING nach STRING zu konvertieren (eventuell einen Funktionsbaustein?) bzw. welche Möglichkeiten existieren noch?
Schau mal, ob es bei Dir die Klasse 'CL_ABAP_CONV_X2X_CE'. Damit lassen sich Konvertierungen in Abhängigkeit der Codepage durchführen. Außerdem finden sich in der Dokumentation zu dieser Klasse noch Verweise auf andere Konvertierungsklassen.
Betreff: Codepage-Umwandlung:
Vielleicht hilft dir ein einfacher:
TRANSLATE c ...FROM CODE PAGE g1 ...TO CODE PAGE g2
Betreff: Xstring-String-Umwandlung:
Ich habe keine Ahnung von XML etc, aber es würde mich noch interessieren, warum du deinen Xstring nicht einfach mit Move in einen String umwandelst.
Laut Doku sollte das funktionieren.
(Wir arbeiten noch auf 4.6 - die Klasse CL_XMS_PART_UTIL existiert bei uns nicht )
Wenn das alles nichts hilft, dann könntest du vielleicht deinen Suchstring in Xstring umwandeln und so suchen.
Hallo,
Danke für die Hinweise, aber:
Bei der Anweisung TRANSLATE sind die Zusätze FROM CODEPAGE und FROM NUMBER FORMAT in Unicode-Programmen verboten...
und der einfache Move bewirkt keinerlei Konvertierung bei XSTRING to STRING (der Stream
bleibt binär). Das Suchen mit XSTRING (Binäre Suche) habe ich auch schon probiert, allerdings
wird der Suchstring so nicht gefunden.
Die Klasse 'CL_ABAP_CONV_X2X_CE' hatte ich auch schon am Wickel.
Ich habe jetzt eine andere Methode zur Lieferung des String's genommen:
STRING_XDATA = L_RESOURCE->GETBINARYDATA( ).
anstatt:
STRING_XDATA = L_RESOURCE->GETBLOBDATA( ).
Damit funktioniert's, d.h. ich bekomme KEINEN Fehler bei der String-Konvertierung!