Wie Ö Ä bzw Ü in ABAP darstellen?

Getting started ... Alles für einen gelungenen Start.
16 Beiträge • Seite 1 von 2 (current) Nächste
16 Beiträge Seite 1 von 2 (current) Nächste

Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von donossi (ForumUser / 66 / 2 / 1 ) »
Hallo,

ich bekomme einen String in dem teilweise Ä, Ö und Ü durch Ö Ä bzw Ãœ erstetzt werden. Nun habe ich mir gedacht, dass ich mit

REPLACE ALL OCCURRENCES OF 'ä' IN meinstring WITH 'ä'.

einfach die Zeichen ersetzte. Dies klappt bei den kleinen Umlauten auch. Bei den grossen Umlauten wird allerding das Zeichen nach dem à immer durch eine Raute # ersetzt:

REPLACE ALL OCCURRENCES OF 'Ã# Ã# Ã# ' IN ASC WITH ' Ä Ö Ü'.

Wie kann ich dem Abap sagen, dass er dort die grossen Umlaute ausgeben soll?

gruss
Donossi

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


Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
mit dem Zusatz IN CHARACTER MODE sollte es gehen

REPLACE ALL OCCURRENCES OF 'Ã' IN meinstring WITH 'ä' IN CHARACTER MODE.

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von donossi (ForumUser / 66 / 2 / 1 ) »
Hallo,

Da ich nicht auf à prüfen will, sondern auf à UND ein 2tes Zeichen, hilft mir das was du geschrieben hast nicht weiter. Und dieses Zeichen übernimmt SAP nicht sondern ersetzt es beim aktivieren durch eine Raute

Gruss
DonOssi

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Woher kommen denn die Daten?
Aus einer Datei?
Dann würde ich es mal damit versuchen, bei OPEN DATASET ... FOR INPUT IN TEXT MODE den Zusatz ENCODING UTF-8 zu nutzen.

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
ich kann nicht ganz folgen, wo das Problem liegt. REPLACE ersetzt auch mehrere Zeichen.

Code: Alles auswählen.

DATA: text TYPE string.

text = '2kalkdfj  Ü kjdk Ü Ü kalkd'.

WRITE: / text.
REPLACE ALL OCCURRENCES OF 'Ãœ' IN text WITH 'Ä' IN CHARACTER MODE.
WRITE: / text.
Ausgabe:

Code: Alles auswählen.

2kalkdfj  Ü kjdk Ü Ü kalkd
2kalkdfj  Ä kjdk Ä Ä kalkd

Was meinst du mit "SAP übernimmt die Zeichen nicht und ersetzt durch #" ? Wird das im ABAP-Editor umgesetzt? Welchen Editor nutzt du?

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von donossi (ForumUser / 66 / 2 / 1 ) »
das Problem ist, dass Ö in Ã#, Ä ebenfalls in Ã# und Ãœ auch in Ã# geändert wird, sobald ich auf den aktivieren Button in SAP drücke.

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
hmm, kann ich nicht nachvollziehen, geht bei mir, auch in unterschiedlichen Release-Ständen.

Möglicherweise ein GUI-Problem? Mit welcher SAP-GUI-Version arbeitest du?

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Ich weiß nicht, was das Herumbasteln an Symptomen soll.

In der SAP-Standard-Codepage 1100 (passt zu iso-latin1/ISO 8859-1) entspricht  dem Hexadezimalwert C2, à dem Hexadezimalwert C3.
Beides sind aber auch häufig vorkommende erste Bytes für die UTF-8-Darstellung von westeuropäischen Nicht-ASCII-Zeichen.
Deswegen ja in meiner vorherigen Antwort der Vorschlag, das Problem an einer ganz anderen Stelle zu lösen.

Selbst wenn Du jetzt im Debugger mit Hexadezimaldarstellung herausfindest, welche Hexadezimalwerte sich nun hinter den nicht druckbaren Zeichen verbergen, die von SAP als # dargestellt werden - wie oft willst Du Dein Programm noch anpassen müssen?

Bisher hast Du Ä, Ö. Ü, ä, ö, ü und eventuell ß.
Was machst Du, wenn das nächste Mal ein é oder á und zwei Wochen danach das erste Mal ein ç vorkommt?
Jedes Mal Dein Programm anpassen?

