Има ли друг начин за конкатенация вместо използването на ключовата дума CONCATENATE?

Има ли друг начин за конкатенация в ABAP вместо използване на CONCATENATE ключова дума?

Пример за използване на CONCATENATE:

DATA:
  foo    TYPE string,
  bar    TYPE string,
  foobar TYPE string.

  foo = 'foo'.
  bar = 'bar'.

  CONCATENATE foo 'and' bar INTO foobar SEPARATED BY space.

person Eduardo Copat    schedule 17.09.2013    source източник


Отговори (5)


Можете (започвайки с ABAP 7.02) да използвате && за свързване на два низа.

Data:
foo    TYPE string,
bar    TYPE string,
foobar TYPE string.

foo = 'foo'.
bar = 'bar'.

foobar = foo && bar.

Това работи и с символни литерали:

foobar = 'foo' && 'bar'.

За запазване на интервали, използвайте този вид символен литерал, наречен „литерал на текстов низ“, който е дефиниран с два сериозни ударения (U+0060):

foobar = foo && ` and ` && bar
person omnibrain    schedule 18.09.2013
comment
Това също работи чудесно! Но не можете да свързвате с интервали с този оператор, опитайте това: foobar = foo && ' and ' && bar. - person Eduardo Copat; 18.09.2013
comment
Опитайте с foobar = foo && ` и ` && bar. С обърнат апостроф (не знам името на този символ. - person Nelson Miranda; 20.09.2013
comment
@nmiranda очевидно се нарича обратен цитат или сериозен цитат (наред с други неща. вижте тук computerhope .com/jargon/b/backquot.htm и се използва за указване на низови литерали. Нещото при низовете е, че интервалите в края не се пренебрегват, както е при конкатениране на знаци (или символни литерали - дефинирани с единични кавички) - person vlad-ardelean; 22.09.2013
comment
@nmiranda добавих вашия вариант към публикацията. - person omnibrain; 25.09.2013

Да, можете да използвате Шаблони за низове, които бяха въведени в ABAP 7.02.

Пример следния:

DATA:
  foo    TYPE string,
  bar    TYPE string,
  foobar TYPE string.

  foo = 'foo'.
  bar = 'bar'.

  foobar = |{ foo } and { bar }|.
person Eduardo Copat    schedule 17.09.2013

Освен String Expressions, споменати от Eduardo Copat, понякога е разумно да се използва операторът MESSAGE ... INTO ... - особено ако текстът трябва да бъде преведен. При някои преводи позициите на променливите една спрямо друга трябва да се разменят и като цяло е много по-лесно да се преведе текстът You cannont combine &1 with &2. отколкото отделните части You cannot combine и with.

person vwegert    schedule 18.09.2013
comment
Използването на message into също помага за намиране на съобщението с инструмента Where-used - person Eduardo Copat; 18.09.2013

Можете да използвате && или |{}{}| нотации.

Не е нужно да пишете и между обектите, ако дадете интервал, той ще го приеме за интервал или друг.

"no space:
foobar = |{ foo }{ bar }|.
"1 space:
foobar = |{ foo } { bar }|.

и т.н.

person Oguz    schedule 11.02.2019

person    schedule
comment
OP иска алтернативи за CONCATENATE - person barbsan; 03.06.2019