[基础语法] SEARCH搜索指定字符串详解
2017-11-29 09:34
260 查看
今天遇到一个问题:读取服务器目录返回文件夹信息,如果文件夹不存在就创建,下面是返回的信息 |
文件夹是以日期、日期的前六位命名的,此例中如果我们直接search 201503,虽然成功,但我们不能判断是不是20150315文件夹,查阅资料用SY-FDPOS解决问题。
解决思路:先获取201503字符串的位置,然后偏移量l_fdpos = sy-fdpos + 6 ; 判断gt_res-line+l_fdpos(2)是否为空来判断是不是201503文件夹。
以下是补充扩展内容:
1、SEARCH f FRO g :g表示被搜索的字符串。
ABBREVIATED 从指定字符串中按顺序搜索相匹配字符串。
STARTING AT n1 从字符串n1个字符开始搜索。
ENDING AT n2 搜索到字符串第n2个字符止。
AND MARK 从指定字符串是模糊搜索相匹配字符串。
2、SEARCH itab FOR g:g表示被搜索字符串。
ABBREVIATED 从内表中按顺序逐行搜索相匹配字符串。
STARTING AT line1 从内表中具体某行开始搜索匹配字符串。
ENDING AT line2 搜索最大范围到内表中具体某行。
AND MARK 从内表中模糊搜索相匹配字符串。
通过系统变量SY-SUBRC可以回执字符串查找的结果,若回执等于"0",则表示查找成功。某段字符在字符串中的具体位置保存在系统变量SY-FDPOS中。
实例:
DATA search_str(50).
MOVE 'Welcome to SAP world!' TO search_str.
SEARCH search_str FOR 'wld' ABBREVIATED.
WRITE: / 'SY-SUBRC=',sy-subrc,
/ 'SY-FDPOS=',sy-fdpos. "执行结果:wld按顺序包含在子字符串'world'中,SY-SUBRC=0,SY-FDPOS=15
SEARCH search_str FOR 'SAP' STARTING AT 10.
WRITE: / '从第十位开始:',
/ 'SY-SUBRC=',sy-subrc,
/ 'SY-FDPOS=',sy-fdpos. "执行结果:从第10位开始查找,SY-SUBRC=0,SY-FDPOS=2
SEARCH search_str FOR 'SAP' ENDING AT 10.
WRITE: / '查找第十位结束:',
/ 'SY-SUBRC=',sy-subrc,
/ 'SY-FDPOS=',sy-fdpos. "执行结果:查找到第10位结束,SY-SUBRC=4,SY-FDPOS=0
SEARCH search_str FOR '*AP' AND MARK.
WRITE: / '查找包含AP的子字符串,SAP符合条件,默认为查找SAP:',
/ 'SY-SUBRC=',sy-subrc,
/ 'SY-FDPOS=',sy-fdpos. "查找包含'AP'子字符串,'SAP'符合条件,默认为查找'SAP',SY-SUBRC=0,SY-FDPOS=11
SEARCH search_str FOR '*A' AND MARK.
WRITE: / '匹配字符串必须是子字符串以空格分开的最后几位:',
/ 'SY-SUBRC=',sy-subrc,
/ 'SY-FDPOS=',sy-fdpos. "匹配字符串必须是子字符串以空格分开的最后几位,SY-SUBRC=4,SY-FDPOS=0
对于一些特殊符号,如"*"、"@"、"."等,需要在其两边加上顿号作为修饰。如某字符串为"AAA*BBB",查找符号"*"的位置。
DATA search_str2(50).
MOVE 'AAA*BBB' TO search_str2.
SEARCH search_str2 FOR '.*.' ABBREVIATED.
WRITE: / 'SY-SUBRC=',sy-subrc,
/ 'SY-FDPOS=',sy-fdpos.
从内表中查找字符串方法与上面基本类似,若内表有多行,那么字符串查找位置默认为从某行数据第一位开始。
DATA:BEGIN OF t_inf OCCURS 0,
line(80),
END OF t_inf.
*定义类型后,添加两行数据
APPEND 'HELLO SAP ' TO t_inf.
APPEND 'I am come from china' TO t_inf.
SEARCH t_inf FOR 'SAP' ABBREVIATED.
WRITE: / 'SY-SUBRC=',sy-subrc,
/ 'SY-FDPOS=',sy-fdpos. "从内表第一行中可查找到,SY-SUBRC=0,SY-FDPOS=6
SEARCH t_inf FOR 'am' ABBREVIATED.
WRITE: / 'SY-SUBRC=',sy-subrc, "从内表第二行中可查找到,SY-SUBRC=0,SY-FDPOS=2
/ 'SY-FDPOS=',sy-fdpos.
相关文章推荐
- ABAP SEARCH 搜索指定字符串
- python的字符串、集合、for循环、异常等基础语法
- JAVA基础 - 删除字符串中指定字符串的方法
- Swift基础语法--字符串
- 黑马程序员——OC基础@property语法详解
- 正则表达式搜索“不包含指定字符串“
- Java语法基础之循环结构语句详解
- Swift语法基础入门二(数组, 字典, 字符串)
- 优雅的JavaScript-基础语法详解
- OC基础day5-点语法、property、编译器指令、id万能指针、类与类的判断、判断对象是否响应指定的方法、判断类中是否有这个方法、参数方法与响应、构造方法、synthesize
- yes命令_Linux yes 命令用法详解:重复打印指定字符串
- 二分查找/二分搜索(binary_search)详解
- MOSS Search学习记录(四):利用规则搜索指定文件夹的内容
- Java_语法基础_获取指定年份二月的天数
- ABAP SEARCH 搜索指定字符串
- [置顶] android开发之java的一些基础知识详解,java编程语法,扎实自己的android基本功
- search花絮之文本字符串搜索结果的排序
- 详解Linux系统中字符串搜索命令ngrep的用法
- 搜索当前数据库中含有指定字符串的表列
- 指定关键词,在一段文本中搜索并在关键词前后进行插入自定义字符串