The concatenate statement has formed an essential part of the ABAP developers role for many years allowing them to connect/join/concatenate data strings together within one variable i.e.
ld_concatnew = |Value 1= { p_value1 },| && | Value 2= { p_value2 }.|. vs CONCATENATE 'Value 1=' p_value1 into ld_concatorig SEPARATED BY space. CONCATENATE ld_concatorig ',' into ld_concatorig. CONCATENATE ld_concatorig 'Value 2=' p_value2 into ld_concatorig SEPARATED BY space. CONCATENATE ld_concatorig '.' into ld_concatorig.
Issues with the new modern method
Although the modern syntax can simplify some of the more complex concatenate requirements there are a few drawbacks. The first being that it is a new syntax to learn.
But more problematic could be that it does not use the return code system field sy-subrc. For example if the result of the concatenate does not
fit into the target variable the CONTACENATE statement will return value 4 in the sy-subrc field but using the new method sy-subrc will remain 0.
i.e. data: ld_length10(10) type c, ld_length15(15) type c, ld_length5(5) type c, ld_length5_new(5) type c. ld_length5_new = |{ ld_length10 }| && |{ ld_length15 }|. *Return code will equal 0 even though ld_length5 is too short CONCATENATE ld_length10 ld_length15 into ld_length5 SEPARATED BY space. *Return code will equal 4 as ld_length5 is too short
Full code listing
You can also paste this full ABAP code listing into your SAP system and execute/debug it to get a more visual demonstration
of the new modern concatenate technique and all the topics discussed above.
*&---------------------------------------------------------------------* *& Report Modern syntax for Concatenation statements *& *&---------------------------------------------------------------------* *& SAP ABAP Concatenate statement including demonstration of new *& modern syntax *& By SAP Development *&---------------------------------------------------------------------* REPORT ZCONCATENATE_STATEMENT. data: ld_concatnew type String, ld_concatorig type String, ld_concatdiff type String. data: ld_length10(10) type c, ld_length15(15) type c, ld_length5(5) type c, ld_length5_new(5) type c. PARAMETERS: p_value1 type string default '22', p_value2 type string default '33'. *New way of Concatenating data with SAP ABAP ld_concatnew = |Value 1= { p_value1 },| && | Value 2= { p_value2 }.|. *Original way of Concatenating data with SAP ABAP CONCATENATE 'Value 1=' p_value1 into ld_concatorig SEPARATED BY space. CONCATENATE ld_concatorig ',' into ld_concatorig. CONCATENATE ld_concatorig 'Value 2=' p_value2 into ld_concatorig SEPARATED BY space. CONCATENATE ld_concatorig '.' into ld_concatorig. * Just to hightlight what would happen if i didnt break the concatenate statement up * into multiple concatenate statements this shows how the spacings would be different CONCATENATE 'Value 1=' p_value1 ',' 'Value 2=' p_value2 '.' into ld_concatdiff SEPARATED BY space. write:/ ld_concatnew, '-New method'. "new write:/ ld_concatorig, '-Orig method'. "orig/old write:/ ld_concatdiff, '-New method difference'. "highlight differences skip 2. "inserts 2 blank lines *Return code test * Just to demonstrate a few advantages of the CONCATENATE method in that it implements * return code feedback when issue exist, i.e. when the concatenated objects will * not fit into the result variable * * As you can see from the below example the reult is the same but you do not know that * an issue has occured ld_length10 = '1111111111'. ld_length15 = '222222222222222'. write:/ 'Return Code Results'. write:/ '-------------------'. skip. ld_length5_new = |{ ld_length10 }| && |{ ld_length15 }|. if sy-subrc ne 0. write:/ 'Error data will not fit(new method)'. write:/ 'Result:', ld_length5_new. else. write:/ 'No error returned(new method)'. write:/ 'Result:', ld_length5_new. endif. skip. "skips 1 line CONCATENATE ld_length10 ld_length15 into ld_length5 SEPARATED BY space. if sy-subrc ne 0. write:/ 'Error data will not fit'. write:/ 'Result:', ld_length5. else. write:/ 'No error'. write:/ 'Result:', ld_length5. endif.
Also see ABAP Concatenate statement for details of full syntax options.