ABAP SHIFT用法


截取字符串

DATA : zchar(12)    TYPE c VALUE '00AABBCCDD00',
       zcharstu(2)  TYPE c VALUE 'DD',
       len          TYPE n LENGTH 2.
len = STRLEN( zchar ).                         "獲取字符串長度,如果LENGTH長度不夠,則從右邊開始取,有幾位取幾位

zchar = '00AABBCCDD00'.
SHIFT zchar.                                   "去掉左邊第一位


*語法 :   SHIFT {c} [BY {n} PLACES] [{mode}].
*c: 字符串
*n: 去掉字符串的前n個位置的字符,如果n未指定,默認為1,如果指定的n小於等於0,則字符串不變。如果n超出字符串的長度,則字符串變空
*Mode:指定字符串截斷的方向。 LEFT:從左邊截斷 RIGHT:從右邊截斷
zchar = '00AABBCCDD00'.
SHIFT zchar BY 3 PLACES RIGHT.                 "去掉右邊三位


*語法:SHIFT {c} UP TO {str} {mode}              把字符串中在str以前的字符都去掉,同樣可以指定mode
zchar = '00AABBCCDD00'.
SHIFT zchar UP TO zcharstu RIGHT.              "去掉指定字符串zcharstu右邊的字符    輸出00AABBCCDD
zchar = '00AABBCCDD00'.
SHIFT zchar UP TO zcharstu LEFT.               "去掉指定字符串zcharstu左邊的字符    輸出DD00
*這兩個語句就是把字符串c中前的(LEFT)或者后的(RIGHT)的字符str都去掉。   
zchar '00AABBCCDD00'.
SHIFT zchar LEFT DELETING LEADING   zcharstu.    "只能去掉最左邊的字符,如果zcharstu是中間或者右邊而不是最左邊則無法刪除
zchar '00AABBCCDD00'.
SHIFT zchar RIGHT DELETING TRAILING zcharstu.    "只能去掉最右邊的字符,如果zcharstu是中間或者左邊而不是最右邊則無法刪除
 
          

           

以上語句常用的場合:

             A.去掉字符串中的前導字符。例如:如果alv中定一了一個字段是10位的字符,里面放的是so,po等number,而你不想顯示前面的0,那么就可以這樣做:

                 SHIFT {c} LEFT DELETING LEADING 0.
             B.已知某個字符串中包含固定的字符,想把這個固定字符前面的字符刪掉,那么可以使用:

                 SHIFT {c} UP TO {str}。

拓展:

     也可以采用字符串+x(y)的方式 : x表示從x開始,y表示截取y個字符.

     例如: sy-datum+0(4)  輸出年份

 

       


免責聲明!

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



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