Eduardo Copat
Eduardo Copat

Reputation: 5151

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

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.

Upvotes: 15

Views: 75777

Answers (5)

sid
sid

Reputation: 1

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
          .

Upvotes: -3

Eduardo Copat
Eduardo Copat

Reputation: 5151

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 }|.

Upvotes: 16

oldwired
oldwired

Reputation: 547

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

Upvotes: 34

Oguz
Oguz

Reputation: 1926

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.

Upvotes: 2

vwegert
vwegert

Reputation: 18483

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.

Upvotes: 6

Related Questions