摘 要: SAP系統後勤和财務模塊高度集成,後勤模塊基于不同場景的價值串計算實現了自動記賬功能,其中采購訂單收貨通過不同記賬事務(如BSX-存貨記帳、WRX-已收貨物/已收發票清算科目、PRD-成本價格差額)的價值評估确定了會計分錄的價值,同時也确定了庫存原材料的價值更新。本文主要研究了采購訂單收貨中記賬事務的價值評估算法,為國内進銷存軟件或者其他ERP産品的研發提供一種算法參考。
關鍵詞: SAP;價值評估;自動記賬;采購訂單收貨;
引言
SAP全稱是Systems Applications and Products in Data Processing,SAP是一套标準而又全面的ERP軟件,同時包含有銷售、生産的計劃、質量的管理、辦公室及通信、項目系統、工廠的維修、資産的管理及控制、會計企業的管理等許多領域,在每個管理領域中,SAP又将這些領域進一步細分成單一的模塊,例如财務會計中的模塊包含有總賬模塊、應付款模塊、應收款模塊、金融投資模塊、财務控制模塊、報表模塊及基金管理等許多子模塊,這些子模塊的結構保證了數據能夠單獨處理的特殊要求。SAP系統中的生産經營模型架構更是可以按企業的實際需要劃分為訂單生産、合同生産、複雜的生産、批量生産、庫存生産。SAP目前應用于許多行業領域,主要分布在石油石化、汽車、航空、消費品、制造業、電器、電子、食品醫療等行業。截止到2018年,在中國使用SAP的企業已經超過300多家,其中不乏許多龍頭行業,例如:中國石油、中國石化、海爾集團、聯想集團、一汽大衆、長虹、體育用品的李甯、萬科、上海通用、大唐電信、富士康、保潔集團等許多知名企業[1]。
術語解釋 采購訂單(Purchasing order):企業根據産品的用料計劃和實際能力以及相關的因素,所制定的切實可行的采購訂單計劃,并下達至供應商執行,在執行的過程中要注意對訂單進行跟蹤,以使企業能從采購環境中購買到企業所需的商品,為生産部門和需求部門輸送合格的原材料和配件。
會計憑證(Accounting Documents):記錄經濟業務發生或者完成情況的書面證明,是登記賬簿的依據。每個企業都必須按一定的程序填制和審核會計憑證,根據審核無誤的會計憑證進行賬簿登記,如實反映企業的經濟業務。
物料憑證(Material Document):對物料活動的一個記錄編号,比如收貨、發料、移庫等涉及物料移動的活動,都會有唯一對應的物料憑證号存在。
價值串(value string):定義了一系列的步驟優先順序,每一個步驟都連接到不同的過賬事務碼,而這個順序本身就稱作價值串,在我們進行了物料移動或者發票校驗後,并不是直接抛到某一具體的科目中去,而是根據移動類型或者發票校驗,連接到相應的價值串,通過價值串,再連接到相應的事務碼(賬戶組),移動類型對應的價值串無法修改,包含所有可能發生的事務碼,是确定物料移動科目分配的關鍵點,如WE01等[2]。
記賬事務(交易碼 transaction code):指的是對應的科目類(即OBYC中的事務),SAP系統使用TE碼來确定生成過帳行的科目,每個物料交易都涉及到交易碼,比如發料,至少涉及存貨記帳交易碼BSX,表示材料的增減,另外至少涉及各種類型材料消耗科目,如果材料采用标準價格,多數情況下還涉及差異科目,這些都是通過交易碼确定。BSX庫存記賬/存貨記賬原材料、庫存商品等;PRD價差科目;KDM物料管理彙率差異有外币業務的時候,彙率變更差生的差異;UMB來自重估損益庫存重估差異,當MR21修改過物料價格後,會将差異金額計入;GBB庫存記賬的沖銷科目,使用移動類型261有關訂單的發貨時,庫存減少;WRX 即GR/IR科目(已收貨物/已收發票清算科目)[2]。
物料評估 (Material evaluation) :物料評估用于核算企業生産經營過程中采購、消耗及庫存價值,主要通過評估範圍(Valuation Area)、評估分類(Valuation Category)、評估類型(Valuation Class)等實現物料價值評估。
---------------------------------
作者簡介:趙建濤(1985-),男,本科,主要研究SAP系統實施及二次開發
采購訂單收貨簡介
在SAP系統中采購訂單收貨主要通過事物碼MIGO來實現,用戶前台輸入采購訂單号、過賬日期、收貨數量、庫存地點,執行過賬即可完成,系統會根據用戶輸入的内容生成相應的物料憑證和會計憑證,物料憑證記錄物料的移動情況,會計憑證則是财務記賬,會計憑證分錄由記賬事務(BSX-存貨記帳、WRX-已收貨物/已收發票清算科目、PRD-成本價格差額)的評估價值和運費項目組成,運費項目是固定的,不受業務操作及庫存情況的影響,記賬事務價值評估則因情況不同而變化較大,采購訂單收貨模型如圖1所示,其核心就是本文主要研究記賬事務的價值評估。
圖1采購訂單收貨簡易模型
價值評估WRX價值評估 定義we_re_menge = 已收貨數量 – 已發票校驗數量;
定義we_re_wert = 已收貨價值 – 已發票校驗價值;
當系統在基于收貨的發票校驗情況下,we_re_menge = 0,we_re_wert = 0,反之則按照公式正常運算。
rewrt = 已發票校驗的價值;
remng = 已發票校驗的數量;
bsmng = 采購訂單的數量;
betrag 中間變量,用于計算價值;
vwere 代表WRX評估金額的最終結果;
正向業務時(收貨,移動類型101)
當we_re_menge 大于 0,
如果bsmng不等于0,即采購訂單的數量不等于0時,
betrag = 本次錄入的收貨數量 * 采購訂單淨值 / 采購訂單數量;
如果bsmng等于0,即采購訂單的數量等于0時,
betrag = 0.
當we_re_menge小于等于0,
定義refe1 = 本次收貨數量 we_re_menge;
如果refe1 大于0,代表本次收貨評估來源于兩部分,采購訂單和已開發票,采購訂單部分為:betrag = refe1 * 采購訂單淨值 / 采購訂單數量;發票部分為:we_re_wert = 已收貨價值 – 已發票校驗價值;betrag = betrag - we_re_wert.(因為此種條件下,we_re_menge和we_re_wert均為負值,相減即絕對值相加的意思);
如果refe1小于等于0,代表本次收貨評估來源于發票,
betrag = 本次錄入的收貨數量 *we_re_wert/we_re_menge
換句話說,就是評估金額等于本次錄入的收貨數量 *
發票上的單價;
以上情況完成後,将中間變量betrag賦值給最終評估結果,即 vwere = betrag。
反向業務時(收貨沖銷,移動類型102)
當we_re_menge 大于 0,
定義refe1 = we_re_menge – 本次錄入的沖銷數量。
如果refe1等于0,代表本次沖銷評估完全來源于已收貨未發票校驗的部分,并且兩者數量相同,betrag = we_re_wert;
如果refe1大于0,代表本次沖銷評估完全來源于已收貨未發票校驗的部分,且沖銷數量小于已收貨未發票校驗的數量,故betrag = 本次錄入的沖銷數量 * we_re_wert / we_re_menge;
如果refe1小于0,代表本次沖銷評估來源于兩部分,已收貨未發票校驗和已發票校驗,前者數量小于本次沖銷數量,不能完全支持本次沖銷評估,故betrag = refe1 * 已發票校驗的價值 / 已發票校驗的數量 we_re_wert;
當we_re_menge小于等于0,代表本次沖銷評估完全來源于發票,betrag = 本次錄入的沖銷數量 * 發票校驗價值 / 發票校驗數量;
以上情況完成後,将中間變量betrag賦值給最終評估結果,即 vwere = betrag。
BSX價值評估 前提步驟3.1已經計算出了WRX的價值vwere,
定義exwrt = vwere(WRX的計算金額) fracht(運費,交貨費用) lbwert(委外加工費);
lbkum = 庫存量
salk3 = 庫存價值
betrag 中間變量,保存金額臨時結果;
bestd 最終BSX的計算結果;
BSX價值計算分為移動平均價和标準價兩種大情況,分别介紹如下:
移動平均價:
借貸标識為H時,即反向業務情況,
如果庫存量小于0,即負庫存的情況,則
betrag = 本次錄入的沖銷數量 * 庫存價值 / 庫存量
例如 庫存量為 -5,庫存價值為 -10,本次沖銷數量為 3,則評估金額為 3*(-10) / (-5) = 6;
如果庫存量等于0,則betrag = exwrt,即該種情況BSX與庫存無關;
如果庫存量大于本次沖銷量,庫存價值大于等于本次沖銷評估價值,則betrag = exwrt,該種情況BSX計算與庫存無關,以評估為準;
如果庫存量大于等于本次沖銷量,庫存價值小于本次沖銷評估價值,則betrag = salk3,該種情況BSX的價值等于當前庫存價值;
如果同時不滿足上述4種情況,說明沖銷BSX計算來源于兩部分,采購訂單WRX評估結果和庫存,此種情況下定義rmenge = 本次錄入沖銷數量 – 庫存量;
差值rmenge來源于評估,其他來源于庫存,即
betrag = rmenge * exwrt(本次沖銷數量的價值評估) / 本次錄入的沖銷數量 salk3(庫存價值)。
以上情況完成後,将中間變量betrag賦值給最終評估結果,即 bestd = betrag。
借貸标識為S時,即正向業務情況
定義rmenge = 本次收貨數量 lbkum(當前庫存量);
定義rexwrt = exwrt(本次評估金額) salk3(當前庫存價值);
當前庫存量lbkum小于0,rmenge小于0時,即負庫存量的絕對值大于收貨數量,betrag = 本次收貨數量 * 庫存價值 / 庫存數量;
當前庫存量lbkum小于0,rmenge等于0時,即負庫存量的絕對值等于收貨數量,betrag = 0 - 庫存價值 ;
當前庫存量lbkum小于0,rmenge大于0時,即負庫存量的絕對值小于收貨數量,betrag = rmenge * exwrt(評估金額)/ 本次收貨數量 ( 0 – 庫存價值);
當前庫存量lbkum大于等于0時,betrag = exwrt(評估金額);
以上情況完成後,将中間變量betrag賦值給最終評估結果,即 bestd = betrag。
标準價:
借貸标識為H時,即反向業務情況
如果庫存量lbkum大于等于本次沖銷數量,betrag = 本次沖銷數量 * 當前庫存價值/ 當前庫存量;
如果庫存量lbkum小于0,即負庫存時,betrag = 本次沖銷數量 * 物料的标準價;
如果上述兩個條件都不滿足,即庫存量lbkum大于等于0且庫存量lbkum小于本次沖銷數量,該情況沖銷來源于兩部分:定義rmenge = 本次沖銷數量 – 當前庫存量;betrag = rmenge * 物料的标準價 當前庫存價值;
以上情況完成後,将中間變量betrag賦值給最終評估結果,即 bestd = betrag。
借貸标識為S時,即正向業務情況
定義rmenge = 本次收貨數量 當前庫存量,
如果當前庫存量大于等于0,則betrag = 本次收貨數量 * 物料的标準價;
如果rmenge小于等于0,即當前庫存量為負且庫存量絕對值大于等于本次收貨數,則betrag = 本次收貨數量 * 當前庫存價值 / 當前庫存量;
如果不滿足上面兩種情況,說明庫存量為負且庫存量絕對值小于本次收貨數量,BSX的價值計算來源于兩部分,則
betrag = rmenge * 物料的标準價 – salk3(當前庫存價值為負,相減表示絕對值相加);
以上情況完成後,将中間變量betrag賦值給最終評估結果,即 bestd = betrag
PRD價值評估 前提是WRX的價值vwere 和 BSX的價值bestd已經計算完畢,prdif表示差異PRD的計算結果,則 prdif = fracht(交貨費用)- vwere – bestd -kudif -kudif_bnk;計算結果如果為正,則說明借貸标識為S,如果為負則借貸标識為H且反記賬,其中kudif、kudif_bnk與彙率差異有關,如果不存在彙率轉換,可以忽略;
結束語
SAP系統采購訂單收貨場景的價值評估方法是一套嚴謹的邏輯算法,适合于各行業并且在實踐中得到驗證,通用進銷存軟件或者其他ERP産品研發均可借鑒,對軟件研發具有很高的參考價值,後續将繼續對SAP系統自動記賬原理進行剖析,進一步研究SAP其他業務場景的核心算法。
參考文獻:
[1] 段大為. SAP實施大全[M].2012
[2] Kerwin-G. SAP-MM自動記賬解析之功能實現.2017, CSDN:htt
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!