ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ABAP 字符串查找函数search

2022-07-19 16:35:05  阅读:332  来源: 互联网

标签:sy string subrc search WRITE ABAP 查找 UNDER fdpos


  • 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:33

     search语法: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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有