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