Concatenate

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV

Concatenate

Postby Jolina2219 » Thu Mar 06, 2003 11:08 am

Hallo,

ich habe eine kleine Frage zu concatenate.

Ich möchte gerne mehrere zeichenartige Variableninhalte verketten mit concatenate. Im großen und ganzen sind die einzelnen Teile durch Punkte getrennt. Nur in der Mitte soll ein Leerzeichen stehen. Das scheint aber mit concatenate nicht zu funktionieren, oder?

Beispiel:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. concatenate var1 '.' var2 '.' var3 ' ' var4 '.' var5 '.' var6 into lv_compfield.
  2.  
GeSHi ©

In lv_compfield ist alles wie gewünscht enthalten, nur nicht das Leerzeichen. Irgendwelche Vorschläge? Danke.

Jens2
Jolina2219
.
.
 
Posts: 8
Joined: Thu Jan 09, 2003 1:00 pm

Postby Ilja583 » Thu Mar 06, 2003 12:10 pm

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. concatenate 'X' '.' 'Y' '.' 'Z' '~' 'a' '.' 'b' '.' 'c' into test.
  2. translate test using '~ '.
  3.  
GeSHi ©
Ilja583
.....
.....
 
Posts: 1372
Joined: Wed Jan 08, 2003 3:00 pm

Postby Jolina2219 » Thu Mar 06, 2003 12:26 pm

Hi Stefan,

vielen Dank, klappt prima :D
Ich hatte so etwas ähnliches ausprobiert mit 'replace':

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. concatenate 'X' '.' 'Y' '.' 'Z' '@' 'a' '.' 'b' '.' 'c' into test.
  2. replace '@' in test with ' '.
  3.  
GeSHi ©


Damit hat es aber nicht geklappt, da replace die Eigenschaft hat, dass zwar '@' durch das Leerzeichen ersetzt wird, das Leerzeichen aber gleichzeitig enfernt wird.
Jedenfalls nochmals danke!

Jens2
Jolina2219
.
.
 
Posts: 8
Joined: Thu Jan 09, 2003 1:00 pm

Postby Willy1492 » Thu Mar 06, 2003 12:54 pm

Sobald Du nicht Literale, sondern Variablen benutzt, weißt Du nicht, ob eine der Variablen '~' oder '@' enthält.
Dann ersetzt Du mit REPLACE unter Umständen das falsche Zeichen.
In dem Fall hilft nur der Zusatz SEPARATED BY ... zur CONCATENATE-Anweisung.
Hier werden Leerzeichen am Ende in das Zielfeld übernommen.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CONCATENATE 'X1    ' 'X2' 'X3   ' X4' INTO text SEPARATED BY space.
GeSHi ©

füllt text also mit
'X1 X2 X3 X4'.
Willy1492
....
....
 
Posts: 581
Joined: Tue Dec 03, 2002 4:44 pm

Postby Jolina2219 » Thu Mar 06, 2003 6:25 pm

Hallo Frank,

erstma vielen Dank für den Hinweis. Im Endeffekt bedeutet das aber, dass ich - wenn ich ein space nur an einer bestimmten Stelle haben möchte - mit dieser Lösung dann auf mehrere concatenates aufteilen muss.

Um bei Deinem Beispiel zu bleiben:
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CONCATENATE 'X1    ' 'X2' into text 1.
  2. CONCATENATE 'X3   ' X4' INTO text2.
  3. CONCATENATE text1 text 2into text3 SEPARATED BY space.
  4.  
GeSHi ©

Dann hätte ich
X1X2 X3X4

Dann wäre die obige Lösung mit translate kürzer. Wahrscheinlich auch von der Laufzeit her, oder? Oder ist ein translate teuer?

Jens2
Jolina2219
.
.
 
Posts: 8
Joined: Thu Jan 09, 2003 1:00 pm

Postby Jessy5246 » Thu Mar 06, 2003 10:59 pm

Dear Jens2:
Try SEPARATED BY '.' for the first two concatenates. SPACE is a variable, not a keyword. And run-time should not be a major concern here.

Regards,
Wolfgang
Jessy5246
..
..
 
Posts: 23
Joined: Tue Dec 03, 2002 8:20 pm

Postby Quinn1225 » Wed Aug 13, 2003 12:28 pm

Abhilfe können hier die sog. String-Literale schaffen (die es allerdings erst ab Basis-RTelease 6.10 gibt). Sie werden durch Backqutes eingeklammert.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CONCATENATE va1 ` ` va2 INTO s.
  2.  
GeSHi ©

Bei String-Literale sind im Gegensatz zu gewöhnlichen Charakter-Literalen schliessende leerzeichen immer signifikant.
Quinn1225
..
..
 
Posts: 30
Joined: Thu Jan 02, 2003 4:16 pm


Return to ABAP® Core

Who is online

Users browsing this forum: No registered users and 14 guests

cron