相关资料
站内热点

ABAP基本语法及数据类型

更新日期:2011-06-02  作者:陆大春  免费下载文件

ABAP基本语法及数据类型

ABAP基本语法及数据类型

Overview

业务说明

概念

Table

No. Table name Short Description Memo

Configure

Operation

结束标识符

使用半角的句号作为结束。

参数赋值

可以使用等于号(=)赋值,但是等于号前后必须为空格。

注释

单行注释

直接使用双斜杠就可以注释。例如

DATA: it_htm TYPE table of ty_htm . "用于记录每个文件。

多行注释

顶格使用*号就可以注释。

定义变量

定义结构

TYPES:

BEGIN OF ty_htm,

w_htm TYPE string, "htm代码

END OF ty_htm.

TYPES:

BEGIN OF ty_tcode_param,

w_TCODE TYPE c length 30, "事务码

w_TCDPARAM TYPE TSTCp-PARAM, "程序参数,直接参照表TSTCP中的字段

END OF ty_tcode_param.

定义内表变量

DATA:it_index_htm TYPE table of ty_htm.

定义存储区变量

只能存储一行记录

DATA:wa_index_htm TYPE ty_htm.

定义字符变量

data w_tcode type string.

w_TCODE TYPE c length 30

定义一个数值变量

data w_map_no(7) type N. “定义长度7位的数值型字符

DATA w_SWITCH TYPE I. ”定义一个整形数值型字符,仅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中

常用场合:文件下载,对文件中的字段编辑。

End

  




免费下载链接:      查看附件打开密码

TAG:
友荐云推荐