SEARCH is a keyword used in SAP ABAP programming.This tutorial covers its introduction & syntax details.
SEARCH
Variants
1. SEARCH f FOR g.
2. SEARCH itab FOR g.
Variant 1
SEARCH f FOR g.
Additions
1. … ABBREVIATED
2. … STARTING AT n1
3. … ENDING AT n2
4. … AND MARK
Effect
Searches the field f for the string in the field g . This string can have any of the following formats:
‘str’
a character string (trailing blanks are ignored) ‘.str.’ any character
string between the periods ‘*str’ a word ending with “str”, including
the word “str” ‘str*’ a word beginning with “str”, including the word
“str”
You can use the following characters as delimiters:
‘ ‘, ‘,’, ‘;’, ‘:’, ‘.’, ‘!’, ‘?’, ‘(‘, ‘)’, ‘+’, ‘/’ and ‘=’.
The return code value is set as follows:
SY-SUBRC
= 0 The search string g was found in the field f . SY-FDPOS contains
the offset of the found string or the found word within the field.
SY_SUBRC = 4 The search string g was not found in the field f .
Addition 1
… ABBREVIATED
Effect
Searches
the field f for a word containing the character string specified in the
field. Here, the characters specified in g may be separated by other
characters in a word. If the string g occurs in a word, the return code
in system field SY-SUBRC is set to 0. The first letter of the search
string g and the word must match.
Example
DATA F(50).
MOVE ‘Alaska Texas California’ TO F.
SEARCH F FOR ‘Clfrn’ ABBREVIATED.
Here,
SY-SUBRC is set to 0, since not only does the string ‘Clfrn’ occur
(separated by other characters) in ‘California’ , but ‘Clfrn’ and
‘California’ begin with the same letter.
Addition 2
… STARTING AT n1
Effect
Searches
the field f starting from the position n1 . Here, a field can be
anything containing the corresponding value. The first character in the
field f is in position 1.
When you use the addition STARTING AT ,
the position specified for the found pattern in SY-FDPOS does not refer
to the start of the field, but to the position n1 .
Addition 3
… ENDING AT n2
Effect
Searches the field f up to the position n2 .
Addition 4
… AND MARK
Effect
If
the search string g is found, all the characters of the search string
and all the characters occurring in between (in the case of SEARCH
ABBREVIATED ) are converted to upper case in the field f .
Example
DATA F(20) VALUE ‘Peter Paul Mary’.
SEARCH F FOR ‘*UL’ AND MARK.
SY-SUBRC
is now set to 0, since the search string was found in ‘Paul’ . SY-FDPOS
has the value 6, since the character string found starts at the offset
6. Also, the search string is marked, so that the new contents of f are
as follows:
‘Peter PAUL Mary’
Variant 2
SEARCH itab FOR g.
Additions
1. … ABBREVIATED
2. … STARTING AT lin1
3. … ENDING AT lin2
4. … AND MARK
Effect
Searches
the internal table itab for the string in field g . The string can have
the same format as in variant 1. The value of SY-SUBRC is set to 0, if
the search string in the field or table is found. The system field
SY-TABIX then contains the number of the table line where the string
was found. Meanwhile, SY-FDPOS specifies the offset of the found string
within the table line.
Note
The statement does not search the header line of an internal table itab .
Addition 1
… ABBREVIATED
Effect
As
with SEARCH ABBREVIATED , searches the internal table itab for a word
that contains the character string specified in the field g . Here, the
characters specified in g can be separated by other characters. The
return code value of the system field SY-SUBRC is set to 0, if the
string g occurs in a word. The first letter of the search string g and
the word must match.
Addition 2
… STARTING AT lin1
Effect
Searches the internal table itab starting from line lin1 to the end. lin1 can be a field that contains the corresponding values.
Addition 3
… ENDING AT lin2
Effect
Searches the internal table itab up to the line lin2 .
Addition 4
… AND MARK
Effect
If
the search string g is found, all the characters of that search string
and all the characters occurring in between (in the case of SEARCH
ABBREVIATED ) are converted to upper case in the internal table itab .
Example
Let T be an internal table which is empty:
DATA: BEGIN OF T OCCURS 100,
LINE(80),
END OF T.
MOVE ‘Alaska Texas ‘ TO T.
APPEND T.
MOVE ‘California Arizona ‘ TO T.
APPEND T.
SEARCH T FOR ‘*ONA’ AND MARK.
SY-SUBRC
is now set to 0 because the search string was found in ‘Arizona’ .
SY-TABIX contains the value 2 because ‘Arizona’ appears in the second
line of the table T. SY-FDPOS is set to 11 because the found character
string begins at the offset 11. Also, the search string was marked in
the second line in such a way that the contents of that line now look
as follows:
‘California ARIZONA’
Related REPLACE , OVERLAY , SHIFT , SPLIT , TRANSLATE
Note
Performance
Searching
for the string ‘*str’ in an internal table is much more
runtime-intensive (approx. 500000 msn (standardized microseconds)) than
searching for ‘str*’ (approx. 10000 msn) or ‘str’ (approx. 35 msn). The
latter involves searching a table with 230 entries and 15 fields.
If
you perform a search in a field which is 35 bytes long for ‘*str’ or
‘str*’, the runtime consumption is approx. 600 msn, whereas searching
for ‘str’ takes about 25 msn.