BPS计划功能出口的数据处理

前面一篇文章说过,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.



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值