Is there another way to concatenate instead of using the CONCATENATE keyword?

空扰寡人 提交于 2021-02-06 15:21:56

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!