ABAP基礎篇--字符串截取

1. 數字類型(numeric types)(1).類型   Abap支持三種數字類型:     I:整型       範圍:-2147483648 to 2147483647     P:16位       範圍:取決於小數位的長度       注意事項:爲了確保計算正確,必須在程序屬性中把fixed point arithmetic選中,參考圖1。     F:浮點類型       範圍:+/- 2.2250738585072014E-308 to 1.7976931348623157E+308       注意事項:由於長度的關係,因此儘可能不要用兩個該類型的數據相等做爲判斷條件(2).定義方法     [f1] type I.     [f1] type P decimals [num].     [f1] type F.(3).使用     I類型:       主要是用於計數器,數量,索引,偏移量等等       例如:         *取得內錶行數         DATA: V_COUNTER TYPE I.         V_COUNTER = LINES( I_TAB ).         *根據索引讀取內表中的數據         DATA: V_INDEX TYPE I.         READ TABLE I_TAB INDEX V_INDEX.         *截取字符串         DATA: V_OFFSET_START TYPE I,               V_OFFSET_LENGTH   TYPE I,               V_C(10) TYPE C,                 L_C(3)   TYPE C.         V_C = ‘ABCDEFGHIJ’.         V_OFFSET_START = 3.         V_OFFSET_LENGTH   = 5         L_C = V_C+V_OFFSET_START(V_OFFSET_LENGTH).         RESULT:           L_C = ‘DEFGH’.     P類型:       主要和數據庫中的QUAN類型關聯;       經常使用場合:大小,長度,重量,貨幣等有單位的場合       *根據單位把數量寫入字符型變量中       WRITE:[數量] to [字符型變量] unit [單位].     F類型:       經常使用場合:計算字符類型:   一.包括:         C:字符         N:應該算是字符型的數字         D:日期類型,標準長度8(YYYYMMDD),注意其初期值的判斷,不是space,而是'00000000',判斷語句能夠使用is initial or not。         T:時間類型,標準長度6(HHMMSS)   二.具體使用:     1.對字符串的操做       1).SHIFT:截斷字符串         SHIFT {c} [BY {n} PLACES] [{mode}].:             做用:去掉字符串的前n個位置的字符,若是n未指定,默認爲1,若是指定的n小於等於0,則字符串不變。若是n超出字符串的長度,則字符串變空,因此在作此操做的時候要注意n的指定。能夠首先得到該字符串的長度,方法:len=STRLEN(C)。                 Mode:指定字符串截斷的方向。                   LEFT:從左邊截斷                   RIGHT:從右邊截斷                   CIRCULAR:把左邊的字符放到右邊。           SHIFT {c} UP TO {str} {mode}.:             做用:把字符串中在str之前的字符都去掉,一樣能夠指定mode,原理同上。           SHIFT {c} LEFT DELETING LEADING {str}.           SHIFT {c} RIGHT DELETING TRAILING {str}.:             做用:這兩個語句就是把字符串c中前的(LEFT)或者後的(RIGHT)的字符str都去掉。           以上語句經常使用的場合:             A.去掉字符串中的前導字符。例如:若是alv中定一了一個字段是10位的字符,裏面放的是so,po等number,而你不想顯示前面的0,那麼就能夠這樣作:SHIFT {c} LEFT DELETING LEADING 0.             B.已知某個字符串中包含固定的字符,想把這個固定字符前面的字符刪掉,那麼能夠使用:SHIFT {c} UP TO {str}。例如:某個物料,經過加強mga00002和mga00003對其加了前綴,這個前綴部分是在某固定值表中取得的數據,在具體顯示中,要把其前綴去掉。如TE-MRP-MAT1中想把te去掉,mrp表示該物料是跑mrp的,需求要求把te-去掉,mrp能夠在固定值表中取得,則能夠使用SHIFT {c} UP TO 'MRP'.       2).REPLACE:替換字符串         REPLACE {str1} WITH {str2} INTO {c} [LENGTH {l}].:             做用:把字符串c中的str1替換成str2,若是指定l,就是指定了替換的長度。若是替換成功,則SY-SUBRC設置成0。             經常使用場合:                 字符串的替換操做比較經常使用,須要注意的是l的指定長度。       3). TRANSLATE:轉換字符串           TRANSLATE {c} TO UPPER CASE.           TRANSLATE {c} TO LOWER CASE.:             做用:字符串的大小寫的轉換           TRANSLATE {c} USING {r}. :             做用:根據規則r轉換字符串c           經常使用場合:             Sap系統通常都是使用大寫字母的,可是某些特定的字段倒是用小寫字母來標記的,在操做這些字段的時候就須要注意大小寫的轉換了。轉換規則卻是不太經常使用,到如今我尚未遇到過。       4). SEARCH:查找字符串           SEARCH {c} FOR {str} {options}.:             做用:在字符串c中查找str,若是找到了,SY-SUBRC爲0,SY-FDPOS爲找到字符串的具體位置。             須要說明的地方:注意模式的使用                 指定str:查找str,str中後面的空格忽略                 指定.str.:查找str,包含了str中尾部的空格                 指定*str:查找以str結尾的字符串                 指定str*:查找以str開頭的字符串               {options}的指定:                 主要用到的就是:STARTING AT {n1}指定開始位置                                 ENDING AT {n2}指定結束位置             經常使用場合:                 通常用來判斷某個字符串是否符合條件。也能夠結合其餘語句對字符串進行操做。       5).CONDENSE:去掉字符串中的空格           CONDENSE {c} [NO-GAPS].:             做用:去掉字符串中的前面和後面的空格,若是指定NO-GAPS,則去掉字符串中的全部空格。             經常使用場合:得到字符串的精確長度,用於判斷。       6).SPLIT:拆分字符串           SPLIT {c} AT {del} INTO {c1} ... {cn}.             做用:按照分割字符del把字符串c分割成c1…cn。           SPLIT {c} AT {del} INTO TABLE {itab}.               做用:按照分割字符del把c分割,而後放到內表中的相應字段           經常使用場合:               文件名的分割,根據完整的文件路徑加文件名把文件名分割出來。               難點:沒法肯定要分割多少次.               解決方法:兩兩分割,到最後的那個就是了。例如:str=c:\dir1\dir2\dir3\file                 Split str at '\' into str1 str2.                 Find str2 for '/'.                 Check sy-subrc = 0.                 Do.                   Find str2 for '/'.                   If sy-subrc = 0.                     Split str2 into str1 str2.                   Else.                     Exit.                   Endif.                 Enddo.               文件上傳的類型是字符串,把其分割後放到內表中。例如上面的問題:                 data: begin of itab occurs 0 ,                       col1(30) type c,                     end of itab.                 Split str at '\' into table itab.                 describe table itab lines line.                 Read table itab index line.                 Itab-col1就是file       7).CONCATENATE:鏈接字符串           CONCATENATE {c1} ... {cn} INTO {c} [SEPARATED BY {s}].             做用:把c1…cn用s分隔鏈接到c中             經常使用場合:文件下載,對文件中的字段編輯。 ABAP基礎篇
相關文章
相關標籤/搜索