SPLIT
Short Reference
ABAP Syntax SPLIT dobj AT sep INTO
{ {result1 result2 ...} | {TABLE result_tab} }
[IN {CHARACTER|BYTE} MODE].
ABAP_ADDITION:
... IN {CHARACTER|BYTE} MODE
What does it do? The content of the operand dobj is separated into
segments in accordance with the sequence of separators in sep .
The results are either stored in individual target fields
result1
result2 ... or in the rows of an internal table result_tab .
The following can be specified for the target fields result1 result2
... :
Existing character-like or byte-like variables.
Inline declarations with DATA(var) . If
IN CHARACTER MODE is used, the declared variables are of the type
string ; if IN BYTE MODE is used, they are of the type
xstring .
The following can be specified for the internal table result_tab :
An existing internal table with character-like or byte-like row type. It
must be a standard table without
secondary table keys . The table
is initialized before being split.
An inline declaration with DATA(var) . A
standard table is declared with the table table row as the primary table
key (and without secondary table keys). If IN CHARACTER MODE is
used, the row type is of the type string ; if IN BYTE MODE
is used, it is of the type xstring .
At least two target fields result1 result2 ... must be
specified. dobj and sep are
character-like expression
positions .
The system searches the operand dobj from left to right for all
occurrences of the content of the operand sep . The search is
case-sensitive. All segments from the start of the operand to the first
occurrence, between the occurrences, and from the last occurrence to the
end of the operand are assigned one by one to the individual target
fields result1 result2 ... , or appended to the internal table
result_tab .
If the target fields result1 result2 ... or the rows of the
internal table result_tab have a fixed length and this length is
not enough for the segment, the segment is truncated on the right and
sy-subrc is set to 4. If the length is greater than the length of
the segment, it is padded with blanks or hexadecimal 0 on the right. If
the target fields result1 result2 ... or the rows of the internal
table result_tab are strings, their length is adjusted to match
the length of the associated segment.
If there are not enough target fields result1 result2 ... to
include all the segments, dobj is only split until all the target
fields result1 result2 ... have been assigned values, except for
the last target field. The remaining content of dobj is assigned
to the final operand, without being split.
If more target fields result1 result2 ... are specified than
required, the surplus target fields with fixed lengths contain blanks or
hexadecimal 0 after the assignment. Any surplus strings are initial.
If the content of the operand sep is found immediately at the
start of dobj , or occurs in direct succession in dobj , the
result of the separation is an empty string. If the content of sep
is at the end of dobj , the search is terminated and no
further separation takes place to the right of this point.
If the content of the operand sep is not found or is an empty
string, the result of the split is a single segment that contains the
whole content of dobj , and which is assigned to the first
individual target field or the first row of the internal table.
In character string processing, the trailing blanks are respected for
separators sep of fixed length, but not in the operand dobj
or in the segments produced by the separation.
System Fields
sy-subrc Meaning
0The segments were passed to the target fields or the internal table
without being truncated.
4At least one of the segments was truncated on the right when being
passed to the target fields or internal table.
Latest notes: If enough target fields are specified or the segments have
been saved to an internal table, the number of segments created is
defined by the number of separators found, as follows:
If the last occurrence is not at the end of the operand, the number of
segments matches the number of occurrences plus 1.
If the last occurrence is at the end of the operand, the number of
segments matches the number of occurrences.
All single fields result1 result2 ... specified are given
values. If these fields have the type n , d , or t in
string processing, the type-friendly assignment rules and initial values
are not relevant.
To access the segments of a character string directly in an operand
position, a segment function can be used
that includes some of the functions of the statement SPLIT .
ABAP_ADDITION ... IN {CHARACTER|BYTE} MODE
What does it do? The optional IN {CHARACTER|BYTE} MODE addition
determines whether character
string or byte string processing is carried out. If the addition is
not specified, character string processing is carried out. Depending on
the type of processing, the operands dobj , sep , and the
target fields result1 result2 ... or the rows of the internal
table result_tab must be byte-like or character-like.
Example ABAP Coding The text field text is separated at its blanks,
firstly into the three strings str1 , str2 , and str3
and then into an internal table with the row type string . Since
the three strings are not enough for all seven parts, str3
contains "drag it is getting old" after the separation, while the
internal table contains seven rows; one for each word in text .
DATA text TYPE string.
text = `What a drag it is getting old`.
SPLIT text AT space INTO: DATA(str1) DATA(str2) DATA(str3),
TABLE DATA(itab).
Documentation extract taken from SAP system, � Copyright SAP AG. All rights reserved