李洋光
中遠(yuǎn)海運(yùn)科技(北京)有限公司,北京 100010)
當(dāng)前SAP(System Applications and Products)在我國的ERP(Enterprise Resource Planning)市場中占據(jù)著優(yōu)勢地位,很多大型國有企業(yè)都是SAP的用戶,涉及的行業(yè)包括金融、地產(chǎn)、物流和制造業(yè)等。然而,各企業(yè)在實(shí)施SAP項(xiàng)目過程中,不可避免地會遇到新舊系統(tǒng)間數(shù)據(jù)切換的情況,包括數(shù)據(jù)的格式轉(zhuǎn)換、有效性驗(yàn)證、批量導(dǎo)入和核對等,其中對數(shù)據(jù)處理的質(zhì)量有很高的要求,這也是各SAP項(xiàng)目中最重要的環(huán)節(jié)之一。比如各公司在實(shí)際經(jīng)營過程中會對財(cái)務(wù)核算標(biāo)準(zhǔn)進(jìn)行調(diào)整,包括會計(jì)準(zhǔn)則、業(yè)務(wù)往來賬務(wù)核算模式和機(jī)構(gòu)改革與業(yè)務(wù)重組帶來的核算體系等,這可能會在數(shù)據(jù)轉(zhuǎn)換過程中帶來諸多不確定因素。
作為一款國際化大型ERP財(cái)務(wù)軟件,SAP內(nèi)置有標(biāo)準(zhǔn)的數(shù)據(jù)批導(dǎo)程序,包括LSMW(Legacy System Migration Workbench)、eCATT(Extended Computer Aided Test Tool)和BDC(Batch Data Conversion)等,但這些功能或程序都需在按特定的規(guī)則對原系統(tǒng)的數(shù)據(jù)進(jìn)行調(diào)整之后才能使用,對于海量數(shù)據(jù)的轉(zhuǎn)換而言并不是一種便捷的方式;同時(shí),對于需用戶人工處理的數(shù)據(jù)而言,SAP并不能提供便捷、有效的數(shù)據(jù)處理手段,存在日志管理能力差、屏幕錄制過程復(fù)雜、殘生會話管理繁瑣、字段不能靈活增減和數(shù)據(jù)可視化的友好度不高等問題。[1]如何高效且快速地實(shí)現(xiàn)新舊系統(tǒng)間的數(shù)據(jù)轉(zhuǎn)換,始終是SAP實(shí)施單位面臨的一個(gè)比較棘手的難題。
綜上所述,在開展SAP系統(tǒng)遷移和數(shù)據(jù)處理工作時(shí),需要一套完整且可定制的數(shù)據(jù)轉(zhuǎn)換系統(tǒng),通過數(shù)據(jù)接收、清洗、轉(zhuǎn)換、核對、調(diào)整和傳送,解決用戶關(guān)心的數(shù)據(jù)處理問題。在此背景下,本文提出一種數(shù)據(jù)轉(zhuǎn)換平臺設(shè)計(jì)方案,滿足用戶對數(shù)據(jù)轉(zhuǎn)換的準(zhǔn)確性和高效性的需求,同時(shí)通過實(shí)際項(xiàng)目的實(shí)施驗(yàn)證該平臺的實(shí)用性和可推廣性。
在實(shí)施SAP項(xiàng)目過程中,項(xiàng)目組經(jīng)常會遇到各類問題,大致可分為以下3類。
1.1.1 數(shù)據(jù)量龐大
對于一些大型集團(tuán)型企業(yè)而言,其下屬公司眾多,各公司的業(yè)務(wù)和信息化現(xiàn)狀有所不同,采用的財(cái)務(wù)核算系統(tǒng)存在差異,會計(jì)科目設(shè)置不夠規(guī)范,導(dǎo)致整個(gè)集團(tuán)內(nèi)部的會計(jì)核算規(guī)則和核算內(nèi)容不統(tǒng)一,進(jìn)而影響其財(cái)務(wù)分析的準(zhǔn)確性。
1.1.2 顆粒度不統(tǒng)一
隨著新舊系統(tǒng)之間數(shù)據(jù)的遷移,不可避免地會遇到會計(jì)核算方式調(diào)整的情況,可能涉及到的場景包括會計(jì)科目表變化、會計(jì)準(zhǔn)則變化和個(gè)性化核算字段變化等。此外,用戶對系統(tǒng)上線期間的數(shù)據(jù)細(xì)化程度的要求不同會影響新系統(tǒng)中初始業(yè)務(wù)數(shù)據(jù)的顆粒度,進(jìn)而對數(shù)據(jù)量產(chǎn)生影響。
1.1.3 操作性較差
系統(tǒng)上線之后,很多日常業(yè)務(wù)都將通過系統(tǒng)直接處理,這樣就對業(yè)務(wù)人員的業(yè)務(wù)水平和計(jì)算機(jī)操作水平等提出了更高的要求。然而,SAP的用戶友好度并不高,存在部分操作步驟較為復(fù)雜、程序界面相對陳舊和中文翻譯常有錯(cuò)誤等問題。
為此,在項(xiàng)目實(shí)施之前往往需進(jìn)行新舊科目、字段狀態(tài)組、成本中心、利潤中心和業(yè)務(wù)范圍主數(shù)據(jù)的對照,根據(jù)對照好的新科目,按幣種、必輸輔助核算的明細(xì)項(xiàng)小計(jì)匯總,所有行項(xiàng)目數(shù)據(jù)按小計(jì)字段合并,同時(shí)壓縮行項(xiàng)目數(shù)量,從而減少用戶端的數(shù)據(jù)處理量,這樣會給系統(tǒng)帶來很大的數(shù)據(jù)清洗壓力。
針對上述問題,可開發(fā)一套能針對不同系統(tǒng)結(jié)構(gòu)、不同規(guī)格原始數(shù)據(jù)的通用型數(shù)據(jù)轉(zhuǎn)換平臺,滿足對大量復(fù)雜數(shù)據(jù)進(jìn)行接收、清洗、轉(zhuǎn)換、核對、調(diào)整和傳送的需求。
平臺采用Java語言設(shè)計(jì)開發(fā)新舊憑證轉(zhuǎn)換模組,采用Data Source ETL工具將原SAP系統(tǒng)的數(shù)據(jù)導(dǎo)入MySQL等關(guān)系型數(shù)據(jù)庫中。平臺總體架構(gòu)見圖1。

