成紅倫 裴 奇 范瑞輝
(浙江中煙工業(yè)有限責(zé)任公司,浙江 杭州 310000)
如何實(shí)現(xiàn)SAP ERP財(cái)務(wù)報(bào)表的靈活定制
成紅倫 裴 奇 范瑞輝
(浙江中煙工業(yè)有限責(zé)任公司,浙江 杭州 310000)
如何使得一個(gè)不具備ABAP編程語(yǔ)言基礎(chǔ)的財(cái)務(wù)用戶能在SAP系統(tǒng)中快速有效地配置財(cái)務(wù)報(bào)表,并靈活定義輸出格式,是許多實(shí)施SAP ERP系統(tǒng)的公司都會(huì)遇到的問(wèn)題。本文介紹的財(cái)務(wù)模塊報(bào)表定制功能旨在SAP ERP中構(gòu)建一個(gè)可視化圖形界面,在這個(gè)界面中定義報(bào)表、報(bào)表版本,以及每個(gè)版本的輸出布局、報(bào)表行、報(bào)表列、報(bào)表單元格的取數(shù)邏輯等要素,使得用戶在不使用編程工具的前提下實(shí)現(xiàn)報(bào)表的靈活定制。
SAP ERP;財(cái)務(wù)報(bào)表;靈活定制
1.1 業(yè)務(wù)背景
SAP①ERP②中FI③模塊已包含了豐富的財(cái)務(wù)報(bào)表,但在SAP系統(tǒng)出具一些中國(guó)特色的財(cái)務(wù)報(bào)表,仍舊需要使用Report Painter和ABAP④進(jìn)行客戶化開(kāi)發(fā)。
Report Painter是SAP ERP產(chǎn)品中的一個(gè)報(bào)表開(kāi)發(fā)工具,中文名是報(bào)表編輯器,其功能強(qiáng)大,但在實(shí)際應(yīng)用過(guò)程中,存在少量的局限性:
(1)不支持復(fù)雜的邏輯條件,不支持不同特性之間的復(fù)合條件;
(2)不支持單元格獨(dú)立邏輯;
(3)不支持不同報(bào)表間單元格的引用;
(4)不支持報(bào)表數(shù)據(jù)的發(fā)布和歷史數(shù)據(jù)的查詢引用。
采用傳統(tǒng)ABAP開(kāi)發(fā)的財(cái)務(wù)報(bào)表,具有以下幾點(diǎn)局限性:
(1)編制困難,需要專(zhuān)業(yè)ABAP知識(shí),開(kāi)發(fā)工作量大;
(2)邏輯不可見(jiàn),不能清晰地查看報(bào)表中的單元格的具體邏輯;
(3)邏輯、格式、行次變更困難,工作量大,不能快速響應(yīng)應(yīng)需而變;
(4)不同報(bào)表之間的單元格無(wú)法引用;
(5)報(bào)表的發(fā)布和歷史數(shù)據(jù)數(shù)據(jù)處理混亂,無(wú)法定位上年同期數(shù)據(jù)記錄。
如何使得一個(gè)不具備ABAP編程語(yǔ)言基礎(chǔ)的財(cái)務(wù)用戶能在SAP系統(tǒng)中快速有效地配置財(cái)務(wù)報(bào)表,并靈活定義輸出格式,是許多實(shí)施SAP ERP系統(tǒng)的公司都會(huì)遇到的問(wèn)題。本文介紹的財(cái)務(wù)模塊報(bào)表定制功能旨在SAP ERP中構(gòu)建一個(gè)可視化圖形界面,在這個(gè)界面中定義報(bào)表、報(bào)表版本,以及每個(gè)版本的輸出布局、報(bào)表行、報(bào)表列、報(bào)表單元格的取數(shù)邏輯等要素,使得用戶在不使用編程工具的前提下實(shí)現(xiàn)報(bào)表的靈活定制。
1.2 案例分析
在浙江中煙常用財(cái)務(wù)模塊報(bào)表的數(shù)據(jù)源是總賬余額(表FAGLFLEXT),體現(xiàn)為公司代碼、科目、借貸標(biāo)識(shí)、利潤(rùn)中心、功能范圍和成本中心等特征的匯總值。浙江中煙包括客戶、供應(yīng)商、內(nèi)部訂單、原因代碼等會(huì)計(jì)核算項(xiàng),針對(duì)浙江中煙的特殊會(huì)計(jì)核算項(xiàng),建立了客戶化數(shù)據(jù)源(表ZFIT_TOTA)。
財(cái)務(wù)報(bào)表中的單元格的值,絕大部分體現(xiàn)為基于特定數(shù)據(jù)源,滿足一定條件的某一值類(lèi)別的值,少數(shù)表現(xiàn)為公式項(xiàng),另外極少數(shù)是基于例程和引用。報(bào)表定制的總體思路是整理并建立相應(yīng)的數(shù)據(jù)源、定義報(bào)表及版本,定義報(bào)表單元格的取數(shù)邏輯,并把這個(gè)定制過(guò)程圖形化、可視化和簡(jiǎn)單化,實(shí)現(xiàn)初期的定制和后期的查看和調(diào)整清晰簡(jiǎn)單,所見(jiàn)即所得。
2.1 報(bào)表定制
2.1.1 數(shù)據(jù)源
數(shù)據(jù)源是報(bào)表的取數(shù)源,分為物理數(shù)據(jù)源和邏輯數(shù)據(jù)源兩類(lèi)。物理數(shù)據(jù)源對(duì)應(yīng)SAP系統(tǒng)中物理存在的數(shù)據(jù)表,如總賬總計(jì)表FAGLFLEXT,直接作為資產(chǎn)負(fù)債表、利潤(rùn)表的數(shù)據(jù)源。邏輯數(shù)據(jù)源不直接對(duì)應(yīng)物理數(shù)據(jù)表,而是首先查詢物理表,然后按特定業(yè)務(wù)邏輯進(jìn)行加工處理,形成數(shù)據(jù)源。
數(shù)據(jù)源包含特征和關(guān)鍵值,特征指非數(shù)值部分,作為報(bào)表單元格取數(shù)條件字段,如科目、功能范圍和借貸標(biāo)識(shí)等。關(guān)鍵值指數(shù)值部分,作為報(bào)表單元格的數(shù)值源,如期初余額、本期發(fā)生額和期末余額等。針對(duì)每個(gè)數(shù)據(jù)源可以定義各自的特征字段和關(guān)鍵值字段列表,這些字段將作為后續(xù)報(bào)表定制的基礎(chǔ)元素。
2.1.2 報(bào)表
報(bào)表對(duì)應(yīng)與具體財(cái)務(wù)模塊的報(bào)表,如資產(chǎn)表、利潤(rùn)表和現(xiàn)金流量表等。
表1 財(cái)務(wù)報(bào)表
報(bào)表信息包含以下字段:
表2 報(bào)表信息
2.1.3 版本
財(cái)務(wù)報(bào)表隨著會(huì)計(jì)準(zhǔn)則和業(yè)務(wù)規(guī)則的變化,它的格式和邏輯也會(huì)發(fā)生變化。報(bào)表版本用于保存不同時(shí)期和不同業(yè)務(wù)規(guī)則下各自獨(dú)立的報(bào)表格式及邏輯。浙江中煙為單一公司代碼,中煙的報(bào)表版本主要用于不同年度的格式及邏輯變化。
表3 報(bào)表版本
報(bào)表版本信息包含以下字段:
表4 報(bào)表版本信息
2.1.4 報(bào)表列
報(bào)表列對(duì)應(yīng)財(cái)務(wù)報(bào)表輸出的關(guān)鍵值列,如資產(chǎn)負(fù)債表中的“年初數(shù)”和“期末數(shù)”。一般需要制定關(guān)鍵值列的取數(shù)邏輯,如需指定是本年的“年初數(shù)”還是上年同期的“年初數(shù)”。
表5 報(bào)表列
報(bào)表列信息包含以下字段:
表6 報(bào)表列信息
2.1.5 報(bào)表行
報(bào)表行對(duì)應(yīng)財(cái)務(wù)報(bào)表輸出的行,如資產(chǎn)負(fù)債表中的“貨幣資金”、“應(yīng)收票據(jù)”和“負(fù)債和所有者權(quán)益總計(jì)”等。報(bào)表行定義了報(bào)表具體行次的計(jì)算邏輯類(lèi)型、取數(shù)邏輯、是否取反、是否是輔助列和標(biāo)識(shí)符信息。
注意,當(dāng)報(bào)表行的計(jì)算邏輯為C條件時(shí),行和列的條件會(huì)組合形成一個(gè)復(fù)合條件,作為行列確定的單元格的條件。
報(bào)表行信息包含以下字段:
表7 報(bào)表行信息
DESCRIP -TION GUID CALC_LOGIC NAGATIVE NO_OUT IDENTIFIER行名稱(chēng)GUID(自動(dòng)生成)邏輯類(lèi)型(列值計(jì)算邏輯類(lèi)型:C條件/F公式/R例程。當(dāng)邏輯類(lèi)型為C條件時(shí),列值計(jì)算邏輯對(duì)應(yīng)一個(gè)條件邏輯表達(dá)式,計(jì)算過(guò)程中,將滿足條件的數(shù)據(jù)源內(nèi)表行的值計(jì)算到列值中;當(dāng)邏輯類(lèi)型為F公式時(shí),列值計(jì)算邏輯對(duì)應(yīng)一個(gè)公式;當(dāng)邏輯類(lèi)型為R例程時(shí),列值計(jì)算邏輯對(duì)應(yīng)一段ABAP例程)取反不輸出(標(biāo)識(shí)該列為輔助列,不作為結(jié)果輸出)標(biāo)識(shí)符(標(biāo)識(shí)報(bào)表列,用于報(bào)表間引用和上年同期歷史數(shù)據(jù)的定位等)
2.1.6 單元格
報(bào)表行和報(bào)表列交叉形成報(bào)表單元格,因此,報(bào)表行和列的計(jì)算邏輯組合形成單元格邏輯。報(bào)表行和列的計(jì)算類(lèi)型不同組合確定了不同的計(jì)算步驟:
表8 報(bào)表單元格
為實(shí)現(xiàn)特定單元格的邏輯,可以定義單元格獨(dú)立邏輯。單元格獨(dú)立邏輯優(yōu)先級(jí)高于報(bào)表行和列組合邏輯,當(dāng)單元格已定義單元格獨(dú)立邏輯,報(bào)表引擎僅執(zhí)行單元格獨(dú)立邏輯而忽略報(bào)表行和報(bào)表列的邏輯。單元格邏輯可以包含多個(gè)順序計(jì)算的步驟,每一個(gè)計(jì)算步驟的計(jì)算類(lèi)型可以是條件、公式和引用等。
2.1.7 條件
條件表現(xiàn)為一個(gè)非結(jié)構(gòu)化的邏輯表達(dá)式,報(bào)表定制的重點(diǎn)和難點(diǎn)是如何開(kāi)發(fā)一個(gè)結(jié)構(gòu)化的條件定制界面,在這個(gè)界面中對(duì)條件進(jìn)行編輯、語(yǔ)法檢查和編譯成一個(gè)非結(jié)構(gòu)化的邏輯表達(dá)式。
圖1 條件定制界面
結(jié)構(gòu)化條件表達(dá)式轉(zhuǎn)換成非結(jié)構(gòu)化的表達(dá)式字符串:
圖2 表達(dá)式轉(zhuǎn)換
條件信息包含以下字段:
表9 條件信息
2.1.8 公式
公式定制了報(bào)表行或報(bào)表列由一組公式組成,如“應(yīng)收賬款金額”=“應(yīng)收賬款”-“壞賬準(zhǔn)備”:
圖3 公式定制
2.1.9 例程
當(dāng)條件和公式均無(wú)法滿足邏輯定制要求時(shí),開(kāi)發(fā)人員編寫(xiě)一段ABAP例程一定能解決問(wèn)題。例程體現(xiàn)為一個(gè)遵循接口規(guī)范的ABAP獨(dú)立程序,開(kāi)發(fā)人員在這個(gè)獨(dú)立程序可以自由發(fā)揮,最終將報(bào)表單元格的值計(jì)算出來(lái)。例程給報(bào)表定制提供了靈活性和擴(kuò)展性。
2.2 報(bào)表運(yùn)行
報(bào)表執(zhí)行引擎管理著報(bào)表編譯、報(bào)表執(zhí)行、報(bào)表輸出、報(bào)表發(fā)布等一系列執(zhí)行相關(guān)任務(wù)。
2.2.1 報(bào)表編譯
為提高報(bào)表運(yùn)行效率,報(bào)表定制中條件、例程需動(dòng)態(tài)實(shí)時(shí)生成ABAP代碼,這個(gè)過(guò)程稱(chēng)為報(bào)表編譯。每次報(bào)表定制發(fā)生變更后,報(bào)表執(zhí)行引擎會(huì)檢查報(bào)表定制相關(guān)數(shù)據(jù)表的最后修改時(shí)間戳和報(bào)表最后編譯的時(shí)間戳,如果修改時(shí)間晚于編譯時(shí)間,報(bào)表執(zhí)行引擎將對(duì)變動(dòng)的報(bào)表進(jìn)行編譯。
2.2.2 報(bào)表執(zhí)行
報(bào)表引擎根據(jù)選擇屏幕輸入的報(bào)表編號(hào)、會(huì)計(jì)期間確定報(bào)表版本,并讀取該報(bào)表版本的所有定制信息,讀取數(shù)據(jù)源到內(nèi)表,物理數(shù)據(jù)源動(dòng)態(tài)查詢數(shù)據(jù)庫(kù)表,邏輯數(shù)據(jù)源BADI方式的實(shí)現(xiàn)。循環(huán)報(bào)表行,嵌套循環(huán)報(bào)表列,按行列邏輯類(lèi)型復(fù)合確定單元格計(jì)算邏輯:
表10 報(bào)表執(zhí)行
行例程 執(zhí)行報(bào)表行例程邏輯首次執(zhí)行報(bào)表行例程邏輯,然后執(zhí)行報(bào)表列例程邏輯執(zhí)行報(bào)表行例程邏輯
當(dāng)單元格存在獨(dú)立邏輯時(shí),以單元格邏輯為準(zhǔn),忽略報(bào)表行列復(fù)合邏輯;當(dāng)行列邏輯類(lèi)型均為條件時(shí),將行列各自條件組合成一個(gè)條件,循環(huán)數(shù)據(jù)源內(nèi)表到工作區(qū),WHERE條件為行列組合條件,將工作區(qū)的內(nèi)容按值類(lèi)別計(jì)算到單元格的值中;當(dāng)行列的邏輯為前提組合時(shí),計(jì)算步驟遵循上述表格,將所有單元格的值按報(bào)表版本中的布局進(jìn)行組合,形成輸出內(nèi)表。
2.2.3 報(bào)表輸出
報(bào)表采用ALV GRID⑤輸出報(bào)表結(jié)果,支持Excel格式化導(dǎo)出。
2.2.4 報(bào)表發(fā)布
財(cái)務(wù)報(bào)表具有時(shí)效性,具體體現(xiàn)在13期賬務(wù)處理,13期的記賬會(huì)影響次年年初余額,因此需要將報(bào)表數(shù)據(jù)固化,報(bào)表發(fā)布將報(bào)表數(shù)據(jù)保存下來(lái)。歷史數(shù)據(jù)以單元格為顆粒度進(jìn)行保存,數(shù)據(jù)庫(kù)表信息如下:
表11 數(shù)據(jù)庫(kù)表信息
術(shù)語(yǔ)解釋?zhuān)?/p>
①SAP:是全球著名的商業(yè)管理軟件供應(yīng)商,總部位于德國(guó)
②ERP:即Enterprise Resource Planning的縮寫(xiě),中文稱(chēng)為企業(yè)資源計(jì)劃管理系統(tǒng)
③ABAP:一種編程工具,SAP ERP系統(tǒng)采用此開(kāi)發(fā)工具
④FI:即財(cái)務(wù)管理(Financial management)的縮寫(xiě)
⑤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
成紅倫,男,浙江杭州人,碩士,會(huì)計(jì)師,研究方向:財(cái)務(wù)管理。