您的位置:首页 > 其它

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 ABAP 数据编辑
相关文章推荐