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.

Index
© SAP AG 1996