Field Symbol与数据引用的几个应用

这俩货都是指针。在动态编程里用。

但是从好理解的角度来看,都给他们理解成数据对象。

都得指向其他的数据对象。不过field symbol指的是其他的数据对象内存地址的值。而数据引用只是指向内存地址

1.Field symbol

当Field Symbol指向了其他的数据对象,那我们访问或者更改field symbol的值,就是等于更改了它指向的数据对象的值。

从代码里解释:

1.1 指向变量

Field Symbol与数据引用的几个应用_第1张图片

 162 行,assign了变量给FS之后,的值就已经变成了5。也就是说此时已经指向了v_field存址空间的了。

接下来需要判断是否assign,(因为如果没有assign,那么fs指向nothing,系统会给一个dump,在和offset同用的时候,如果assign的超出了内存地址也会报dump)。判断后给 = 20, 同时v_field变量的值也会被改成20。

1.2 指向内表行(在loop里面使用)

Field Symbol与数据引用的几个应用_第2张图片

165 行,这个field symbol已经指向了内表的行。可以直接修改行内component的值了。内表会被直接修改。

这个也就是代替了工作区间的用法。在转换例程里面经常使用。 

Field Symbol与数据引用的几个应用_第3张图片 

 Field Symbol与数据引用的几个应用_第4张图片

 自建的内表也是行内定义个field symbol,就不用定义工作区间了。减少代码行数。

1.3 动态计算

比如动态计算表中的N列。

在KNC1中,sum UM01*-UM16*列的总和。Field Symbol与数据引用的几个应用_第5张图片

 Field Symbol与数据引用的几个应用_第6张图片

上面看到这条里面只有06S和06H里面有值。

那我们来计算:

Field Symbol与数据引用的几个应用_第7张图片

174行,执行第一次的时候,很显然,被分配了wa_knc1-UM01S的,由于取到的这列值就是0.00,所以=0.00。得一直到UM06S和UM06H才会有值。

Field Symbol与数据引用的几个应用_第8张图片

运行第六次到173行,拿到了06S的值,接下来再去拿06H的值然后合计。

Field Symbol与数据引用的几个应用_第9张图片

 2. 数据引用

data reference.--见下篇。

你可能感兴趣的:(BW,中的开发,BW4HANA,开发语言)