[ABAP] IDCNACCTBLN(科目余额表) 字段增强

最近接到一个需求,客户想在IDCNACCTBLN(科目余额表)添加累计借贷金额字段,跟踪标准程序后屏幕需求可以做,下面记录下解决思路。

需求要在界面添加当前借方累计发生额、贷方累计发生额字段。

ALV添加字段首先考虑是使用的标准结构还是定义内表,查找ALV所在屏幕号,找ALV display相关代码。

在ALV字段上查看技术信息得到对应表名为:IDCN_ACCTBLNSTR_ALVBALANCE,但依然要从程序上确认ALV是否是直接引用的该结构;

ALV 所在RFIDCN_ACCTBLN 300屏幕,翻阅程序逻辑流代码能找到控制ALV输出的代码,进而确认ALV数据结构即:IDCN_ACCTBLNSTR_ALVBALANCE

在该结构中添加附加结构

紧接着更改Fieldcat结构赋值,找到build fieldcat 对应的FORM,在该FORM下创建隐式增强

清空TECH赋值才能显示字段,更改BALANCE_CUM、WAERS列COL_POS赋值的目的是为了把累计借方金额、累计贷方金额放在余额之前,尝试更改两个增强字段的COL_POS值不生效,有知道的小伙伴麻烦告知下原因,截图方案为替代方案。

解决完显示问题后,我们着手解决赋值问题。通过debug我们得到,中间处理内表GT_BALANCE中存在累计金额行,即为我们想要的数据,所以只要在合适位置读取该内表赋值到显示内表即可。

在refresh_balance_grid MEDULE下pbo_prepare_balance_list FORM里为显示内表赋值,这些信息都是通过debug程序获得,位置要选在GT_BALANCE内表值不在更新后。在该FORM最后做隐式增强,赋值代码如下。

  DATA: LT_ZZBALANCE LIKE GT_BALANCE.
  DATA: LS_ZZBALANCE LIKE LINE OF LT_ZZBALANCE.
  DATA: LV_PERIOD TYPE IDCN_S_BAL_ITEM-PERIOD.
  DATA: LV_MON TYPE N LENGTH 3.
  DATA: LV_LEVEL_ORD TYPE IDCN_ACCTBLNSTR_ALVBALANCE-LEVEL_ORD.
  DATA: BEGIN OF LS_SUMM,
      ZZJFLJ TYPE IDCN_ACCTBLNSTR_ALVBALANCE-ZZJFLJ,
      ZZDFLJ TYPE IDCN_ACCTBLNSTR_ALVBALANCE-ZZDFLJ,
    END OF LS_SUMM.

  IF is_selscreen_params-ENDE_MONAT IS NOT INITIAL.
    LV_MON = is_selscreen_params-ENDE_MONAT.
  ELSE.
    LV_MON = is_selscreen_params-START_MONAT.
  ENDIF.

  LV_PERIOD = LV_MON.
  LV_LEVEL_ORD = 1.

  IF is_selscreen_params-saknr IS INITIAL.

    LT_ZZBALANCE[] = GT_BALANCE[].
    SORT LT_ZZBALANCE BY RACCT DESCR PERIOD.
    CLEAR: LS_SUMM.

    LOOP AT ct_balance_outtab ASSIGNING <fs_balance_outtab> WHERE RACCT IS NOT INITIAL.
      READ TABLE LT_ZZBALANCE INTO LS_ZZBALANCE WITH KEY RACCT = <fs_balance_outtab>-RACCT
                                                         DESCR = '累计'
                                                         PERIOD = LV_PERIOD BINARY SEARCH.
      IF SY-SUBRC = 0.
        <fs_balance_outtab>-ZZJFLJ = LS_ZZBALANCE-DEBIT.
        <fs_balance_outtab>-ZZDFLJ = LS_ZZBALANCE-CREDIT.

        LS_SUMM-ZZJFLJ = LS_SUMM-ZZJFLJ + <fs_balance_outtab>-ZZJFLJ.
        LS_SUMM-ZZDFLJ = LS_SUMM-ZZDFLJ + <fs_balance_outtab>-ZZDFLJ.
      ENDIF.
    ENDLOOP.

    READ TABLE ct_balance_outtab ASSIGNING <fs_balance_outtab> WITH KEY LEVEL_ORD = LV_LEVEL_ORD.
    IF SY-SUBRC = 0.
      <fs_balance_outtab>-ZZJFLJ = LS_SUMM-ZZJFLJ.
      <fs_balance_outtab>-ZZDFLJ = LS_SUMM-ZZDFLJ.
    ENDIF.

    CLEAR: LT_ZZBALANCE[],LS_SUMM.
  ENDIF.

LEVEL_ORD=1是为了赋值总计行。

测试显示正常,增强完成。

在上述增强完成后,客户又提出了延伸需求,要求在双击显示凭证明细界面添加供应商字段。

同样是通过debug代码找到ALV显示的调用位置

同样的步骤,增强字段、修改显示fieldcat、赋值内表。

测试成功!搞定。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值