ABAP中SHIFT用法


  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).SHIFT <c> [BY <n> PLACES] [<mode>].

           按照給定位置數移動字符串

        該語句將字段 <c> 移動 <n> 個位置。如果省略 BY <n> PLACES, 則將<n>解釋為一個位置。如果<n> 是 0 或負值,則<c>保持不變。如果<n>超過<c>長度,則<c>用空格填充 。<n> 可為變量。

 

           對不同(<mode>) 選項,可以按以下方式移動字段 <c>:a.LEFT:向左移動 <n> 位置,右邊用<n>個空格填充(默認設置 )。b.RIGHT:向右移動<n>位置,左邊用<n>個空格填充 。c.CIRCULAR:向左移動 <n> 位置,以便左邊 <n> 個字符出現在右邊。

          移動字段串到給定串

          SHIFT <c> UP TO <str> <mode>. ABAP/4 查找<c>字段內容直到找到字符串 <str> 並將字段<c> 移動到字段邊緣。 <mode> 選項與按給定位置數移動字段串中所述相同。<str> 可為變量。

如果 <c> 中找不到 <str>, 則將SY-SUBRC 設置為 4 並且不移動 <c>。否則,將 SY-SUBRC 設置為0。

          根據第一個或最后一個字符移動字段串 

        假設第一個或最后一個字符符合一定條件,則可用 SHIFT 語句將字段向左或向右移動。為此,請使用以下語法: SHIFT <c> LEFT  DELETING LEADING  <str>. SHIFT <c> RIGHT DELETING TRAILING <str>. 假設左邊的第一個字符或右邊的最后一個字符出現在 <str> 中,該語句將字段 <c> 向左或向右移動。字段右邊或左邊用空格填充。<str> 可為變量。

 


免責聲明!

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



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