此博客为原创博客,都是个人工作经历所得,转载请注明出处

ACDOCA和BSEG

转自:https://zhuanlan.zhihu.com/p/171187728


统一日记账(Universal Journal)是S/4HANA在财务领域最大的创新。它把原先分散的SAP财务模块数据,整合到了一个完全集成的后台表中,就是Table ACDOCA。

下图就展示了ACDOCA是如何将总账(General Ledger),利润中心会计(Profit Center Accounting),固定资产会计(Fixed Asset Accounting),物料账(Material Ledger),成本(Controlling),获利分析(Profitability Analysis)等各个财务子模块的数据集成到一起的。

这样一个集成的信息源,就能生成各式各样的报表:固定资产,库存,应收应付,利润,销售成本COGS),资产负债表,损益表等等。它也让以前ECC系统中的很多后台索引表(Index)和汇总表(Total)变得不再需要。

在本文中,我将就一些关键点,跟ECC的数据结构做一个比较。

1. ACDOCA里有的,BSEG里不一定有

以下的一些凭证行项目,都是只在ACDOCA表里面存在,而在BSEG表里不存在的(你可以通过BKPF表的BSTAT字段的凭证状态U来识别):

  • 资产折旧过账
  • 特定账套(Ledger)过账
  • 外币评估过账
  • CO内部凭证

2. 年末结转数字存储在ACDOCA的Period 000中

ACDOCA把上一年度的结转数放在Period 000中,这样便于计算YTD(year-to-date)数字,你不需要回去找上一年度末的数字。

3. ACDOCA的体量比BSEG大很多

ACDOCA表中的行项目数量可能会非常大,因为评分拆分,所有的行项目都被拆分到了最小的维度,再考虑到多个账套的存在,凭证行项目数量还要翻倍。

所以,从长期业务运行的角度,数据库大小和磁盘大小都需要提前考虑好。

4. 已归档的数据会在BKPF/BSEG中被删除,但在ACDOCA中依然存在

当你在财务模块中做数据归档时,对应数据会被从BKPF/BSEG表中删除。

然而,在ACDOCA表中,数据不会立刻被删除,而是添加一条反向的凭证到ACDOCA表里,让汇总余额为0。

要实际上删除ACDOCA中的数据,必须要执行Compression Run。

Compression Run是一个数据压缩的过程,它用汇总数据来替代明细数据。它的数据颗粒度就跟年末余额结转的颗粒度一致,对于余额不产生影响。

5. 对于同样的维度,BSEG和ACDOCA可能有差异

对于同一条记录的同一个字段,你可能会发现在BSEG和ACDOCA中的值可能会不一样。

例如,你可以在Entry View上,通过替代(Substitution)来修改Assignment字段(ZUONR)的值,但是它不一定会被拷贝到ACDOCA表里面。拷贝到ACDOCA是由BAdI BADI_FINS_ACDOC_BSEG_FIELDS控制的,所以当你在系统中做替代时,需要关注一下。

6. Coding Block中的自定义字段 - 集成到ACDOCA

当你在Coding Block中添加自定义字段的时候,自定义字段也会被增加到ACDOCA中。

但是,在各种凭证输入的场景中,这些自定义字段是如何被使用的,将取决于具体的定义。你在Table FINSC_ACDOC_FCT中,能看到这些自定义字段的各种属性。例如,自定义字段在以下各种流程的使用都是可以具体定义的:

  • 在损益类科目的年末结转中
  • 在资产负债类科目的年末结转中
  • 在科目余额中
  • 在科目报表中
  • 在科目余额评估时
  • 在对FI凭证做修改时
  • 在科目分摊时
  • 在汇总层级定义时

7. 很多时候,报表的数据需求会超越ACDOCA所能提供的信息

有时候报表不仅仅是关于财务细节的,它可能会混合其他维度,例如主数据中的字段,供应商名称,成本中心层次等。

所以,在报表设计时,你需要考虑使用SAP预建的一些CDS view,它们已经混合了ACDOCA的数据和其他维度的数据。并且对于新报表来说,应该尽量基于ACDOCA做开发,而不是BSEG。

我希望上面这些能在你使用ACDOCA的过程中,给你一些帮助。

posted @ 2020-12-24 16:23  Rainystuday  阅读(1888)  评论(0编辑  收藏  举报