问题
Is there another way to concatenate in ABAP instead of using the CONCATENATE keyword?
An example using 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:
You can (starting with ABAP 7.02) use && to concatenate two strings.
Data:
foo TYPE string,
bar TYPE string,
foobar TYPE string.
foo = 'foo'.
bar = 'bar'.
foobar = foo && bar.
This also works with character literals:
foobar = 'foo' && 'bar'.
For preserving spaces, use this kind of character literal named "text string literal" which is defined with two grave accents (U+0060):
foobar = foo && ` and ` && bar
回答2:
Yes, you can use String Templates, which were introduced in ABAP 7.02.
An example following:
DATA:
foo TYPE string,
bar TYPE string,
foobar TYPE string.
foo = 'foo'.
bar = 'bar'.
foobar = |{ foo } and { bar }|.
回答3:
Besides the String Expressions mentioned by Eduardo Copat, it is sometimes sensible to use the MESSAGE ... INTO ...
statement - especially if the text is supposed to be translated. In some translations, the positions of variables relative to each other have to be swapped, and it is generally much easier to translate the text You cannont combine &1 with &2.
than the separate parts You cannot combine
and with
.
回答4:
You can use && or |{}{}| notations.
You don't need to type and between the objects, if you give space it will take it as space or any other.
"no space:
foobar = |{ foo }{ bar }|.
"1 space:
foobar = |{ foo } { bar }|.
etc.
回答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
.
来源:https://stackoverflow.com/questions/18860281/is-there-another-way-to-concatenate-instead-of-using-the-concatenate-keyword