圖1 平臺總體架構(gòu)
平臺根據(jù)映射關(guān)系將新舊科目分為3類,有2種處理方法:
1) 對于舊科目與新科目之間的關(guān)系為一一映射或多對一的關(guān)系,且科目的字段狀態(tài)組一一映射的情況,平臺自動進(jìn)行數(shù)據(jù)轉(zhuǎn)換,無需人工操作;
2) 對于舊科目與新科目之間的關(guān)系為一對多的關(guān)系,或舊科目與新科目的字段狀態(tài)組之間的關(guān)系為一對多的關(guān)系的情況,根據(jù)標(biāo)記由用戶進(jìn)行人工拆分,最終結(jié)果由平臺通過接口導(dǎo)入SAP中,生成憑證。
憑證轉(zhuǎn)換平臺可自動校驗(yàn)每個(gè)科目的必輸字段,若有新增字段必輸要求的情況,同樣需要用戶進(jìn)行人工拆分,如成本中心、內(nèi)部訂單和報(bào)表分類等。
對于業(yè)務(wù)核算模式的變更,以銀行科目為例,舊銀行科目精確至每個(gè)特定的銀行賬中,新銀行科目啟用了開戶行和賬戶標(biāo)識的字段必輸要求,根據(jù)幣種/活期/定期/通知存款/受限資金的維度設(shè)計(jì),不同銀行賬戶的記賬需通過開戶行和賬戶標(biāo)識字段的必輸控制實(shí)現(xiàn)。平臺設(shè)計(jì)思路見圖2。

圖2 平臺設(shè)計(jì)思路
由于系統(tǒng)實(shí)現(xiàn)涉及的邏輯比較復(fù)雜,本文只選取其中的幾個(gè)要點(diǎn)加以闡述。
轉(zhuǎn)換節(jié)點(diǎn)是實(shí)現(xiàn)數(shù)據(jù)轉(zhuǎn)換的關(guān)鍵,一個(gè)完整的數(shù)據(jù)轉(zhuǎn)換流程是由多個(gè)轉(zhuǎn)換節(jié)點(diǎn)組合而成的[2]。轉(zhuǎn)換節(jié)點(diǎn)設(shè)計(jì)是關(guān)鍵技術(shù)之一,會對系統(tǒng)的運(yùn)行效率產(chǎn)生影響。
目前Java中已提供應(yīng)用程序接口(Application Programming Interface,API)腳本,支持在Java程序中采用JavaScript、Groovy和Ruby等腳本語言,不僅能在Java中執(zhí)行腳本,而且能在腳本中調(diào)用Java對象,功能強(qiáng)大[2]。基于腳本的轉(zhuǎn)換節(jié)點(diǎn)具有多種功能和很強(qiáng)的靈活性,在運(yùn)行程序時(shí)可根據(jù)轉(zhuǎn)換需求編寫相應(yīng)的腳本并動態(tài)插入執(zhí)行。平臺數(shù)據(jù)處理模型流程圖見圖3。

