Splitting Strings in SAP ABAP

In SAP ABAP, you can split a string into multiple parts using different methods depending on delimiter type, use case, and ABAP version.


1. Using SPLIT Statement (Basic Splitting)

The SPLIT statement is used to split a string based on a given delimiter into an internal table.

DATA: lv_string TYPE string VALUE 'ABAP,SAP,HANA',
lt_parts TYPE TABLE OF string.
SPLIT lv_string AT ',' INTO TABLE lt_parts.
LOOP AT lt_parts INTO DATA(lv_part).
WRITE: / lv_part.
ENDLOOP.

Output:

ABAP
SAP
HANA

2. Using SPLIT Into Individual Variables

If you want to split into specific variables instead of an internal table:

DATA: lv_string TYPE string VALUE 'ABAP-SAP-HANA',
lv_part1 TYPE string,
lv_part2 TYPE string,
lv_part3 TYPE string.
SPLIT lv_string AT '-' INTO lv_part1 lv_part2 lv_part3.
WRITE: lv_part1, lv_part2, lv_part3. " Output: ABAP SAP HANA

3. Handling Extra Delimiters (Avoiding Empty Entries)

If the string contains consecutive delimiters, empty entries will be created.

DATA: lv_string TYPE string VALUE 'ABAP,,SAP,HANA',
lt_parts TYPE TABLE OF string.
SPLIT lv_string AT ',' INTO TABLE lt_parts.
LOOP AT lt_parts INTO DATA(lv_part).
WRITE: / lv_part.
ENDLOOP.

Output:

ABAP
SAP
HANA
DELETE lt_parts WHERE table_line IS INITIAL.

4. Splitting String Based on Spaces

You can split a string at spaces (default behavior):

DATA: lv_string TYPE string VALUE 'ABAP SAP HANA',
lt_parts TYPE TABLE OF string.
SPLIT lv_string AT space INTO TABLE lt_parts.
LOOP AT lt_parts INTO DATA(lv_part).
WRITE: / lv_part.
ENDLOOP.

5. Using CONVERT STRING TO TABLE (ABAP 7.40+)

If working with structured text (like JSON, XML), convert it into an internal table.

DATA: lv_string TYPE string VALUE 'ABAP|SAP|HANA',
lt_parts TYPE TABLE OF string.
CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
EXPORTING
text = lv_string
delim = '|'
TABLES
text_tab = lt_parts.
LOOP AT lt_parts INTO DATA(lv_part).
WRITE: / lv_part.
ENDLOOP.

6. Splitting Using Regular Expressions (REGEX) (ABAP 7.40+)

For more complex cases, such as splitting on multiple delimiters, use regex.

DATA: lv_string TYPE string VALUE 'ABAP, SAP | HANA',
lt_parts TYPE TABLE OF string.
SPLIT lv_string AT REGEX '[,| ]+' INTO TABLE lt_parts.
LOOP AT lt_parts INTO DATA(lv_part).
WRITE: / lv_part.
ENDLOOP.

Explanation:


7. Extracting a Fixed Number of Words

If you want to extract only the first N words from a sentence:

DATA: lv_string TYPE string VALUE 'SAP ABAP HANA S4',
lv_first TYPE string,
lv_second TYPE string.
SPLIT lv_string AT space INTO lv_first lv_second.
WRITE: lv_first, lv_second. " Output: SAP ABAP

Best Practices for Splitting Strings

MethodBest ForABAP Version
SPLIT ... INTO TABLEStore split values in an internal tableAll Versions
SPLIT ... INTO var1 var2 var3Store parts in separate variablesAll Versions
DELETE lt_table WHERE table_line IS INITIAL.Remove empty entriesAll Versions
REGEXSplit using multiple delimitersABAP 7.40+
CALL FUNCTION 'SCMS_STRING_TO_FTEXT'Convert structured data like XML/JSONAll Versions

🚀 Conclusion