sap abap 對字串的操作

來源:互聯網
上載者:User
替換欄位內容
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 拆分.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.