为何要用FIELD-SYMBOL?

标签:ABAP

近日又重归ABAPer的老本行了,于是读起了项目里的模板程序,发现老外很喜欢用FIELD-SYMBOL。

对此我感到有些不解,因为FIELD-SYMBOL在书写、创建和使用时都没有静态类型的变量方便,阅读起来也更难懂,难道用它只是为了耍酷么?

为此我去问了下同事,答案是性能更好。原来在loop一个内表时,获取其中的一行通常是需要复制这行数据到工作区的,而FIELD-SYMBOL由于是指针,可以直接指向这行数据,也就避免了多余的复制操作。

由此看来,只对工作区或较大的字段使用FIELD-SYMBOL是比较合理的,但我看到项目里连内表都使用FIELD-SYMBOL,这显然不是性能原因了。

之后才想起是为了通用性,而采用了这种方法。因为在定义FIELD-SYMBOL时,类型基本上都是ANY、STANDARD TABLE或ANY TABLE之类的,这就使得它可以作为动态类型。尽管不同的程序使用的结构不一样,但定义并不需要更改,只要赋不同的值即可。这种技术同样还能用于遍历一个结构的所有字段。

而其代价就是牺牲了安全性,编译器不能静态检查这些动态类型。

0条评论 你不来一发么↓

    想说点什么呢?