1. 程式人生 > >SAP:ABAP基礎篇--字串擷取

SAP: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型別:
       主要是用於計數器,數量,索引,偏移量等等
       例如:愛ERP網     

www.LoveErp.com
         *取得內錶行數
         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)
   二.具體使用:愛ERP網     
www.LoveErp.com

     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'.