abap 字符串处理
生活随笔
收集整理的這篇文章主要介紹了
abap 字符串处理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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中
???????????? 常用場合:文件下載,對文件中的字段編輯。
?????? 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 字符串处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 成本要素类别
- 下一篇: SAP软件项目实施要点