sap abap 對字符串的操作


替換字段內容


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 拆分.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM