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类型: 主要是用于计数器,数量,索引,偏移量等等 例如: *取得内表行数 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) 二.具体使用: 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中 经常使用场合:文件下载,对文件中的字段编辑。 ABAP基础篇