前言
很多大牛說SAP設計精妙,換言之就是配置起來可以靈活的應對各種業務情況。搞過軟件開發的同學應該都知道,靈活的架構設計往往是透過解耦來實作的,就像搭積木,積木塊越多,能搭出來的形狀就越多。
SAP如此精妙,積木數量一定是那些個專家深思熟慮的結果,多一塊少一塊都不妙。自學SAP以來我就發現,它裏面有很多Type、Group、Category之類的東東,就好像這次要說的自動科目確定(Automatic Account Determination)的過程中,Type、Group、Category一個都沒落下。這次的自動科目確定比前面兩篇文章中的編號範圍、欄位選擇那是復雜多了,這麽復雜的主題,一篇文章肯定是理不清的,我打算盡力多水幾篇,向靈活的SAP設計致敬。
什麽是自動科目確定(Automatic Account Determination)?
這裏很好理解,企業管理中涉及到物料的錢和數量方面的變化都需要記賬。所謂自動科目確定,以下圖為例,就比如收到貨物需要記賬的時候,SAP能夠透過自動科目確定(Automatic Account Determination)自動匹配好相關的會計科目幫使用者把賬給記好。
SAP是如何進行自動科目確定(Automatic Account Determination)的?
上圖中那個箭頭,SAP內部進行了一系列的匹配才最終為收到貨物這項業務找到對應的會計科目。綜合網絡上各國大牛的意見,我覺得最終的自動科目確定是和下圖中的4個因素相關的:
為什麽說是這4個因素?請參看下圖和Automatic Account Determination相關的設定畫面,從該畫面可以看出 ❶ Transaction key透過 ❷ Valuation class和最終的 ❸ Account就是科目關聯起來了。只是這裏為什麽4個因素只出現了2個( ❶ 和 ❷ )?且聽我慢慢道來...
什麽是評估類(Valuation class),用來幹嘛?
首先登場的當然是我上篇文章【思愛普(SAP)真難之大神幫我來解惑之搞懂物料主數據的欄位選擇】中的大冤種Valuation class,就是它促成了我寫這篇文章。和它相關的設定畫面參照下圖。可以看到系統將它和物料類別(Material Type)關聯起來了。請參考我上一篇文章,每次在新建物料的時候,新物料的Accounting 1這個View裏面的Valuation class都是必填的,如果新物料對應的Material Type有多個對應的Valuation class,那麽在填寫新物料的Valuation class的時候系統就會彈出小畫面讓你從多個裏面選擇一個供這個物料使用。N個Material Type可以對應N個Valuation class,為了增加靈活性,SAP在它們中間加了一層叫做Account Category Reference,因為每個Material Type和Valuation class都只能設定一個Account Category Reference,於是這3者的關系就成了Material Type : Account Categroy Reference : Valuation class = N : 1 : N。
什麽是評估分組程式碼(Valuation Grouping Code),用來幹嘛?
圖3中Valuation Grouping Code並沒有出現,但是圖3中出現了科目表(Chart of Accounts)。科目都是屬於某一個科目表的,而如下圖所示,科目表都是掛到某一個具體的Valuation Area(其實就是Plant,SAP推薦以Plant為單位設定Valuation Area,很多網文都有涉及,本篇不做贅述)。如果某幾個Plant使用相同的科目匹配,那麽可以把這幾個Plant透過Valuation Grouping Code分到一起,那麽SAP內部儲存數據的時候,在某個表裏面只需要將科目對應到Valuation Grouping Code就行了,不用對應到具體的Plant(萬一有集團選擇按照Company Code為單位設定Valuaton Area,還需要考慮對應到具體的Company Code,加了一層Valuation Grouping Code,換來了更靈活的儲存架構...)。
什麽是事務碼(Transaction key),用來幹嘛?
事務碼(Transaction key)用來代表具體的某個業務,這個具體的某個業務最後透過匹配關系找到對應的會計科目就是自動科目確定的最終目的。但其實還有一個科目分組(Account Grouping),具體參加下圖。當某個業務發生的時候,SAP內部是透過移動類別(Movement Type)來多次觸發直到找到最終的Transaction key(下圖的Tran. /event key)的,然後由Transaction key透過圖3匹配到具體科目。據我觀察,Account Grouping應該就是下圖的Value String,每個Value String會對應1個或者幾個Transaction key。
什麽是科目修改(Account Modifier),用來幹嘛?
我們可以看到圖6中只有科目修改(Account Modifier)是可以設定的,那是因為SAP將Value String和Trans. /event key以及它們的關系都寫死了,使用者想要自己再發揮一下的話,那只有透過科目修改來完成了。相應的,圖3中如果選擇的Transaction key有對應的科目修改的話,可以為科目修改設定專門的對應科目。
後記
至此理論篇結束,歡迎有緣人批評指正。後面暫時想到會先來一個實踐篇,有可能還能再水一個設定篇,容我考慮考慮先...