1、sap中的动态字段其实类似c#里面的指针,都是指向的地址。 只是写法不同,sap 中的field-symbols就是类似指针。
DATA: a TYPE i value 10, b TYPE i.
FIELD-SYMBOLS <fs> TYPE i.
ASSIGN b TO <fs>.
<fs> = a.
WRITE: 'b =',b.
现在b的值即为a的值。
2、下面记录一下,我在工作中使用到field-symbol 的情况。
背景介绍:
用户发送数据过来,有wbs编码,开始日期,结束日期, 我们需要在sap系统的rpsco表中,找到在开始结束日期之间的项目的所有成本,累加返回给用户。
在rpsco表中 wpl01 wlp02……..wpl12 分别代码1 到12 月每个月的项目成本。 所以我需要将查询出来的所有 这类字段相加。
如开始结束日期为: 2013.02.08 结束日期 2014.01.01
项目成本= (2013年 wpl02+wpl03+…….+wpl12 )+ (2014年 wpl01)
我的处理方法是: 把所有的wpl 都查询出来,再根据开始日期和结束日期去计算和。
计算和的代码如下:
注意这里的内表一定要定义成全局的。
form frm_get_sum using value(u_field) "字段 gwa_result-wpl value(u_num) "月份数 value(u_begin) "开始月份 changing l_total. data:g_field(40). data: l_num(2) type n. l_num = u_begin. do u_num times. clear g_field. concatenate u_field l_num into g_field. "这里生产字段 gwa_result-wpl01... assign (g_field) to <fs1>. if <fs1> is assigned. “判断是否已指定对象 l_total = l_total + <fs1>. “累加和 endif. unassign <fs1>. “释放 l_num = l_num + 1. enddo. endform.