一.
字段符号(FIELD SYMBOLS)不是直接对变量赋值,而是通过指针给变量分配源字段的内存地址。指针对象通过语名FIELD-SYMBOLS加上尖括号“<>”来定义,用语句ASSIGN来分配数值。
FOR EXAMPLE:
DATA:number TYPE I VALUE 12.
FIELD-SYMBOLS:<f1>,
<f2> TYPE I,
<f3> LIKE number.
ASSIGN:number TO <f1>,
number TO <f2>,
number TO <f3>.
WRITE: / 'f1 is',<f1>,
/ 'f2 is',<f2>,
/ 'f3 is',<f3>.
<f1> = 36. "重新赋值
WRITE: / 'f1 is',<f1>,
/ 'f2 is',<f2>,
/ 'f3 is',<f3>.
“输出:f1 is 12
f2 is 12
f3 is 12
f1 is 32
f2 is 32
f3 is 32
上例中,将number的地址同时分配给了<f1>、<f2>、<f3>三个指针,的怪三个指针对应的值都为12,当通过运算符”=“重新给<f1>赋值时,实际是修改了其对应地址number的值,所以三个指针对应的值都变成了32。
二.
ABAP中结构的继承功能,通过参照某个已存在的结构体来创建一个属性相同的新结构体,并且可以在新建的结构体中按实际需求增加字段。定义结构体继承的具体语句为:INCLUDE STRUCTURE。参照上文中的UISERINFO结构来新建继承新的结构。
DATA:BEGIN OF STAFFINFO. <此处是.操作符>
INCLUDE STRUCTURE USERINFO.
DATA:BIRTHDAY TYPE D,
ADDRESS(50) TYPE C,
END OF STAFFINFO.
这样就完成了继承关系。
STAFFINFO-SID = 'SKY001'.
STAFFINFO-NAME = 'SKY'.
STAFFINFO-TEL = '010XXX'.
STAFFINFO-BIRTHDAY = '2012-03-11'.
STAFFINFO-ADDRESS = 'BEIJING'.
WRITE:STAFFINFO-SID,STAFFINFO-NAME,STAFFINFO-TEL,STAFFINFO-BIRTHDAY,STAFFINFO-ADDRESS.
*输出结果:SKY001 SKY 010XXX 2012-03-11 BEIJING.
与变量的定义类似,结构体的初始化通过语句CLEAR来实现.
总结:
用DATA关键字定义的结构可以实现继承关系,而TYPES关键字定义的结构则不可以实现,在实际的编码过程中还是按具体要求做取舍。