Vergleich STRING <> CHAR Feld (Unicode-Problem?)

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

Vergleich STRING <> CHAR Feld (Unicode-Problem?)

Beitrag von ST22 (Specialist / 283 / 44 / 41 ) »
Hallo Zusammen,

habe ein Phänomen, was sich wahrscheinlich durch Unicode erklären lässt, verstehe aber nicht, warum das so ist.
Folgendes Progrämmchen zeigt die Problematik:

REPORT zj_string_char_comp.
DATA:
gv_string TYPE string,
gv_char(8),
gv_length TYPE i.

START-OF-SELECTION.
gv_char = '0123456'.
CONCATENATE gv_string gv_char INTO gv_string.
DESCRIBE FIELD gv_char LENGTH gv_length
IN CHARACTER MODE.

WHILE STRLEN( gv_string ) < gv_length.
CONCATENATE gv_string '#' INTO gv_string.
ENDWHILE.

TRANSLATE gv_string USING '# '.

* 1. Vergleich
IF gv_string = gv_char.
WRITE: / 'GV_STRING = GV_CHAR'.
ENDIF.
* 2. Vergleich
IF gv_string(gv_length) = gv_char.
WRITE: / 'GV_STRING(GV_LENGTH) = GV_CHAR'.
ENDIF.
* 3. Vergleich
IF gv_string(gv_length) cs gv_char.
WRITE: / 'GV_STRING(GV_LENGTH) CS GV_CHAR'.
ENDIF.


Meine Frage wäre, warum ziehen die Vergleiche 1 und 2 nicht? In der Doku zu Unicode steht zwar irgend etwas von Fragmentsicht usw., aber wenn ich doch mit Offset und so zugreife, sollte das doch klappen, oder?

Die Werte sind übrigens im Debugger (auch im HEX-Mode) identisch:

gv_string(gv_length) 3132333435362020
gv_char 3132333435362020

Gruß

ST22

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


Re: Vergleich STRING <> CHAR Feld (Unicode-Problem?)

Beitrag von ralf.wenzel (Top Expert / 4009 / 208 / 282 ) »
ST22 hat geschrieben:Meine Frage wäre, warum ziehen die Vergleiche 1 und 2 nicht? In der Doku zu Unicode steht zwar irgend etwas von Fragmentsicht usw., aber wenn ich doch mit Offset und so zugreife, sollte das doch klappen, oder?
Ich kann das Coding in Ermangelung eines Systems nicht ausprobieren, aber ich halte es eher für ein Leerzeichenproblem. Kann aber auch gnadenloser Quatsch sein, was ich mir gerade zusammenreime.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development -- 25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Hallo zusammen,

Ralf hat Recht. Mach mal folgendes:

data: l type i.

l = strlen( gv_string ).
write: / 'gv_string =', l, 'Zeichen lang'.

l = strlen( gv_char ).
write: / 'gv_char =', l, 'Zeichen lang'.

Damit wirst du festellen, das gv_sting 8 Zeichen hat unf gv_char nur 7. Somit geht dein direkter Vergliech nicht.

Lösung: condense gv_string no-gaps.

Gruß

Thomas

Seite 1 von 1

Vergleichbare Themen

3
Antw.
9779
Views
Type Conversion Char(4) to String
von der_neuling » 27.09.2018 11:23 • Verfasst in ABAP® für Anfänger
2
Antw.
7210
Views
LRAW in String bzw. CHAR konvertieren
von sapdepp » 03.08.2012 13:59 • Verfasst in ABAP® Core
0
Antw.
1698
Views
UNICODE-String nach EXECL-2003 (XP) via OLE
von fritz_herma » 05.03.2007 10:36 • Verfasst in ABAP® Core
2
Antw.
2638
Views
Langen String in Struktur schreiben (UniCode-verträglich)
von Nordlicht » 12.04.2019 09:41 • Verfasst in ABAP® für Anfänger
2
Antw.
3603
Views
Char Feld auf Integer
von Kusi » 20.02.2017 22:58 • 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

BAPI zur ABSO?
vor 3 Tagen von DeathAndPain 2 / 598
Materialstammerweiterung: Neuer Reiter
vor einer Woche von DeathAndPain gelöst 4 / 1243
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46905
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4824

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

BAPI zur ABSO?
vor 3 Tagen von DeathAndPain 2 / 598
Materialstammerweiterung: Neuer Reiter
vor einer Woche von DeathAndPain gelöst 4 / 1243
Ermittlung der Arbeitstage (Mosid)
vor einer Woche von Radinator 11 / 46905
LSMW-Problem
vor 3 Wochen von DeathAndPain gelöst 6 / 4824