1 赋值
有许多
ABAP/4
语句可以用来给字段赋值,两个最为重要的是
MOVE
与
COMPUTE
语句,关键字
COMPUTE
是可选的,如果字段的类型与长度不匹配所赋的值,那么系统就会自动执行类型转换。另外,可以使用
ADD
、
SUBSTRACT
、
MULTIPLY
与
DIVIDE
语句进行简单的算术计算。类型转换的规则是这样的,如果类型
C
的字段值赋给类型
P
的字段,那么类型
C
的字段值仅允许+
/
-以及小数点。如果类型
P
的字段值赋给类型
C
的字段,那么就要格式化该数字值并且先导的零被转换为空格,当然如果你不要这种格式化的类型,那么你可以使用
UNPACK
语句;
2 算术表达式
一般来说关键字
COMPUTE
是可选的,且不限制括号内表达式的嵌套层次,运算符与括号被认为是单词,因此,你必须把它们用空格隔开;然而,对于函数来说,其括号中间必须跟有字段名,如
a=(B+EXP(C)*E/SIN(3-G)
是错误的算术表达式,而
a=( B + EXP( C) * E / SIN( 3 - G )
才是正确的算术表达式。在算术运算之前非数字值需要转换成数字值,运算符
DIV
与
MOD
是整数除法函数,
STRLEN
函数是返回字符串的长度。一般算术表达式只能使用于
COMPUTE
语句中。
3
系统字段
ABAP/4
提供了一系列系统字段,编辑器命令
SHOW SY
允许你显示所有这些字段名及其定义的列表清单。你可以在程序中通过使用
SY-<
字段名
>
来引用系统字段;另外,你可以通过规定偏移量与长度来存取字段中的特定部分。注意,只有一些语句
(
如
ASSIGN
,
WRITE...TO
语句等
)
支持偏移量与长度以存取字段的特定部分。
4
计算日期
如果类型
D
的字段值赋给类型
P
的字段,那么
ABAP/4
就计算类型
P
字段的值为自
1900
年以来的天数。相反,如果类型
P
的字段值赋给类型
D
字段,那么
ABAP/4
就计算类型
D
的字段值为自
1900
年以来的年份。
5
PARAMETERS
语句
PARAMETERS
语句主要用来声明内部字段,与用
DATA
语句声明的字段相反,你可以在调用
Report
时在选择屏幕上为这些字段指定值,
DATA
语句的某些参数也可以使用
PARAMETERS
语句
(
如
TYPE
、
LIKE
、
DECIMALS
等
)
。尽管
DATA
允许你把初始值赋给带有
VALUE
的字段,
PARAMETERS
语句也允许你使用
DEFAULT
参数来设置缺省值。
6
字段符号
字段符号是一个非常重要的概念,相当于
C
语言中的指针。你可以使用
FIELD-SYMBOLS
语句来声明字段符号,在运行时,你可以使用
ASSIGN
语句来把某一个字段赋给字段符号,字段符号可以引用通过使用
TABLES
语句来声明的字段、字段串以及结构。在这里,尖括号是语法的一部分,通过这种方法,你可以清楚地区分字段符号与
ABAP/4
中的普通字段。
从中不难看出,字段符号就是起到了指针的作用。一般来说你不可以使用偏移量与长度来存取字段的特定部分,然而,在
ASSIGN
语句中,你可以使用它们,当然你也可以在
WRITE...TO
语句与实际参数
(PERFORM)
中使用可变的偏移量与长度。
7
字段的动态分配
使用
ASSIGN
语句,你也可以把一个仅在运行时才能知道的字段赋给字段符号,如果所要分配的字段是
R/3
对象库中的字段
(
用
TABLES
语句声明
)
,那么你可以使用
TABLE FIELD
参数。这将会减少执行语句的所要化费的时间,因为系统不会查找整个内部表清单。另外,你可以通过检查系统字段
SY-SUBRC
的值来确认是否有一字段分配给了字段符号。如果括号内有一字段,则
SY-SUBRC=0
,反之,则为大于
0
的值。一般来说,动态
ASSIGN
语句需要化费更多的时间,因此,仅在某些需要的情况下使用。