资产负债表和利润表有多中实现方法。如果开发的方式实现,比如 DOI 或者 OLE 导出到 Excel,就一定少不了定义报表项目、报表项目的层次、报表项包括的科目范围。如何设置报表项的会计科目范围,常见的大体有如下三种方式:
- 硬编码 (鄙视)
- 使用集 ( set ) 来定义科目范围 ( 适合在 Report Painter 中使用,但如果用自定义格式来展示报表,推荐用财务报表版本)
- 使用财务报表版本 (Financial Statement Version)。定义了财务报表版本之后,有两个函数可以方便取到我们需要的数据:包括报表项的位置、报表项的文本和包含的会计科目范围。推荐。
财务报表版本介绍
非常直观。使用事务码 OB58 或者 FSE2 来定义。系统预先提供按按国家的版本,可以基于国家版本拷贝后修改。中国的财务报表版本是 BACN。
使用 OB58 查看 BACN 的起始界面如下:
可惜没有中文维护,进去之后是英文的。功能范围 如果选中,可以在会计科目的基础上,再加上功能范围作为条件。
点击界面上会计报表项目 按钮,进入维护界面:
注意在这些项目的后面,有些项目后面有红色的标识。比如资产,后面有红色的标识。这些有标识的被称为特殊项目 (Special items)。请参考 SAP Note 1154817,介绍了特殊项使用的要求。
展开,可以看到层次结构,最末层次包含科目的范围:
定义财务报表版本后,可以用 F.01 和 F.54 查看财务报表(资产负债表和利润表)。两个事务码展示的方式不同,都能展示报表项的层级关系。国内因为资产负债表要求账户式,所以项目中应用并不是很多。
FSV 函数介绍
以下将财务报表版本简称为 FSV (Financial Statement Version)
-
FI_IMPORT_BALANCE_SHEET_POS
FI_IMPORT_BALANCE_SHEET_POS
函数获取 FSV 的报表项 ( Items ) ,Items 放在在 Tables 参数X011P
中。以及报表项所包含会计科目范围,放在 Tables 参数I011Z
中。
-
FI_IMPORT_BALANCE_SHEET_TEXT
FI_IMPORT_BALANCE_SHEET_TEXT
函数获取 FSV 某语言中报表项的文本。比如 11 是流动资产。
也可以使用函数 FAGL_FSV_POS_READ
来代替 FI_IMPORT_BALANCE_SHEET_POS
。
获取 FSV 报表项及科目范围示例
给出一个简单的例子,读取 BACN 的所有报表项,以及报表项的会计科目范围:
report zfsv_read_demo.data: gt_x011p type table of rf011p with header line,gt_i011z type table of rf011z with header line,gt_rf011q type table of rf011q with header line.call function 'FI_IMPORT_BALANCE_SHEET_POS'exportingversion = 'BACN'tablesi011z = gt_i011zx011p = gt_x011p.call function 'FI_IMPORT_BALANCE_SHEET_TEXT'exportingsprache = 'E'version = 'BACN'tablesx011q = gt_rf011q.loop at gt_x011p.read table gt_rf011q with key ergsl = gt_x011p-ergsl.write : / gt_x011p-prkey, space, gt_rf011q-txt45." write account rangeloop at gt_i011z where ergso = gt_x011p-ergsl.write: /24 gt_i011z-vonkt, gt_i011z-bilkt.endloop.write /.endloop.
FSV 相关的表
- T011:Financial statement versions
- T011T: Financial statement version names
- FAGL_011PC: Fin. Statement Structure
- FAGL_011ZC: FS Item包含的会计科目
- FAGL_011SC:Assignment Fin. Stmnt Item: Setname
- FAGL_011QT:Text for Fin. Statement Items