圖3 平臺數(shù)據(jù)處理模型流程圖
1.5.1 數(shù)據(jù)獲取
為給平臺提供舊SAP系統(tǒng)中的財(cái)務(wù)數(shù)據(jù),需從SAP系統(tǒng)中導(dǎo)出一系列財(cái)務(wù)數(shù)據(jù)庫表。下面僅以總賬科目行項(xiàng)目明細(xì)數(shù)據(jù)的抽取為例進(jìn)行簡要分析。
總賬科目行項(xiàng)目明細(xì)應(yīng)根據(jù)公司代碼、會計(jì)年度和科目編號取出所需字段內(nèi)容。這部分內(nèi)容又分為憑證抬頭信息和憑證行項(xiàng)目信息2個(gè)子類。憑證抬頭信息需從財(cái)務(wù)憑證抬頭表中讀取公司代碼、會計(jì)年度、憑證日期和記賬日期等信息;憑證行項(xiàng)目信息在已取得的財(cái)務(wù)憑證抬頭表相關(guān)字段信息的基礎(chǔ)上,從財(cái)務(wù)憑證行項(xiàng)目表中獲取對應(yīng)的公司代碼、會計(jì)年度、科目編碼、記賬碼、本幣金額、憑證貨幣金額、成本中心和客戶供應(yīng)商編碼等一系列所需字段。
1.5.2 數(shù)據(jù)傳遞
為能將已讀取的數(shù)據(jù)發(fā)送給平臺,需設(shè)計(jì)數(shù)據(jù)發(fā)送和接收程序,舊SAP系統(tǒng)通過編寫ABAP(Advanced Business Application Programming)程序發(fā)起數(shù)據(jù)傳輸,將數(shù)據(jù)發(fā)送給平臺的中間表,平臺讀取中間表中的數(shù)據(jù)。為便于各單位進(jìn)行權(quán)限控制,平臺需支持多用戶賬號,通過界面上的公司代碼和數(shù)據(jù)版本的選擇實(shí)現(xiàn)數(shù)據(jù)提取。
1.5.3 數(shù)據(jù)轉(zhuǎn)換
考慮到業(yè)務(wù)數(shù)據(jù)量可能會很大,提升數(shù)據(jù)轉(zhuǎn)換的自動化水平和準(zhǔn)確性非常重要。因此,平臺設(shè)計(jì)有數(shù)據(jù)規(guī)則對應(yīng)表,以根據(jù)用戶的需求和任務(wù)單元實(shí)現(xiàn)對源數(shù)據(jù)的抽取、清洗和轉(zhuǎn)換,同時(shí)要求對數(shù)據(jù)抽取過程中出現(xiàn)的異常情況進(jìn)行監(jiān)控,盡可能地減少冗余數(shù)據(jù),保證數(shù)據(jù)加載的準(zhǔn)確性[3]。
平臺需對新舊系統(tǒng)的主數(shù)據(jù)進(jìn)行匹配,根據(jù)數(shù)據(jù)版本、科目類型和匹配類型等條件對數(shù)據(jù)進(jìn)行分類,做到能自動轉(zhuǎn)換的數(shù)據(jù)由程序直接按相應(yīng)的規(guī)則自動處理,無法自動轉(zhuǎn)換的數(shù)據(jù)推送給用戶界面,由用戶人工處理。平臺數(shù)據(jù)映射示例見圖4。
用戶拆分完數(shù)據(jù)之后,平臺對這部分?jǐn)?shù)據(jù)和自動轉(zhuǎn)換的數(shù)據(jù)進(jìn)行自動翻新,隨后對這些數(shù)據(jù)進(jìn)行核對,檢查用戶輸入的主數(shù)據(jù)是否規(guī)范(如是否存在編碼錯(cuò)誤、位數(shù)缺少和數(shù)據(jù)格式無效等情況),以及是否存在未上報(bào)的數(shù)據(jù)造成業(yè)務(wù)數(shù)據(jù)缺失。初步確認(rèn)數(shù)據(jù)無誤之后,平臺會將其推送給新SAP系統(tǒng),并生成期初數(shù)據(jù)憑證,同時(shí)在日志表中做記錄。
1.5.4 數(shù)據(jù)核對及調(diào)整
新系統(tǒng)中的憑證生成之后,需對新舊科目的余額進(jìn)行核對,若核對失敗,平臺會針對這部分?jǐn)?shù)據(jù),通過日志表中的記錄,按數(shù)據(jù)處理流程的倒序追溯金額。
1) 維度查詢:用戶可在平臺上查詢科目與輔助字段之間的映射關(guān)系。
2) 校驗(yàn)機(jī)制:用戶在進(jìn)行數(shù)據(jù)拆分時(shí),觸發(fā)SAP系統(tǒng)的各種校驗(yàn)機(jī)制,例如對字段必輸、開戶行與賬戶標(biāo)識是否匹配和客商編碼在系統(tǒng)中是否存在等進(jìn)行校驗(yàn)。
3) 余額校驗(yàn):在數(shù)據(jù)拆分之前、拆分過程中和拆分完成之后,對科目余額進(jìn)行校驗(yàn)。
4) 沖銷機(jī)制:對于已傳輸給SAP的已拆分?jǐn)?shù)據(jù),若用戶發(fā)現(xiàn)其存在錯(cuò)誤,則可在平臺上點(diǎn)擊“退回”按鈕,系統(tǒng)自動將SAP已生成的憑證沖銷,并將數(shù)據(jù)退回到待處理狀態(tài)。
5) 權(quán)限控制:歷史數(shù)據(jù)轉(zhuǎn)換平臺可對公司的權(quán)限進(jìn)行控制。
6) 自動翻新:對于滿足條件的科目,通過自動翻新維度系統(tǒng)自動進(jìn)行數(shù)據(jù)翻新。
以某集團(tuán)型企業(yè)的SAP遷移項(xiàng)目為例進(jìn)行分析。該項(xiàng)目涉及的公司有360余家,實(shí)施難點(diǎn)及解決方案如下:
1) 涉及的模塊眾多,包括總賬、往來交易、資產(chǎn)、貸款、分銷和數(shù)據(jù)倉庫等,需對各模塊進(jìn)行期初數(shù)據(jù)準(zhǔn)備、發(fā)生額數(shù)據(jù)準(zhǔn)備和往來數(shù)據(jù)清理;
2) 在進(jìn)行機(jī)構(gòu)改革的同時(shí),需對多個(gè)外圍系統(tǒng)及接口進(jìn)行升級改造,因此很多業(yè)務(wù)的核算模式會發(fā)生變化,不同科目核算的顆粒度也有不同的細(xì)化程度;
3) 用戶要求以2020年12月31日為期初數(shù)據(jù)時(shí)點(diǎn),將2021年1月—6月的全部明細(xì)數(shù)據(jù)(共1.5億條行項(xiàng)目)批量導(dǎo)入系統(tǒng)中,2021年7月1日系統(tǒng)正式上線,數(shù)據(jù)切換復(fù)雜度高,數(shù)據(jù)量大。
圖5為平臺批處理科目管理界面,下面就其中的若干字段進(jìn)行簡單說明。

