字段符号FIELD-SYMBOLS
字段符号可以看作仅是已经被解引用的指针(类似于C语言中带有解引用操作符 * 的指针),但更像是C++中的引用类型(int i ;&ii= i;),即某个变量的别名,它与真正的指针还是有很大的区别的,在ABAP中引用变量(通过TYPE REF TO定义的变量)才好比C语言中的指针
ASSIGN … TO <fs>:将某个内存区域分配给字段符号,这样字段符号就代表了该内存区域,即该内存区域别名
1.ASSIGN隐式强转
TYPES: BEGIN OF t_date,
year(4) TYPE n,
month(2) TYPE n,
day(2) TYPE n,
END OF t_date.
FIELD–SYMBOLS <fs> TYPE t_date.“将<fs>定义成了具体限定类型
ASSIGN sy-datum TO <fs> CASTING. “后面没有指定具体类型,所以使用定义时的类型进行隐式转换
2.ASSIGN显示强转
DATA txt(8) TYPE c VALUE ‘19980606’.
FIELD-SYMBOLS <fs>.
ASSIGN txt TO <fs> CASTING TYPE d.“由于定义时未指定具体的类型,所以这里需要显示强转
3.ASSIGN 动态分配
4.UNASSIGN、CLEAR
UNASSIGN:该语句是初始化<FS>字段符号,执行后字段符号将不再引用内存区域,<fs> is assigned返回假
CLEAR:与UNASSIGN不同的是,只有一个作用就是初始化它所指向的内存区域,而不是解除分配
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/20120.html