是否有另一种方法可以在ABAP中连接而不是使用CONCATENATE
keyword?
使用CONCATENATE
的示例:
DATA:
foo TYPE string,
bar TYPE string,
foobar TYPE string.
foo = 'foo'.
bar = 'bar'.
CONCATENATE foo 'and' bar INTO foobar SEPARATED BY space.
答案 0 :(得分:24)
您可以(从ABAP 7.02开始)使用&&
来连接两个字符串。
Data:
foo TYPE string,
bar TYPE string,
foobar TYPE string.
foo = 'foo'.
bar = 'bar'.
foobar = foo && bar.
这也适用于character literals:
foobar = 'foo' && 'bar'.
为了保留空格,请使用这种名为“text string literal”的字符文字,它由两个grave accents(U + 0060)定义:
foobar = foo && ` and ` && bar
答案 1 :(得分:13)
是的,您可以使用String Templates中引入的ABAP 7.02。
以下示例:
DATA:
foo TYPE string,
bar TYPE string,
foobar TYPE string.
foo = 'foo'.
bar = 'bar'.
foobar = |{ foo } and { bar }|.
答案 2 :(得分:6)
除了Eduardo Copat提到的字符串表达式之外,使用MESSAGE ... INTO ...
语句有时也是明智的 - 特别是如果文本应该被翻译的话。在某些翻译中,必须交换变量相对于彼此的位置,并且翻译文本You cannont combine &1 with &2.
通常比单独的部分You cannot combine
和with
更容易。
答案 3 :(得分:0)
您可以使用&&或| {} {} |符号。
您无需在对象之间输入和,如果您提供空格,它将被当作空格或其他任何内容。
"no space:
foobar = |{ foo }{ bar }|.
"1 space:
foobar = |{ foo } { bar }|.
等
答案 4 :(得分:0)
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
.