Есть ли другой способ конкатенации вместо использования ключевого слова 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.

Ответ 1

Вы можете (начиная с 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

Ответ 2

Да, вы можете использовать строковые шаблоны, которые были представлены в ABAP 7.02.

Пример следующий:

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

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

  foobar = |{ foo } and { bar }|.

Ответ 3

Помимо выражений String, упомянутых Эдуардо Копатом, иногда разумно использовать оператор MESSAGE ... INTO ..., особенно если текст должен быть переведен. В некоторых переводах позиции переменных относительно друг друга должны быть заменены, и, как правило, намного легче перевести текст You cannont combine &1 with &2., чем отдельные части You cannot combine и with.

Ответ 4

Вы можете использовать && или | {} {} | нотации.

Вам не нужно вводить и между объектами, если вы дадите пробел, он будет восприниматься как пробел или любой другой.

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

и т.п.

Ответ 5

DATA: v_line TYPE string.


CONCATENATE 'LINE1' 'LINE2' 'using cl_abap_char_utilities=>NEWLINE' INTO v_line SEPARATED BY cl_abap_char_utilities=>NEWLINE.

CALL FUNCTION 'LXE_COMMON_POPUP_STRING'
  EXPORTING
    text          = v_line
          .

CLEAR: v_line.

CONCATENATE 'LINE3' 'LINE4'  'cl_abap_char_utilities=>HORIZONTAL_TAB' INTO v_line SEPARATED BY cl_abap_char_utilities=>HORIZONTAL_TAB.

CALL FUNCTION 'LXE_COMMON_POPUP_STRING'
  EXPORTING
    text          = v_line
          .

CLEAR: v_line.

CONCATENATE 'LINE5' 'LINE6'  'cl_abap_char_utilities=>VERTICAL_TAB' INTO v_line SEPARATED BY cl_abap_char_utilities=>VERTICAL_TAB.

CALL FUNCTION 'LXE_COMMON_POPUP_STRING'
  EXPORTING
    text          = v_line
          .


CLEAR: v_line.

CONCATENATE 'LINE7' 'LINE8'  'cl_abap_char_utilities=>CR_LF' INTO v_line SEPARATED BY cl_abap_char_utilities=>CR_LF.

CALL FUNCTION 'LXE_COMMON_POPUP_STRING'
  EXPORTING
    text          = v_line
          .