BPS计划功能出口的数据处理
2017-08-21 10:31
162 查看
前面一篇文章说过,BPS表单中的数据是可以通过计划功能出口传输到内表(是个HASH表),但我仅仅是通过LOOP,对其某一列值做了合计,并没有实际改动数据。
后来的需求中又涉及到这一部分,而且不光要改数值,还要增加数据记录,这次又试验了几把,结果是成功的~
BPS的功能,其实也比较完善了。对于预算管理甚至其他应用功能的开发,应该都是能提供一套解决方案的。然而,界面被吐槽,新产品的不断推出,不知还能存活多久?
补充解释一下hash表
ABAP中的HASH表,是由两部分构成,Characteristic Values 和 Key Figures。其中Characteristic Values相当于内表的Key,Key Figures里都是数值。
HASH表都要用key来读取,然后对其数值部分做操作。新增内表记录可以使用insert 将整行插入内表,但需要注意key不要与与有记录冲突。
看关键代码吧,哈希内表大部分都是在用指针读取或修改数据
*
LOOP AT ZETO_CHARSEL2 INTO WA_CHARSEL2.
ls_data = ls_data_00 ."
CLEAR ZRESULT.
ASSIGN COMPONENT 'S_CHAS' OF STRUCTURE ls_data to <F_CHA>.
IF <F_CHA> IS ASSIGNED.
<F_CHA>-0CALMONTH2 = WA_CHARSEL2-LOW.
"用key来读取hash表的一行,读到则更新指定figure,读不到则插入一行
READ TABLE XTH_DATA ASSIGNING <DATA> WITH KEY S_CHAS = <F_CHA> .
IF SY-SUBRC = 0.
ASSIGN COMPONENT 'S_KYFS' OF STRUCTURE <DATA> TO <F_KYF>.
IF <F_KYF> IS ASSIGNED.
"WA_EXITP-CHAVL是数据部分的一个字段名,ASSIGN的详细用法请百度,下面的4行语句完成数值修改
ASSIGN COMPONENT WA_EXITP-CHAVL OF STRUCTURE <F_KYF> TO <F>.
IF <F> IS ASSIGNED.
READ TABLE ZRESULT WITH KEY ZMON = <F_CHA>-0CALMONTH2.
<F> = ZRESULT-ZAMONT .
ENDIF.
ENDIF.
ELSE.
"下面的insert语句完成了内表记录的新增。本语句相当于将已有记录复制出来修改后再插入,有小BUG,仅供参考
ASSIGN COMPONENT 'S_KYFS' OF STRUCTURE ls_data TO <F_KYF>.
IF <F_KYF> IS ASSIGNED.
ASSIGN COMPONENT WA_EXITP-CHAVL OF STRUCTURE <F_KYF> TO <F>.
IF <F> IS ASSIGNED.
READ TABLE ZRESULT WITH KEY ZMON = <F_CHA>-0CALMONTH2.
<F> = ZRESULT-ZAMONT .
ENDIF.
ENDIF.
INSERT ls_data INTO TABLE XTH_DATA.
ENDIF.
ENDIF.
CLEAR ls_data.
ENDLOOP.
后来的需求中又涉及到这一部分,而且不光要改数值,还要增加数据记录,这次又试验了几把,结果是成功的~
BPS的功能,其实也比较完善了。对于预算管理甚至其他应用功能的开发,应该都是能提供一套解决方案的。然而,界面被吐槽,新产品的不断推出,不知还能存活多久?
补充解释一下hash表
ABAP中的HASH表,是由两部分构成,Characteristic Values 和 Key Figures。其中Characteristic Values相当于内表的Key,Key Figures里都是数值。
HASH表都要用key来读取,然后对其数值部分做操作。新增内表记录可以使用insert 将整行插入内表,但需要注意key不要与与有记录冲突。
看关键代码吧,哈希内表大部分都是在用指针读取或修改数据
*
LOOP AT ZETO_CHARSEL2 INTO WA_CHARSEL2.
ls_data = ls_data_00 ."
CLEAR ZRESULT.
ASSIGN COMPONENT 'S_CHAS' OF STRUCTURE ls_data to <F_CHA>.
IF <F_CHA> IS ASSIGNED.
<F_CHA>-0CALMONTH2 = WA_CHARSEL2-LOW.
"用key来读取hash表的一行,读到则更新指定figure,读不到则插入一行
READ TABLE XTH_DATA ASSIGNING <DATA> WITH KEY S_CHAS = <F_CHA> .
IF SY-SUBRC = 0.
ASSIGN COMPONENT 'S_KYFS' OF STRUCTURE <DATA> TO <F_KYF>.
IF <F_KYF> IS ASSIGNED.
"WA_EXITP-CHAVL是数据部分的一个字段名,ASSIGN的详细用法请百度,下面的4行语句完成数值修改
ASSIGN COMPONENT WA_EXITP-CHAVL OF STRUCTURE <F_KYF> TO <F>.
IF <F> IS ASSIGNED.
READ TABLE ZRESULT WITH KEY ZMON = <F_CHA>-0CALMONTH2.
<F> = ZRESULT-ZAMONT .
ENDIF.
ENDIF.
ELSE.
"下面的insert语句完成了内表记录的新增。本语句相当于将已有记录复制出来修改后再插入,有小BUG,仅供参考
ASSIGN COMPONENT 'S_KYFS' OF STRUCTURE ls_data TO <F_KYF>.
IF <F_KYF> IS ASSIGNED.
ASSIGN COMPONENT WA_EXITP-CHAVL OF STRUCTURE <F_KYF> TO <F>.
IF <F> IS ASSIGNED.
READ TABLE ZRESULT WITH KEY ZMON = <F_CHA>-0CALMONTH2.
<F> = ZRESULT-ZAMONT .
ENDIF.
ENDIF.
INSERT ls_data INTO TABLE XTH_DATA.
ENDIF.
ENDIF.
CLEAR ls_data.
ENDLOOP.
相关文章推荐
- 也谈SQL Server 2008 处理隐式数据类型转换在执行计划中的增强 (续)
- 具有自动截断功能的函数:对比:strcpy、strncpy、sprintf、snprintf在写入的数据大于缓冲区的情况下如何处理
- vlc学习计划(5)--网络数据流接收处理过程分析
- 用.NET 2.0压缩/解压功能处理大型数据
- 用.NET 2.0压缩/解压功能处理大型数据
- servlet功能一:处理表单数据
- PHP处理IOS交易认证模块,发送数据认证功能
- 数据获取以及处理系统 --- 功能规格说明书
- 也谈SQL Server 2008 处理隐式数据类型转换在运行计划中的增强 (续)
- javaWed项目中用过滤器实现转码功能,敏感词汇过滤更能,处理Get和Post接收数据中的中文乱码问题以及敏感词汇的处理
- PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
- 也谈SQL Server 2008 处理隐式数据类型转换在运行计划中的增强 (续)
- vlc学习计划(5)--网络数据流接收处理过程分析
- vlc学习计划(6)--网络数据流接收处理过程分析
- 也谈SQL Server 2008 处理隐式数据类型转换在执行计划中的增强
- js+jQuery+ajax,处理数据和功能的实现
- 数字图像处理 CImage类的使用与封装(jpg png gif tif bmp等格式图像的加载、数据读写、保存等功能)
- Matlab生物信息学工具箱新增功能——处理GEO系列数据
- 用.NET 2.0压缩/解压功能处理大型数据
- SpringMVC(27):json数据的传递处理的示例(实现功能:使用jQuery框架的ajax()方法实现用户信息查看)