替換欄位內容
REPLACE [FIRST /ALL OCCURRENCES OF]<STR1>INTO <STR> WITH <STR2>
DATA STR TYPE C LENGTH 50 VALUE ' HOW ARE YOU HOW'.
DATA STR1 TYPE C LENGTH 3 VALUE 'HOW'.
DATA STR2 TYPE C LENGTH 4 VALUE 'SDFH'.
REPLACE FIRST OCCURRENCE OF STR1 IN STR WITH 'SDFH'.
REPLACE FIRST OCCURRENCE OF STR1 IN STR WITH STR2.
REPLACE FIRST OCCURRENCE OF 'HOW' IN STR WITH STR2.
替換字串STR 中第一次出現STR1 的地方.
OF 後面跟被替換的內容,可以是變數和常數,
WITH 後面跟要替換的內容,可以是變數和常數。
DATA STR TYPE C LENGTH 50 VALUE ' HOW ARE YOU HOW'.
REPLACE ALL OCCURRENCES OF STR1 IN STR WITH STR2.
替換字串STR 中所有出現STR1 的地方.
REPLACE STR1 IN STR WITH STR2 .
預設只替換第一次出現的地方.
REPLACE <STR1> WITH <STR2> INTO <STR> [LENGTH <1>]
只能替換字串STR 中第一次出現STR1 的地方.
DATA STR TYPE C LENGTH 50 VALUE ' HOW ARE YOU HOW'.
DATA STR1 TYPE C LENGTH 3 VALUE 'HOW'.
DATA STR2 TYPE C LENGTH 4 VALUE 'SDFH'.
REPLACE STR1 WITH STR2 INTO STR LENGTH '2'.
LENGTH '2' 表示被替換的字元長度。
REPLACE STR1 WITH STR2 INTO STR.
沒有LENGTH 預設全部替換
注意
FIRST /ALL OCCURRENCES OF 不能與 LENGTH 同時用,兩種文法間的區別。
轉換大/小寫
將字串轉換成大寫
DATA STR3 TYPE C LENGTH 50 VALUE ' qaewrwetW'.
TRANSLATE STR3 TO UPPER CASE.
將字串轉換成小寫
DATA STR TYPE C LENGTH 50 VALUE ' HOW ARE YOU HOW'.
TRANSLATE STR TO LOWER CASE.
尋找字串
若要查看結果,將尋找結果放入尋找結果表中.
ABAP 中有專門的存放尋找結果的表類型MATCH_RESULT_TAB.
DATA STR TYPE C LENGTH 50 VALUE ' HOW ARE YOU HOW'.
DATA STR1 TYPE C LENGTH 3 VALUE 'HOW'.
DATA RESLT TYPE MATCH_RESULT_TAB.
FIND FIRST OCCURRENCE OF STR1 IN STR RESULTS RESLT.
找出字串STR 中第一次出現字串 STR1 的地方。
尋找結果是行數(第0行),起始位元(第4位),長度(3位)
起始位元19,長度3
起始位元4,長度3
找出字串STR 中所有出現字串 STR1 的地方。
DATA STR TYPE C LENGTH 50 VALUE ' HOW ARE YOU HOW'.
DATA STR1 TYPE C LENGTH 3 VALUE 'HOW'.
FIND ALL OCCURRENCES OF STR1 IN STR RESULTS RESLT.
獲得字串長度.
STRLEN(<c>) :<c>資料類型只能是C,N,D,T
DATA STR TYPE C LENGTH 50 VALUE ' HOW ARE YOU HOW'.
DATA INT1 TYPE I.
INT1 = STRLEN( STR ).
擷取字串STR的長度,結果放入變數INT1 中.
INT1 = STRLEN( 'STR' ).
注意:括弧內兩邊要有空格,括弧內可以是常量,也可以是變數.
D,T資料類型的長度是固定的,為8位和6位,而C,N 型根據實際情況.
壓縮欄位內容
單個單詞時
DATA STR4 TYPE C LENGTH 10 VALUE ' HOW '.
CONDENSE STR4.
去掉單詞兩邊得空格。
有多個單詞時,單詞之間用空格隔開,其餘空格全部去掉。
DATA STR TYPE C LENGTH 50 VALUE ' HOW ARE YOU HOW'.
CONDENSE STR .
DATA STR TYPE C LENGTH 50 VALUE ' HOW ARE YOU HOW'.
CONDENSE STR NO-GAPS.
NO-GAPS作用,去除所有的空格。
在定義時,如果指定了字串長度,WRITE輸出時,輸出長度等於定義長度
DATA STR TYPE C LENGTH 50 VALUE ' HOW ARE YOU HOW'.
CONDENSE STR .
WRITE :str,'!'.
50位
DATA STR TYPE STRING VALUE ' HOW ARE YOU HOW'.
CONDENSE STR .
WRITE :str,'!'.
注意:CONDENSE 後面的變數只能是C,N,D,T類型的。
DATA INT1(15) TYPE N VALUE '21 02 3'.
CONDENSE INT1
對於N型資料,CONDENSE去掉空格後,會在前面補充前置0.
DATA INT1 TYPE D VALUE '21 2 3'.
CONDENSE INT1 .
DATA INT1 TYPE T VALUE '22 3 '.
CONDENSE INT1 .
連接字串
CONCATENATE <c1> ... <cn> INTO<c> [SEPARATED BY <s>].
DATA STR1 TYPE STRING VALUE ' AB01 ' .
DATA STR2 TYPE STRING VALUE ' CD02 '.
DATA STR TYPE STRING .
CONCATENATE STR1 STR2 INTO STR .
被去掉了
DATA STR1 TYPE STRING VALUE ' AB01 ' .
DATA STR2 TYPE STRING VALUE ' CD02 '.
5位空格
DATA STR1 TYPE STRING VALUE ' AB01 ' .
DATA STR2 TYPE STRING VALUE 'CD02 '.
通過對比,拼接時會自動去掉拼接對象後面的空格,而前面的空格保留。
SEPARATED BY 拼接時用什麼隔開。
CONCATENATE STR1 STR2 INTO STR SEPARATED BY ',' .
TAB鍵隔開.
CONCATENATE STR1 STR2 INTO STR
SEPARATED BY CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB .
TAB 鍵在這裡無法顯示,以#號鍵表示
日期拼接
DATA INT1 TYPE D VALUE '20110218' .
DATA INT2 TYPE D VALUE '20110219'.
DATA STR TYPE STRING .
CONCATENATE INT1 INT2 INTO STR.
時間拼接
DATA INT1 TYPE T VALUE '123226' .
DATA INT2 TYPE T VALUE '112336'.
DATA STR TYPE STRING .
CONCATENATE INT1 INT2 INTO STR.
數字文本拼接
DATA INT1(6) TYPE N VALUE '123226' .
DATA INT2(6) TYPE N VALUE '112336'.
DATA STR(12) TYPE N .
CONCATENATE INT1 INT2 INTO STR.
注意:C,N,D,T類型的資料可拼接,I,F,P,X類型的資料 不能拼接。
D,T型拼接時,因為都是定長度,如果用DT類型接收,只能取到第一條資料,失去拼接的意義,所以接收類型定為STRING或N型。
4位空格
拼接時,若要保留字元串後面的空格,使用位移量方法。
1位空格
5位空格
DATA STR1 TYPE STRING VALUE ' AB01 ' .
DATA STR2 TYPE STRING VALUE ' CD02 '.
DATA STR3 TYPE STRING VALUE ' EF03 '.
DATA STR TYPE C LENGTH 16.
STR+0(9) = STR1.
STR+9(5) = STR2.
使用位移量時注意:(1)括弧前面的數字位開始位,括弧裡面的數字為長度。
(2)接收的變數需要指定長度,不能用STRING類型.
拆分字串
SPLIT <c> AT <del> INTO <c1> ...<cn>.
DATA STR1 TYPE STRING .
DATA STR2 TYPE STRING .
DATA STR3 TYPE STRING .
DATA STR TYPE STRING VALUE 'OK,GOOD,NICE'.
SPLIT STR AT',' INTO STR1 STR2 STR3.
DATA STR4 TYPE C VALUE ','.
SPLIT STR AT STR4 INTO STR1 STR2 STR3.
將字串STR 按‘,’拆分,放入變數STR1 STR2 STR3 中.
按字母拆分時,需要識別大小寫
注意以上各部分的變化,先將字串做TAB 拼接,因TAB 鍵在這裡無法顯示,以’#’號表示,但這裡的‘#’號不代表#號鍵,所以在用按’#’號拆分時無法成功。這裡的’#’代表的是TAB鍵,只能用TAB 拆分.