ABAP Keyword Documentation → ABAP − Reference → Processing Internal Data → Character String and Byte String Processing → Expressions and Functions for String Processing → String Functions → Processing Functions for Character-Like Arguments
segment - Segment Function
Other versions: 7.31 | 7.40 | 7.54
Syntax
... segment( val = text index = idx [sep|space = delim] ) ...
Effect
This function returns the occurrence of a segment of the argument text
specified
by index
. A segment
is defined by delimiters. The beginning and ending of the string in text
are the outer delimiters. Inner delimiters delim
can be passed to sep
or space
as follows:
- If the argument
sep
is provided, the substring specified indelim
is searched for (case-sensitive as intext
) and used as a delimiter. If a substring specified indelim
occurs directly one after another intext
, an empty segment is created and an empty string is returned for this segment.
- If the argument
space
is provided, each individual character is searched for indelim
(case-sensitive) and this is used as a delimiter. If the individual characters specified indelim
occur directly one after another intext
, no empty segment is created and no result is returned.
The delimiters are not part of the segments. If sep
or space
are not specified, the argument sep
is filled implicitly a single blank. In both cases, specifying an empty string raises an exception of the class CX_SY_STRG_PAR_VAL.
If index
is positive, the occurrences are counted from the left; if
index is negative, the instance are counted from the right. The values 1, 2, .... indicate the
first, second, ... occurrences. The values -1, -2, .... indicate the last, last but one, ... occurrences.
If the value of index
is 0, or the specified segment does not exist, an exception of the class CX_SY_STRG_PAR_VAL is raised.
delim
is a character-like expression position and index
is a
numeric expression
position with type i
. If delim
has a fixed length, trailing blanks are ignored.
The return code has the type string
.
Note
If the substring specified in delim
is not found, the entire character string
forms a single segment. This segment can only be addressed by using the values 1 or -1 for index
.
Example
The following function calls produce "AB", "CD", "EF", "GH", respectively, and raise an exception at the end.
DATA result TYPE string.
DO.
TRY.
result = segment( val = 'AB\brCD\brEF\brGH'
index = sy-index
sep = `\br` ).
...
CATCH cx_sy_strg_par_val.
EXIT.
ENDTRY.
ENDDO.
DO.
TRY.
result = segment( val = 'AB CD - EF_GH'
index = sy-index
space = ` -_` ).
...
CATCH cx_sy_strg_par_val.
EXIT.
ENDTRY.
ENDDO.
Executable Example
String Functions, cmax
, cmin
, and segment
Exceptions
Handleable Exceptions
CX_SY_STRG_PAR_VAL
-
Cause: Delimiter in
sep
is empty or the occurrence inindex
is 0 or was not found.
Runtime error:STRG_ILLEGAL_PAR