Deshalb suche doch mal nach der Ursache (z.B. Einlesen der Datei, oder was weiß ich, wie diese "Zeichen" das erste mal ins System kommen), statt die Symptome zu bekämpfen.

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
häh? Was meinst du denn jetzt mit Symptomen bekämpfen? Er hat sich doch noch gar nicht geäußert, wo die Zeichen herkommen. Aufgrund seines letzten Postings nehme ich eher an, daß die Sonderzeichen als konstante Zeichenkette im Quelltext stehen hat. Ist das der Fall und werden diese nach Aktivierung des Codings umgewandelt, ist die Frage nach GUI-Version und verwendetem Editor doch naheliegend. Gerade im Zusammenhang mit GUI und Sonderzeichen habe ich schon die seltsamsten Sachen erlebt.

Allerdings bin ich mir aufgrund seiner Postings nicht sicher, ob er das wirklich meint.

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
zzcpak hat geschrieben:häh? Was meinst du denn jetzt mit Symptomen bekämpfen? Er hat sich doch noch gar nicht geäußert, wo die Zeichen herkommen.
Eben.
Aber im ersten Beitrag hieß es noch
donossi hat geschrieben:ich bekomme einen String in dem teilweise Ä, Ö und Ü durch Ö Ä bzw Ãœ erstetzt werden
Das heißt, dass ein String verarbeitet werden soll, in dem statt Ä, Ö, Ü in der System-Codepage usw. eben offenbar die 2 Bytes für UTF-8-Darstellung vorkommen.
Da normale ASCII-Zeichen nicht betroffen sind, gehe ich davon aus, dass das System ein Nicht-Unicode-System (cl_abap_char_utilities=>charsize ist 1) ist.
Und das von irgendwoher ein UTF-8-String ins System gekommen ist.

Ich kann das Problem auch falsch verstanden haben, und in dem String kommen sowohl "korrekte" Umlaute Ä, Ö, Ü... als auch die unerwünschten UTF-8-Bytefolgen vor. (Das kann aber eigentlich nur entstanden sein, wenn zuvor an dem ursprünglichen UTF-8-String schon mal jemand manuell oder per Programm herumgebastelt hat...)
zzcpak hat geschrieben:Aufgrund seines letzten Postings nehme ich eher an, daß die Sonderzeichen als konstante Zeichenkette im Quelltext stehen hat. Ist das der Fall und werden diese nach Aktivierung des Codings umgewandelt, ist die Frage nach GUI-Version und verwendetem Editor doch naheliegend. Gerade im Zusammenhang mit GUI und Sonderzeichen habe ich schon die seltsamsten Sachen erlebt.
Ja, sicher.
Aber in diese Sackgasse ist er doch nur geraten bei dem Versuch, das ursprüngliche Problem (eine Bytefolge, die nicht einen zur System-Codepage passenden String darstellt, ist in einem Feld vom Typ C oder STRING gelandet) durch Herumbasteln an den Symptomen zu lösen.

Also:
Wenn der "String" aus einer Datei kommt: Datei mit korrekter Codepage-Konvertierung einlesen.
Wenn es sich um einen XML-Stream handelt: Nicht in ein Feld vom Typ STRING einlesen, sondern in ein Feld vom Typ XSTRING (und dann mit CALL TRANSFORMATION oder den entsprechenden ABAP-Objects-Methoden verarbeiten)
...
Zuletzt geändert von Frank Dittrich am 18.01.2011 17:27, insgesamt 1-mal geändert.

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
ich denke, du hast recht. Zu viele Unbekannte, um das Problem weiter zu analysieren. Dann mal abwarten, bis weitere Details bekannt werden.

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von donossi (ForumUser / 66 / 2 / 1 ) »
Hallo,

Nach weiteren Nachschauen, habe ich festgestellt, dass folgende Aussage wohl korrekt ist:
Das heißt, dass ein String verarbeitet werden soll, in dem statt Ä, Ö, Ü in der System-Codepage usw. eben offenbar die 2 Bytes für UTF-8-Darstellung vorkommen.
Da normale ASCII-Zeichen nicht betroffen sind, gehe ich davon aus, dass das System ein Nicht-Unicode-System (cl_abap_char_utilities=>charsize ist 1) ist.
Und das von irgendwoher ein UTF-8-String ins System gekommen ist.
Wo und wie kann ich (cl_abap_char_utilities=>charsize ist 1) überprüfen?
Wie kann ich schauen, welche SAP GUI Version ich verwende?

Wie bekomme ich den String von UTF8 in den benutzen Zeichensatz? Wie bekomme ich raus, was für ein Zeichensatz benutzt wird? Wie konvertiere ich den String in den akutellen Zeichensatz?

Gruss
DonOssi

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
donossi hat geschrieben:Hallo,