圖5 平臺批處理科目管理界面
1) 版本:期初上線切換時(shí)點(diǎn),如1231、0630。不同版本的科目數(shù)據(jù)會以不同的模式導(dǎo)入系統(tǒng)中,如1231版本的科目數(shù)據(jù)以余額的形式導(dǎo)入系統(tǒng)中,0630版本的科目數(shù)據(jù)以行規(guī)項(xiàng)目明細(xì)的形式導(dǎo)入系統(tǒng)中。
2) 類型:新科目的分類,用于處理平臺數(shù)據(jù),如現(xiàn)金銀行類數(shù)據(jù)、往來類數(shù)據(jù)和損益類數(shù)據(jù)等。
3) 映射類型:包括一對一(OO)、一對多(OM)和多對一(MO)。
4) 計(jì)算類型:包括自動數(shù)據(jù)自動翻新(A)、用戶人工處理(Y)和不處理(N)。
5) 合計(jì)字段:平臺在處理數(shù)據(jù)時(shí)從哪些會計(jì)核算維度進(jìn)行小計(jì)。
6) 拆分字段:需用戶人工補(bǔ)充或拆分的字段。
7) 開戶行、賬戶標(biāo)識:銀行科目必輸字段。
輔助核算字段查詢:在拆分?jǐn)?shù)據(jù)時(shí),方便用戶對輔助字段的映射關(guān)系進(jìn)行查詢。用戶可在平臺上檢查輔助字段映射關(guān)系的正確性,提升用戶人工拆分的效率,見圖6。

