//--线条 //3-----点击文字特效---
  • 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开始输出的
    *通配符只能用在开始或者结尾,不能使用在字符串中间
    *默认后空格是无效的,存在与否不影响查询的结果;但是前空格是有效的,会直接影响查询的结果;..的添加会限制空格
    *如果只需要查询空格需要使用. .
     

posted on 2022-07-19 16:24  雨水果冻  阅读(404)  评论(0编辑  收藏  举报