Nach weiteren Nachschauen, habe ich festgestellt, dass folgende Aussage wohl korrekt ist:
Das heißt, dass ein String verarbeitet werden soll, in dem statt Ä, Ö, Ü in der System-Codepage usw. eben offenbar die 2 Bytes für UTF-8-Darstellung vorkommen.
Da normale ASCII-Zeichen nicht betroffen sind, gehe ich davon aus, dass das System ein Nicht-Unicode-System (cl_abap_char_utilities=>charsize ist 1) ist.
Und das von irgendwoher ein UTF-8-String ins System gekommen ist.
Wo und wie kann ich (cl_abap_char_utilities=>charsize ist 1) überprüfen?

Code: Alles auswählen.

REPORT.WRITE cl_abap_char_utilities=>charsize.
Oder irgendwo unter System->Status steht auch, ob das System ein Unicode-System ist.
donossi hat geschrieben:Wie kann ich schauen, welche SAP GUI Version ich verwende?
Irgendwo rechts unter Hilfe...
donossi hat geschrieben:Wie bekomme ich den String von UTF8 in den benutzen Zeichensatz? Wie bekomme ich raus, was für ein Zeichensatz benutzt wird? Wie konvertiere ich den String in den akutellen Zeichensatz?
Wo kommen die Zeichen denn nun her?

Werden sie aus einer Datei gelesen, die mit OPEN DATASET ... FOR INPUT IN TEXT MODE geöffnet wurde?
Dann einfach noch den Zusatz ENCODING UTF-8 ergänzen (s. F1-Hilfe zu OPEN DATASET).

Oder ist das jetzt nicht mehr möglich, weil es die Datei nicht mehr gibt und die kaputten Strings jetzt schon in Tabellenfeldern in der Datenbank gespeichert sind?

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von donossi (ForumUser / 66 / 2 / 1 ) »
Hallo

Übergeben bekomme ich die Daten von einem externen Program und gelesen werden diese wie folgt:

Code: Alles auswählen.

  DATA: in1   TYPE REF TO cl_abap_conv_in_ce.

  in1 = cl_abap_conv_in_ce=>create(  input = iv_uv_xml
 ).
  in1->read( IMPORTING data = uv_xml ).
kann ich bei dem create (input=...) vorher noch ein encoding mitgeben? Wenn ja, wie sagen ich dem, dass es sich um UTF8 handelt?

Re: Wie Ö Ä bzw Ü in ABAP darstellen?

Beitrag von donossi (ForumUser / 66 / 2 / 1 ) »
Hallo

ich habe das Problem jetzt gelösst:

Code: Alles auswählen.

  DATA: in1   TYPE REF TO cl_abap_conv_in_ce.

  in1 = cl_abap_conv_in_ce=>create( encoding = 'UTF-8' input = iv_uv_xml
 ).
  in1->read( IMPORTING data = uv_xml ).
Hatte das gestern vor dem Post schon ausprobiert, aber leider hatte ich es an die falsche Stelle geschrieben, da der oberer Code mehrfach benutzt wird. Nun werden die Umlaute und ß korrekt angezeigt.

Vielen dank für eure Unterstützung.

gruss
DonOssi

Vergleichbare Themen

2
Antw.
2782
Views
PNG im CustomContainer darstellen
von peterpaulandmary » 10.06.2008 11:44 • Verfasst in Dialogprogrammierung
0
Antw.
1177
Views
Beteiligungsverhältnisse darstellen
von ralf.wenzel » 28.02.2013 14:44 • Verfasst in Sales and Distribution
5
Antw.
2624
Views
ALV im WD als disabled darstellen
von Thanatos82 » 16.11.2012 16:00 • Verfasst in ABAP® Core
3
Antw.
1582
Views
Sonderzeichen im ALV darstellen
von Kerstin » 09.10.2013 14:00 • Verfasst in ABAP® Core
6
Antw.
4739
Views
Farben mit RGB Werten darstellen
von abap_carsten29 » 06.03.2013 10:14 • Verfasst in ABAP® Core

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Trennen Strasse und Hausnummer
vor 15 Minuten von ralf.wenzel 16 / 10763
Dialog-Container mit Toolbar/Status
vor 22 Minuten von black_adept gelöst 25 / 3898
User Exit EXIT_RQCPRM10_001
vor 21 Stunden von a-dead-trousers 2 / 353
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1406

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

Trennen Strasse und Hausnummer
vor 15 Minuten von ralf.wenzel 16 / 10763
Dialog-Container mit Toolbar/Status
vor 22 Minuten von black_adept gelöst 25 / 3898
User Exit EXIT_RQCPRM10_001
vor 21 Stunden von a-dead-trousers 2 / 353
Daten an Tabelle binden
Gestern von Lukas Sanders 2 / 1406

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2935
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9529