圖6 平臺輔助核算字段查詢界面
用戶在進(jìn)行數(shù)據(jù)核對和處理時(shí),既可直接在平臺上勾選并下載需人工拆分的數(shù)據(jù)到Excel中,拆分完成之后再上傳,又可在線處理當(dāng)前選中行項(xiàng)目明細(xì)。此外,平臺還提供追溯功能,能查詢當(dāng)前合并的行數(shù)據(jù)是從哪些原始數(shù)據(jù)行合計(jì)得來的。
平臺總賬科目批量處理界面見圖7。

圖7 平臺總賬科目批量處理界面
在數(shù)據(jù)處理完成之后,可通過平臺直接導(dǎo)出新的科目余額表,方便與舊系統(tǒng)進(jìn)行核對。圖8為平臺科目余額核對界面。

圖8 平臺科目余額核對界面
由于該項(xiàng)目涉及的公司數(shù)量和業(yè)務(wù)憑證行項(xiàng)目數(shù)量較多,為保證正式系統(tǒng)數(shù)據(jù)的準(zhǔn)確性,在將數(shù)據(jù)傳輸給正式系統(tǒng)之前,需在質(zhì)檢系統(tǒng)中對其進(jìn)行核對驗(yàn)證,因此為平臺新增目標(biāo)系統(tǒng)版本控制功能,使用戶在調(diào)整質(zhì)檢系統(tǒng)數(shù)據(jù)時(shí)不影響已導(dǎo)入正式系統(tǒng)中的其他數(shù)據(jù)。
對于需精確至賬齡日期的往來未清項(xiàng),平臺中的數(shù)據(jù)能根據(jù)原始財(cái)務(wù)系統(tǒng)數(shù)據(jù)的更新不斷更新,保證數(shù)據(jù)的有效性和可靠性。
對于已傳輸給SAP的已拆分?jǐn)?shù)據(jù),若用戶發(fā)現(xiàn)其存在錯(cuò)誤,則可在平臺上點(diǎn)擊“退回”按鈕,系統(tǒng)自動將SAP已生成的憑證沖銷,并將數(shù)據(jù)退回到待處理狀態(tài),減少跨系統(tǒng)操作的步驟,提高用戶友好度。圖9為版本控制示意圖。

圖9 版本控制示意圖
該數(shù)據(jù)轉(zhuǎn)換平臺統(tǒng)一了360余家公司的數(shù)據(jù)標(biāo)準(zhǔn),便于核查數(shù)據(jù),減少人為錯(cuò)誤,提升數(shù)據(jù)處理效率。與SAP系統(tǒng)內(nèi)置的數(shù)據(jù)批導(dǎo)程序相比,該平臺具有以下3個(gè)特性:
1) 數(shù)據(jù)處理的高效性,能實(shí)現(xiàn)對億級數(shù)量數(shù)據(jù)的流暢處理;
2) 字段轉(zhuǎn)換的準(zhǔn)確性,能滿足會計(jì)核算變化情況下各核算字段映射結(jié)果的準(zhǔn)確性要求;
3) 用戶操作的友好性,能簡化用戶操作,提升人機(jī)交互的便捷度,進(jìn)而提高用戶的滿意度。
本文通過對SAP遷移項(xiàng)目中常見的數(shù)據(jù)問題和SAP系統(tǒng)預(yù)置的批導(dǎo)程序進(jìn)行分析,針對用戶關(guān)心的若干數(shù)據(jù)處理問題,提出了基于Java的通用數(shù)據(jù)轉(zhuǎn)換平臺設(shè)計(jì)方案,并通過實(shí)際項(xiàng)目的實(shí)施驗(yàn)證了該平臺的可靠性。
采用基于該通用型數(shù)據(jù)轉(zhuǎn)換平臺框架的系統(tǒng)數(shù)據(jù)遷移解決方案,能將舊SAP系統(tǒng)中不同科目的數(shù)據(jù)處理工作整合起來,在保證數(shù)據(jù)的準(zhǔn)確性滿足要求的同時(shí),對用戶的操作過程進(jìn)行簡化,避免人力浪費(fèi),保證數(shù)據(jù)遷移的質(zhì)量和效率。在搭建平臺過程中進(jìn)行了新舊數(shù)據(jù)標(biāo)準(zhǔn)制定、數(shù)據(jù)集成和應(yīng)用集成等,使其更具開發(fā)性和集成度,為高效、快速地實(shí)現(xiàn)海量數(shù)據(jù)由舊系統(tǒng)向新系統(tǒng)轉(zhuǎn)換提供了一種有效方案。