成红伦 裴 奇 范瑞辉
(浙江中烟工业有限责任公司,浙江 杭州 310000)
如何实现SAP ERP财务报表的灵活定制
成红伦 裴 奇 范瑞辉
(浙江中烟工业有限责任公司,浙江 杭州 310000)
如何使得一个不具备ABAP编程语言基础的财务用户能在SAP系统中快速有效地配置财务报表,并灵活定义输出格式,是许多实施SAP ERP系统的公司都会遇到的问题。本文介绍的财务模块报表定制功能旨在SAP ERP中构建一个可视化图形界面,在这个界面中定义报表、报表版本,以及每个版本的输出布局、报表行、报表列、报表单元格的取数逻辑等要素,使得用户在不使用编程工具的前提下实现报表的灵活定制。
SAP ERP;财务报表;灵活定制
1.1 业务背景
SAP①ERP②中FI③模块已包含了丰富的财务报表,但在SAP系统出具一些中国特色的财务报表,仍旧需要使用Report Painter和ABAP④进行客户化开发。
Report Painter是SAP ERP产品中的一个报表开发工具,中文名是报表编辑器,其功能强大,但在实际应用过程中,存在少量的局限性:
(1)不支持复杂的逻辑条件,不支持不同特性之间的复合条件;
(2)不支持单元格独立逻辑;
(3)不支持不同报表间单元格的引用;
(4)不支持报表数据的发布和历史数据的查询引用。
采用传统ABAP开发的财务报表,具有以下几点局限性:
(1)编制困难,需要专业ABAP知识,开发工作量大;
(2)逻辑不可见,不能清晰地查看报表中的单元格的具体逻辑;
(3)逻辑、格式、行次变更困难,工作量大,不能快速响应应需而变;
(4)不同报表之间的单元格无法引用;
(5)报表的发布和历史数据数据处理混乱,无法定位上年同期数据记录。
如何使得一个不具备ABAP编程语言基础的财务用户能在SAP系统中快速有效地配置财务报表,并灵活定义输出格式,是许多实施SAP ERP系统的公司都会遇到的问题。本文介绍的财务模块报表定制功能旨在SAP ERP中构建一个可视化图形界面,在这个界面中定义报表、报表版本,以及每个版本的输出布局、报表行、报表列、报表单元格的取数逻辑等要素,使得用户在不使用编程工具的前提下实现报表的灵活定制。
1.2 案例分析
在浙江中烟常用财务模块报表的数据源是总账余额(表FAGLFLEXT),体现为公司代码、科目、借贷标识、利润中心、功能范围和成本中心等特征的汇总值。浙江中烟包括客户、供应商、内部订单、原因代码等会计核算项,针对浙江中烟的特殊会计核算项,建立了客户化数据源(表ZFIT_TOTA)。
财务报表中的单元格的值,绝大部分体现为基于特定数据源,满足一定条件的某一值类别的值,少数表现为公式项,另外极少数是基于例程和引用。报表定制的总体思路是整理并建立相应的数据源、定义报表及版本,定义报表单元格的取数逻辑,并把这个定制过程图形化、可视化和简单化,实现初期的定制和后期的查看和调整清晰简单,所见即所得。
2.1 报表定制
2.1.1 数据源
数据源是报表的取数源,分为物理数据源和逻辑数据源两类。物理数据源对应SAP系统中物理存在的数据表,如总账总计表FAGLFLEXT,直接作为资产负债表、利润表的数据源。逻辑数据源不直接对应物理数据表,而是首先查询物理表,然后按特定业务逻辑进行加工处理,形成数据源。
数据源包含特征和关键值,特征指非数值部分,作为报表单元格取数条件字段,如科目、功能范围和借贷标识等。关键值指数值部分,作为报表单元格的数值源,如期初余额、本期发生额和期末余额等。针对每个数据源可以定义各自的特征字段和关键值字段列表,这些字段将作为后续报表定制的基础元素。
2.1.2 报表
报表对应与具体财务模块的报表,如资产表、利润表和现金流量表等。
表1 财务报表
报表信息包含以下字段:
表2 报表信息
2.1.3 版本
财务报表随着会计准则和业务规则的变化,它的格式和逻辑也会发生变化。报表版本用于保存不同时期和不同业务规则下各自独立的报表格式及逻辑。浙江中烟为单一公司代码,中烟的报表版本主要用于不同年度的格式及逻辑变化。
表3 报表版本
报表版本信息包含以下字段:
表4 报表版本信息
2.1.4 报表列
报表列对应财务报表输出的关键值列,如资产负债表中的“年初数”和“期末数”。一般需要制定关键值列的取数逻辑,如需指定是本年的“年初数”还是上年同期的“年初数”。
表5 报表列
报表列信息包含以下字段:
表6 报表列信息
2.1.5 报表行
报表行对应财务报表输出的行,如资产负债表中的“货币资金”、“应收票据”和“负债和所有者权益总计”等。报表行定义了报表具体行次的计算逻辑类型、取数逻辑、是否取反、是否是辅助列和标识符信息。
注意,当报表行的计算逻辑为C条件时,行和列的条件会组合形成一个复合条件,作为行列确定的单元格的条件。
报表行信息包含以下字段:
表7 报表行信息
DESCRIP -TION GUID CALC_LOGIC NAGATIVE NO_OUT IDENTIFIER行名称GUID(自动生成)逻辑类型(列值计算逻辑类型:C条件/F公式/R例程。当逻辑类型为C条件时,列值计算逻辑对应一个条件逻辑表达式,计算过程中,将满足条件的数据源内表行的值计算到列值中;当逻辑类型为F公式时,列值计算逻辑对应一个公式;当逻辑类型为R例程时,列值计算逻辑对应一段ABAP例程)取反不输出(标识该列为辅助列,不作为结果输出)标识符(标识报表列,用于报表间引用和上年同期历史数据的定位等)
2.1.6 单元格
报表行和报表列交叉形成报表单元格,因此,报表行和列的计算逻辑组合形成单元格逻辑。报表行和列的计算类型不同组合确定了不同的计算步骤:
表8 报表单元格
为实现特定单元格的逻辑,可以定义单元格独立逻辑。单元格独立逻辑优先级高于报表行和列组合逻辑,当单元格已定义单元格独立逻辑,报表引擎仅执行单元格独立逻辑而忽略报表行和报表列的逻辑。单元格逻辑可以包含多个顺序计算的步骤,每一个计算步骤的计算类型可以是条件、公式和引用等。
2.1.7 条件
条件表现为一个非结构化的逻辑表达式,报表定制的重点和难点是如何开发一个结构化的条件定制界面,在这个界面中对条件进行编辑、语法检查和编译成一个非结构化的逻辑表达式。
图1 条件定制界面
结构化条件表达式转换成非结构化的表达式字符串:
图2 表达式转换
条件信息包含以下字段:
表9 条件信息
2.1.8 公式
公式定制了报表行或报表列由一组公式组成,如“应收账款金额”=“应收账款”-“坏账准备”:
图3 公式定制
2.1.9 例程
当条件和公式均无法满足逻辑定制要求时,开发人员编写一段ABAP例程一定能解决问题。例程体现为一个遵循接口规范的ABAP独立程序,开发人员在这个独立程序可以自由发挥,最终将报表单元格的值计算出来。例程给报表定制提供了灵活性和扩展性。
2.2 报表运行
报表执行引擎管理着报表编译、报表执行、报表输出、报表发布等一系列执行相关任务。
2.2.1 报表编译
为提高报表运行效率,报表定制中条件、例程需动态实时生成ABAP代码,这个过程称为报表编译。每次报表定制发生变更后,报表执行引擎会检查报表定制相关数据表的最后修改时间戳和报表最后编译的时间戳,如果修改时间晚于编译时间,报表执行引擎将对变动的报表进行编译。
2.2.2 报表执行
报表引擎根据选择屏幕输入的报表编号、会计期间确定报表版本,并读取该报表版本的所有定制信息,读取数据源到内表,物理数据源动态查询数据库表,逻辑数据源BADI方式的实现。循环报表行,嵌套循环报表列,按行列逻辑类型复合确定单元格计算逻辑:
表10 报表执行
行例程 执行报表行例程逻辑首次执行报表行例程逻辑,然后执行报表列例程逻辑执行报表行例程逻辑
当单元格存在独立逻辑时,以单元格逻辑为准,忽略报表行列复合逻辑;当行列逻辑类型均为条件时,将行列各自条件组合成一个条件,循环数据源内表到工作区,WHERE条件为行列组合条件,将工作区的内容按值类别计算到单元格的值中;当行列的逻辑为前提组合时,计算步骤遵循上述表格,将所有单元格的值按报表版本中的布局进行组合,形成输出内表。
2.2.3 报表输出
报表采用ALV GRID⑤输出报表结果,支持Excel格式化导出。
2.2.4 报表发布
财务报表具有时效性,具体体现在13期账务处理,13期的记账会影响次年年初余额,因此需要将报表数据固化,报表发布将报表数据保存下来。历史数据以单元格为颗粒度进行保存,数据库表信息如下:
表11 数据库表信息
术语解释:
①SAP:是全球著名的商业管理软件供应商,总部位于德国
②ERP:即Enterprise Resource Planning的缩写,中文称为企业资源计划管理系统
③ABAP:一种编程工具,SAP ERP系统采用此开发工具
④FI:即财务管理(Financial management)的缩写
⑤ALV GRID:由ABAP提供的一种表格化的输出格式
How to Realize the Flexible Customization of SAP ERP Financial Statements
Cheng Honglun Pei QiFan Ruihui
(China Tobacco Zhejiang Industrial Co.,Ltd,Hangzhou 310000,Zhejiang)
Many companies will encounter such a problem in the implementation of SAP ERP system:how to make the financial users collocate financial statements in the SAP system quickly and effectively without ABAP programming language,and define the output format flexibly.This paper introduces the financial statement customization function to construct a visual interface in SAP ERP,which can define the statement,versions,output layout,statement line,statement column and statement cell,allowing the users to customize statement flexibly without programming.
SAP ERP;financial statement;flexible customization
成红伦,男,浙江杭州人,硕士,会计师,研究方向:财务管理。