Funktion gesucht: Setze Leerzeichen in String für alle Zeichen die nicht in UTF8 vorkommen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Funktion gesucht: Setze Leerzeichen in String für alle Zeichen die nicht in UTF8 vorkommen

Beitrag von Romaniac (Specialist / 198 / 57 / 26 ) »
Hallo zusammen,

Mein Kollege hat folgendes Problem:

ich erstelle im ERP einen idoc.
unter anderem ist in einem feld (type char255) die anschrift enthalten:
"irgendeine strasse N° 10'
das problem ist das '°' zeichen im feld.

der idoc wird an PI übergeben, das daraus ein xml erzeugt und versendet.
gleichzeitig wird im std. die codepage auf das std-format UTF-8 abgeändert.

mein problem ist nun. dass dieses zeichen in UTF-8 gar nicht existiert.
PI übernimmt dieses zeichen einfach in den tag:

<adress1>irgendeine strasse N° 10</adress1>

das führtin meinem fall dazu, dass das empfangende system einen
oracle-abbruch bekommt.

als erste massnahme habe ich in mein programm eingefügt:
translate segment-feld using '° '.
damit ersetze ich bereits auf erp-seite dieses zeichen durch space.

nun bin ich auf der suche nach einer dynamischen umsetzung.
d.h. ich will alle im ERP verwendeten zeichen, die es in UTF-8 nicht
gibt schon mal durch space ersetzen.

Dann bekam ich den hinweis auf die klassen cl_abap_conv*
damit kann man ein c-feld in utf-8 umwandeln. das ergebnis ist aber ein
xstring.
z.b. habe ich 'AA°BB' dann umgewandelt in 4141C2B04242
in diesem fall wird also das zeichen '°' mit 'C2B0' ersetzt. spitze,
ein byte durch 2 byte !
das hilft mir aber nicht wirklich weiter.

ich suche also einen fuba/methode/syntax, der ich ein c-feld übergebe
und die alle nicht utf-8-character durch space ersetzt.

irgendeine idee ?

bei der annahme von idocs gibt es eine routine, die eine byteumsetzung
vornimmt. das macht sap im std. bei unicode und non-unicode-systemen.
die umsetzung wird dabei mit TRANSLATE ... using.. durchgeführt.
bei dieser umsetzung gibt es einen ellenlangen string für using, der
hart codiert ist.
wenn ich dieselbe lösung wähle, dann bräuchte ich eine liste der
utf-8-konformen zeichen, damit ich alle anderen durch space ersetze.
... die finde ich aber auch nirgends

Vielen Dank und Gruß,

Wolfgang
Geht nicht gibts nicht

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Funktion gesucht: Setze Leerzeichen in String für alle Zeichen die nicht in UTF8 vorkommen

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
Hi,
x'C2B0' ist aber "°" in UTF-8, und "°" kommt sogar im Standard ASCII vor als x'B0', deshalb verstehe ich nicht, weshalb das Zeichen dir Probleme bereitet.
/Edwin

Re: Funktion gesucht: Setze Leerzeichen in String für alle Zeichen die nicht in UTF8 vorkommen

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Verstehe ich auch nicht, warum das ° ein Problem darstellen sollte. Vielleicht ist es aber auch nur ein ähnliches Zeichen?
Ansonsten versuche mal regex mit [:print:]

Re: Funktion gesucht: Setze Leerzeichen in String für alle Zeichen die nicht in UTF8 vorkommen

Beitrag von centauro_ernst (ForumUser / 6 / 0 / 0 ) »
Es handelt sich dabei um die Schnittstelle zu einem externen System. Und dieses meldet, dass das 'degree'-sign nicht UTF-8 konform ist.

damit würde ja die sap-konvertierung nach B2C0 korrekt sein.ich kann mich aber erinnern, in einer anderen schnittstelle, wenn ein zeichen = 1 byte konvertiert wurde in ein 2-byte zeichen, dass dann diese verschiebung erhebliche schwierigkeiten bei der verarbeitung ergeben hatte.

damit müsste ich dann alle zeichen ausschliessen, die eine 1 zu 2 byte-konvertierung zur folge haben.

mfg
ernst

Re: Funktion gesucht: Setze Leerzeichen in String für alle Zeichen die nicht in UTF8 vorkommen

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
centauro_ernst hat geschrieben:
11.06.2019 15:31
Es handelt sich dabei um die Schnittstelle zu einem externen System. Und dieses meldet, dass das 'degree'-sign nicht UTF-8 konform ist.
Das stimmt wohl auch. ° ist nicht im ASCII-Zeichensatz enthalten.
Wie gesagt: Mit regex und [:print:] alle nicht druckbaren Zeichen Löschen.

Re: Funktion gesucht: Setze Leerzeichen in String für alle Zeichen die nicht in UTF8 vorkommen

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
stimmt '°' ist nicht im ASCII. Ist aber trotzdem komisch mit diesem UTF-8 Problem - bei [:print:] fliegen dann aber auch alle Umlaute... raus.
Zitat:
"
[:print:] matches a visible character or the space character [\x20-\x7E]
"
/Edwin

Re: Funktion gesucht: Setze Leerzeichen in String für alle Zeichen die nicht in UTF8 vorkommen

Beitrag von centauro_ernst (ForumUser / 6 / 0 / 0 ) »
Dann müsste ja bei der prüfung mit regex und [:print:] das zeichen ° als nicht druckbar erkannt werden.
ist es aber nicht.

Re: Funktion gesucht: Setze Leerzeichen in String für alle Zeichen die nicht in UTF8 vorkommen

Beitrag von edwin (Specialist / 300 / 9 / 68 ) »
es wird bei [:print:] als "nicht druckbar" erkannt.
/Edwin

Seite 1 von 1

Vergleichbare Themen

1
Antw.
7107
Views
Leerzeichen in einem String einfügen
von schnickschnack1 » 06.06.2006 18:11 • Verfasst in ABAP® für Anfänger
5
Antw.
5989
Views
führende leerzeichen in einem string löschen
von francula » 21.07.2004 09:22 • Verfasst in ABAP® Core
1
Antw.
23048
Views
' ' Zeichen im String entfernen
von SteveOh » 24.08.2010 14:15 • Verfasst in ABAP® für Anfänger
1
Antw.
2399
Views
String --> Zeichen ausschneiden
von Zubasa » 11.04.2011 14:08 • Verfasst in ABAP® für Anfänger
4
Antw.
8662
Views
Zeichen in String einfügen
von killa12 » 08.02.2010 15:08 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Zugriff auf Daten via Webdav
vor einer Stunde von msfox 2 / 37
Interne Tabelle
vor 19 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Zugriff auf Daten via Webdav
vor einer Stunde von msfox 2 / 37
Interne Tabelle
vor 19 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141