[基础语法] SEARCH搜索指定字符串详解
生活随笔
收集整理的這篇文章主要介紹了
[基础语法] SEARCH搜索指定字符串详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
| 今天遇到一個問題:讀取服務器目錄返回文件夾信息,如果文件夾不存在就創建,下面是返回的信息 |
文件夾是以日期、日期的前六位命名的,此例中如果我們直接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=15SEARCH search_str FOR 'SAP' STARTING AT 10. WRITE: / '從第十位開始:',/ 'SY-SUBRC=',sy-subrc,/ 'SY-FDPOS=',sy-fdpos. "執行結果:從第10位開始查找,SY-SUBRC=0,SY-FDPOS=2SEARCH search_str FOR 'SAP' ENDING AT 10. WRITE: / '查找第十位結束:',/ 'SY-SUBRC=',sy-subrc,/ 'SY-FDPOS=',sy-fdpos. "執行結果:查找到第10位結束,SY-SUBRC=4,SY-FDPOS=0SEARCH 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=11SEARCH 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=6SEARCH t_inf FOR 'am' ABBREVIATED. WRITE: / 'SY-SUBRC=',sy-subrc, "從內表第二行中可查找到,SY-SUBRC=0,SY-FDPOS=2/ 'SY-FDPOS=',sy-fdpos.
總結
以上是生活随笔為你收集整理的[基础语法] SEARCH搜索指定字符串详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FBL3N增加表字段
- 下一篇: 【视图】ABAP Views