ABAP常用字符串操作收集整理

字符串首字符索引爲 0; Character Fields: C,N, D, T, string (CNDT=> CN Data Time)

1. 字符串連接 CONCATENATE dobj1 dobj2 ...  INTO result             [IN { BYTE | CHARACTER } MODE]             [SEPARATED BY sep].

2.字符串分隔, split 一個string的部分到一個內表或一系列的變量 SPLIT dobj AT sep INTO       { {result1 result2 ...} | {TABLE result_tab} }       [IN {BYTE|CHARACTER} MODE].

3. 字符串查找, 在一個字符串中查找模式串(FIND or SEARCH) FIND sub_string   IN SECTION [OFFSET off] [LENGTH len] OF dobj   --> 灰色部分用來縮小目的串被查找的範圍   [ IN { BYTE | CHARACTER } MODE ]   [ { RESPECTING | IGNORING } CASE ]   [ MATCH OFFSET moff ] [MATCH LENGTH mlen ].

FIND 'knows'     IN SECTION OFFSET 5 OF  'Everybody knows this is nowhere'     MATCH OFFSET moff   "  => moff = 10     MATCH LENGTH mlen. " => mlen= 5

在字符串dobj中查找pattern SEARCH dobj FOR pattern  [IN { BYTE | CHARACTER } MODE]        [STARTING AT p1] [ENDING AT p2]        [ABBREVIATED]        [AND MARK]. if sy-subrc = 0. then SY-FDPOS = 返回pattern在dobj中的位置 About pattern: 'pat'   - 忽略尾部空格 '.pat.' -不忽略尾部空格 '*pat' - 以pat結尾 'pat*' - 以pat開始 單詞是指: 用 空格 , ; : ? ! () / + =分隔的字串

4. 字符串替換 REPLACE SECTION [OFFSET off] [LENGTH len]         OF dobj WITH new         [IN { BYTE | CHARACTER } MODE].

REPLACE [{FIRST OCCURRENCE}|{ALL OCCURRENCES} OF]         [SUBSTRING] sub_string         IN [SECTION [OFFSET off] [LENGTH len] OF ] dobj WITH new         [IN {BYTE|CHARACTER} MODE]         [{RESPECTING|IGNORING} CASE]         [REPLACEMENT COUNT rcnt]         [REPLACEMENT OFFSET roff]         [REPLACEMENT LENGTH rlen]. eg: DATA: text1 TYPE string VALUE 'xababx'. REPLACE 'ab' IN text1 WITH 'xx'. --> xxxabx

5. 去前導0 (Remove leading zero) SHIFT dobj LEFT DELETING LEADING '0'. FM : CONVERSION_EXIT_ALPHA_OUTPUT

增前導0 (Add leading zero) DATA v_s(5). UNPACK '123' to v_s.  ==> v_s = '00123' FM: CONVERSION_EXIT_ALPHA_INPUT

SHIFT dobj      [{BY num PLACES} | {UP TO sub_string}]      [LEFT|RIGHT] [CIRCULAR] SHIFT dobj      {LEFT  DELETING LEADING} | {RIGHT DELETING TRAILING} pattern.      [IN {BYTE|CHARACTER} MODE].

6. 字符串的長度, 內表的行數  STRLEN( dobj) 字符串的長度  LINES( itab ) 內表的行數

7. 刪字符串中的空格: CONDENSE text [NO-GAPS].

8. 大小寫轉換,字符變換 TRANSLATE text {TO {UPPER|LOWER} CASE} | {USING pattern}. eg: text = `Barbcbdbarb`. TRANSLATE text USING 'ABBAabba'. =>'Abracadabra'

9. CONVERT CONVERT DATE dat [TIME tim [DAYLIGHT SAVING TIME dst]]         INTO TIME STAMP time_stamp TIME ZONE tz.

CONVERT TIME STAMP time_stamp TIME ZONE tz         INTO [DATE dat] [TIME tim]         [DAYLIGHT SAVING TIME dst].

CONVERT TEXT text INTO SORTABLE CODE hex.

10. OVERLAY text1 WITH text2 [ONLY pattern]. 如果不指定後面的ONLY pattern, text1中的空格會被text2中的對應字符替代 如果指定只有匹配的字符纔會被替代,注意大小寫敏感

11. 模式匹配 CO / CN contains only or not CA / NA contains any or not any CS / NS contain string or not CP / NP contains pattern or not

NOTE: a) . CO, NO, CA, NA比較時區分大小寫, 並且尾部空格也在比較的範圍之內 data: s1(10) value 'aabb'. if s1 co 'ab' ==> false if s1 co 'ab ' ==>true CS, NS, CP, NP不區分大小寫和尾部空格

b) .對於CP, NP *   = /s? + = /s # 換碼字符, 用於匹配 *, +這樣的字符       ##       #*       #+       #___   比較結尾空格       #[a-z] 在CP, NP中強制區分大小寫

c) . 比較結束後,如果結果爲真,sy-fdpos將給出s2在s1中的偏移量信息

12. 特殊字符 在字符串中加入回車換行或TAB字符,在其他語言可以使用$13$10這樣的ASCII碼進行插入.但在ABAP中要使用sap的類CL_ABAP_CHAR_UTILITIES. 裏面有字符常量:CR_LF,HORIZONTAL_TAB,NEWLINE等等.

13. 字符串位操作 DATA: v_s(10) value 'abcd'. v_s+0(1) = 'b'. v_s+2(*) = '12'. => v_s = 'bb12'. 

發佈了30 篇原創文章 · 獲贊 1 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章