ABAP 字符串查找函数search
作者:互联网
-
abap 字符串查找字段位置
2022-01-26 16:44:35
在程序查找字符串、Message、表名等字符信息均可以通过标准程序进行查找,应用场景查找增强内容、没有定义消息编号的消息等。
更多相关内容
1.RPR_ABAP_SOURCE_SCAN
2.RS_ABAP_SOURCE_SCAN -
ABAP 字符串查找函数search
千次阅读2020-05-30 11:18:33search语法:SEARCH <c> FOR <str> <options>.在字段<c>中搜索<str>中的字符串,如果成功,则将SY-SUBRC的返回代码值设置为0并将SY-FDPOS设置为字段<c>中该字符串的偏移量,否则将SY-SUBRC设置为4。
搜索串 <str> 可为下列格 式之一:
<str> 目的
<pattern> 搜索<pattern>(任何字符顺序。忽略尾部空格。
.<pattern>. 搜索<pattern>,但是不忽略尾部空格。
*<pattern> 搜索以<pattern>结尾的词。
<pattern>* 搜索以<pattern>开始的词。<options>可以为以下值:
ABBREVIATED 在字段 <c> 中搜索包含 <str> 中指定字符串的单词,其中字符可能被其它字符隔开。单词和字符串的第一个字母必须相同 。
STARTING AT <n1> 在字段 <c> 中搜索从 <n1> 开始的 <str> 。结果 SY-FDPOS 参照相对于 <n1> 的偏移量而不是字段的开始。
ENDING AT <n2> 在字段 <c> 搜索 <str> 直到位置 <n2>。
AND MARK 如果找到搜索串,则将搜索串中的所有字符(和使用 ABBREVIATED 时的所有字 符)转换为大写形式。
以下为示例语句:
REPORT z_string_search.
DATA string(30) TYPE c VALUE 'this is a testing sentence.'.
WRITE :/ 'searched' , 'SY-subrc','sy-fdpos'.
SEARCH string FOR 'X'.
WRITE :/ 'X', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR 'itt'.
WRITE :/ 'itt', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '.e .'.
WRITE :/ '.e .', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '.e.'.
WRITE :/ '.e.', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '*e'.
WRITE :/ '*e', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '*e '.
WRITE :/ '*e ', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '*e.'.
WRITE :/ '*e.', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR 's*'.
WRITE :/ 's*', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR 's* '.
WRITE :/ 's* ', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR 't*s'.
WRITE :/ 't*s', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR ' '.
WRITE :/ ' ', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '. .'.
WRITE :/ '. .', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
DATA sss TYPE c VALUE 'g'.
SEARCH string FOR sss.
WRITE :/ sss , sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '*sss'.
WRITE :/'*sss', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '%s'.
WRITE :/'%s', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '*g'.
WRITE :/ '*g', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
DATA srr(10) TYPE c .
CONCATENATE '*' 'g' INTO srr.
SEARCH string FOR srr.
WRITE :/ srr, sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '*g' STARTING AT 3.
WRITE :/ 'st--*g', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '*g' ENDING AT 3.
WRITE :/ 'en--*g', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR '*g' AND MARK.
WRITE :/ 'mk--*g', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
WRITE :/ string.
SEARCH string FOR '*g'ABBREVIATED.
WRITE :/ 'ab--*g', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR 'te*g'ABBREVIATED.
WRITE :/ 'ab--te*g', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR 'te*'ABBREVIATED.
WRITE :/ 'ab--te*', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR 'te'ABBREVIATED.
WRITE :/ 'ab--te', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR 'is'ABBREVIATED.
WRITE :/ 'ab--is', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR 'this'ABBREVIATED.
WRITE :/ 'ab--this', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR 'ing'ABBREVIATED.
WRITE :/ 'ab--ing', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR 'ing'.
WRITE :/ 'ing', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
SEARCH string FOR ' ing'.
WRITE :/ ' ing', sy-subrc UNDER 'sy-subrc',
sy-fdpos UNDER 'sy-fdpos'.
*需要注意的是* 和. 共用可能无法出现想要的结果,还有就是使用变量作为查找依据的时候,需要先使用concatenate先将字符串拼起来
*查询的时候大小写不区分
*查询结果是从0开始输出的
*通配符只能用在开始或者结尾,不能使用在字符串中间
*默认后空格是无效的,存在与否不影响查询的结果;但是前空格是有效的,会直接影响查询的结果;..的添加会限制空格
*如果只需要查询空格需要使用. .
标签:sy,string,subrc,search,WRITE,ABAP,查找,UNDER,fdpos 来源: https://www.cnblogs.com/yushuiguodong/p/16494558.html