成紅倫 裴 奇 范瑞輝
(浙江中煙工業有限責任公司,浙江 杭州 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
成紅倫,男,浙江杭州人,碩士,會計師,研究方向:財務管理。