1.字符串移位 语法: SHIFT <c> [BY <n> PLACES] [<modes>] <modes> : (1).空白, 字符串往左移一位 (2).LEFT, 字符串往左移 n 位 (3).RIGHT, 字符串往右移 n 位 (4).CIRCULAR: 字符串以环状方式移位 Example: DATA STRING(10) VALUE ‘ABCDEFGHIJ’. SHIFT STRING. “得到 BCDEFGHI’ SHIFT STRING BY 2 PLACES RIGHT. “得到 ABCDEFGH 2.取代字符串内容 语法: REPLACE <string1> WITH <string2> INTO <c> 将字符串 <c> 中的 <string1> 以 <string2> 来取代 Example: DATA: STRING(10) VALUE ‘ABCDEFGHI’, STR1(3) VALUE ‘DEF’, STR2(3) VALUE ‘123’. REPLACE STR1 WITH STR2 INTO STRING. WRITE / STRING. “得到 ABC123GHI 3.大小写的转换 语法: TRANSLATE <c> TO UPPER CASE. “转成大写 TRANSLATE <c> TO LOWER CASE. “转成小写 4.在字符串中寻找部分字符串 语法: SEARCH <c> FOR <str> Example: DATA STRING(10) VALUE ‘ABCDEFGHIJ’. 会回存至两个变量, SY-SUBRC 和 SY-FDPOS, 若找到则 SY-SUBRC 为 0 SY-FDPOS 存开始位叠, 若找不到则 SY-SUBRC为 4, SY-FDPOS为 0
需要说明的地方:注意模式的使用
5.字符串长度 STRLEN(<c>) Example: INT = STRLEN(‘XYZABC’). “得到 6 INT = STRLEN(‘ABC ’ ). “得到 3 6.取部分字符串 <f>[+<o>][<l>] Example: DATA T(10) VALUE ‘ABCDEFGHIJ’. WRITE / T+2(4). “得到 CDEF |
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