ERP軟件是提升企業(yè)管理效率極具威力的工具,目前國內(nèi)許多企業(yè)都在準備采用ERP軟件。筆者通過自己的實際應(yīng)用和設(shè)計經(jīng)驗,介紹一種實用的ERP核心算法,適合國內(nèi)中小規(guī)模企業(yè)(3000人以下企業(yè))的使用。
ERP軟件的核心
ERP就是企業(yè)資源管理,它的前身是MRP,即物料需求管理,MRP最早應(yīng)用于生產(chǎn)制造企業(yè),生產(chǎn)制造企業(yè)收到各種各樣的訂單時,單憑手工和經(jīng)驗往往不能很好地解決這樣一個問題: 手頭物料夠不夠用?什么時候需要采購什么物料?采購量為多少合適?而MRP可以很好地計算出物料需求,從而幫助企業(yè)管理人員做好物料的采購準備工作,既能保證生產(chǎn)不缺料,又不會積壓大量的庫存。物的流動與積壓往往伴隨著資金的流動與積壓,所以后來MRP中加進了財務(wù)模塊,在財務(wù)上對物流與庫存進行有效的管理,這就是MRPII,即第二代的MRP。將MRP管理的思想發(fā)揮得最為極至的當數(shù)日本的豐田汽車公司,豐田倡導(dǎo)的“零庫存”,“JIT”(及時供應(yīng))的先進管理概念在世界上備受推崇。零庫存就是要盡可能地降低庫存,因為任何庫存都意味著資金的積壓。而JIT(及時供應(yīng))就是說企業(yè)在最恰當?shù)臅r候收到恰當?shù)奈锪,既不缺料,也不會積壓。
現(xiàn)代企業(yè)的客戶和供應(yīng)商的地域范圍都大大擴展了,不少企業(yè)在全國乃至全世界范圍進行銷售和采購,這樣物料流動的成本是很高的。對此筆者就有切身的體會,筆者幾年前在廣東一家外資企業(yè)做生產(chǎn)管理工作,有一次接到一張重要的訂單,開始生產(chǎn)后才發(fā)現(xiàn),生產(chǎn)過程必需的銅線很快就要斷料了,這種銅線是我國臺灣省供應(yīng)的,平常都提前幾個月大批訂貨,從臺灣海運過來。為了讓生產(chǎn)線不停工(生產(chǎn)線停工的成本也很高的),只好讓臺灣的供應(yīng)商馬上空運(經(jīng)香港中轉(zhuǎn))幾軸銅線過來應(yīng)急,這樣平白多花了近萬元的空運費。
當前,制造企業(yè)面臨著更大的挑戰(zhàn),因為個性化的時代需求意味著更多的款式,更小的批量,這樣在物料的采購和生產(chǎn)的管理上難度都比大批量的制造難得多。十年八年不變地只生產(chǎn)單一的產(chǎn)品已經(jīng)成為歷史,現(xiàn)在就算比競爭對手慢一步推出新產(chǎn)品也會給企業(yè)帶來不少損失。如在中國移動通信市場上,摩托羅拉的大塊頭模擬手機曾經(jīng)獨步天下,風(fēng)光一時,后來愛立信公司推出了小巧玲瓏的數(shù)字手機,一下子成為了市場的寵兒,后來幾年,愛立信公司的手機款式一直沒有多少改變,而諾基亞卻不斷地推出新潮的款式,得到市場的認可,迅速成為手機市場的新寵。
MRPII確實極大地幫助了企業(yè)應(yīng)付這些挑戰(zhàn),不過它自己也需要變革以應(yīng)付更多的挑戰(zhàn)。企業(yè)的管理主要包括:人(人力資源)、財(資金)、物(物料、產(chǎn)品和機器設(shè)備、廠房等),MRPII軟件的管理范圍還沒有包括全部企業(yè)管理資源。ERP軟件進一步擴大了MRPII軟件的管理范圍,它把MRP中“物”的范疇擴大到企業(yè)所有可管理的資源,如人力資源,機器設(shè)備能力等等。
ERP最核心的功能是幫助企業(yè)管理好可用資源,這其中最重要的當然還是財(資金)、物(物料、產(chǎn)品)。
物料清單(BOM)
所有的ERP軟件都離不開物料清單(BOM),BOM是所有ERP運算的基礎(chǔ),對資源的管理就是在BOM的基礎(chǔ)上做BOM的展開運算。BOM是產(chǎn)品的配方,它列出制造某一種產(chǎn)品所需要的所有物料的清單。每個企業(yè)生產(chǎn)的產(chǎn)品不同,所用的材料不同,因而BOM是不同的。ERP軟件能否成功實施,在很大程度上取決于能否整理出本企業(yè)的一個準確的BOM。在整理BOM時,需要分輕重,次要的無關(guān)緊要的物料可以不包括進去,這樣就能抓住關(guān)鍵。
當有了一個產(chǎn)品配方在手時,就幾乎等于擁有了解決企業(yè)資源管理問題的金鑰匙,這樣當收到了訂單,或是按銷售預(yù)測制定了生產(chǎn)計劃后,就能計算反推出: 手頭物料夠不夠用?什么時候需要采購什么物料?采購量為多少合適?在ERP軟件中,“物”的范疇擴大到企業(yè)所有可管理的資源,如人力資源、機器設(shè)備能力等等,這樣就能計算反推出:手頭人力資源、機器設(shè)備能力夠不夠用?資金夠不夠用?能不能接這張訂單?什么時候需要什么資源?多少量最合適?在ERP軟件中,產(chǎn)品配方中也可以包括制造某一種產(chǎn)品所需要的人力資源、機器設(shè)備能力、資金等資源的清單。從這里也可以看出,在工程項目管理上,ERP也可以大展身手。所以說準備好本企業(yè)的一個準確的BOM已經(jīng)成功了一半了。
不同的ERP系統(tǒng)采用不同的BOM存儲結(jié)構(gòu),本文介紹的算法采用單層BOM存儲結(jié)構(gòu),它的好處是簡單、易用、擴展性好,可以實現(xiàn)無限的層次。圖1是一個簡單的BOM結(jié)構(gòu)示意圖。
這樣的結(jié)構(gòu)的另一個優(yōu)點是BOM表的輸入與維護相當容易,用戶用Excel就可以準備BOM表了,比較方便。材料用量和材料提前準備日數(shù)是BOM的兩個重要參數(shù),它們分別從量和時間上控制實現(xiàn)“零庫存”、“JIT”(及時供應(yīng))的最高目標。
有一點要注意到的是,現(xiàn)在所說的產(chǎn)品、材料是包括了所有資源的,而且產(chǎn)品與材料之間只是相對而言的。這樣所有的資源(產(chǎn)品、物料及其他資源)都放到了一個數(shù)據(jù)庫中,簡化了管理,這也是ERP 帶來的新概念。這樣企業(yè)的BOM核心部分只有兩個數(shù)據(jù)庫,一個是資源庫,它包括了所有的資源(產(chǎn)品、物料及其他資源);另外一個就是材料構(gòu)成表(BOM)。這樣的好處在于:利用BOM做展開時就相當方便了,可以方便地擴展應(yīng)用的范圍,從基本的物料需求,到人力、機器設(shè)備等其他資源,再到資金、項目進度管理,而惟一需要做的就是將它們放到資源庫里,所以這種結(jié)構(gòu)能充分地展示ERP的優(yōu)點。
本算法采用單層BOM存儲結(jié)構(gòu)的另外一個好處是:用戶使用中很方便,不需要對資源(產(chǎn)品、物料及其他資源)做任何特別編碼,也不需要理會層次的問題。這使得ERP的實施變得更簡單,原來可能要花幾個月甚至大半年來準備BOM,現(xiàn)在只要一兩周可能已足夠了。這對許多中國企業(yè)來說可能是非常重要的,因為資金雄厚的歐美大企業(yè)可以花上1~2年時間實施ERP系統(tǒng),而許多中國企業(yè)整天都面臨著生存發(fā)展的嚴峻問題,它們更需要快速的立桿見影的東西來提升自己的競爭力。
這種結(jié)構(gòu)的另外一個優(yōu)點是能夠比較好地處理替代件問題。替代件問題是困繞MRP/ERP的老大難問題,當一個產(chǎn)品的生產(chǎn)既可以用A部件,也可以用B、C、D等部件時,電腦處理起來就會很費勁。而采用單一資源庫以后,可以將替代件歸類為一個虛擬類,并建立一個類,而BOM只引用該類。
同樣,采用單一結(jié)構(gòu)還能很好地簡化BOM表,因為在許多企業(yè),如鞋廠,不同尺碼的鞋的BOM 差別往往在用量的多少,按比例地增加或減少,或大部分是相同的,而差別只在一兩樣配件上。單一結(jié)構(gòu)就能很容易實現(xiàn)虛擬中間件,如一個鞋廠有10000種款式,每種鞋的物料有50種,如果單純的相乘,就是10000×50 =500000種物料配方,而將各種款式分類后,通過增加一些虛擬中間件后,如A款鞋公用件,那么最終需要的物料配方可能不到20000就足夠了,給實際應(yīng)用和計算帶來很大方便。
展開計算的核心算法
當BOM準備好以后,就可以進行ERP展開計算了,這里介紹一種展開算法。
算法的具體實現(xiàn)步驟是:
1. 清空臨時數(shù)據(jù)庫;
2. 從客戶訂單數(shù)據(jù)庫讀入實際訂單或銷售預(yù)測,插入到臨時數(shù)據(jù)庫中,這就是待展開的需求;
3. 從臨時數(shù)據(jù)庫讀出需求,同時讀取材料構(gòu)成表(BOM)中相應(yīng)的物料需求項,并插入到臨時數(shù)據(jù)庫中,這就是展開的子層需求;
4. 重復(fù)3,直到算完所有的層,或者算到用戶指定的層(應(yīng)該允許用戶選擇,特別是當層次數(shù)很多時);
5. 從庫存數(shù)據(jù)庫讀入手頭的庫存量,插入到臨時數(shù)據(jù)庫中,這就是庫存量;
6. 從生產(chǎn)訂單數(shù)據(jù)庫讀入手頭的訂單,插入到臨時數(shù)據(jù)庫中,這就是在制量;
7. 從采購單數(shù)據(jù)庫讀入手頭的采購單,插入到臨時數(shù)據(jù)庫中,這就是在購量。
部分關(guān)鍵代碼如下:
’下面做展開計算,從頂層到最底層
DoNextLevel:
MySqLcalling = “select * from ERPTemp where 狀態(tài)<>1 order by 產(chǎn)品編號”
If Myrs.State = 1 Then Myrs.Close
Set Myrs = Nothing
Myrs.Open MySqLcalling, MyDE, adOpenStatic, adLockBatchOptimistic
Myrs.MoveFirst
產(chǎn)品編號 = -1
Do Until Myrs.EOF
If Myrs(“狀態(tài)”) = 2 Then
Myrs(“狀態(tài)”) = 0
GoTo ReachNewRecord
End If
If 產(chǎn)品編號<>Myrs(“產(chǎn)品編號”) Then
產(chǎn)品編號 = Myrs(“產(chǎn)品編號”)
MysqlERP =“select 產(chǎn)品編號,材料編號,材料用量,材料提前準備日數(shù) from產(chǎn)品材料構(gòu)成表where 產(chǎn)品編號=”& Myrs(“產(chǎn)品編號”)
If MyDE.State= 0 Then MyDE
.Open
If MyRsERP.State = 1 Then MyRsERP.Close
MyRsERP.Open MysqlERP,
MyDE, adOpenForwardOnly, adLockReadOnly
End If
If Not MyRsERP.BOF Then
MyRsERP.MoveFirst
Do Until MyRsERP.EOF
TheNeededMonth = DateDiff(“m”, Now, DateAdd(“d”, -MyRsERP(“材料提前準備日數(shù)”), Now()))
If TheNeededMonth< 1 Then TheNeededMonth = 0
If TheNeededMonth>12 Then TheNeededMonth = 12
If ERPbyWeek Then
’by week
TheNeededMonth = DateDiff(“WW”, Now, DateAdd(“d”, -MyRsERP(“材料提前準備日數(shù)”), Now()))
If TheNeededMonth< 1 Then TheNeededMonth = 0
If TheNeededMonth > 52 Then TheNeededMonth = 52
End If
Myrsbookmark = Myrs.Bookmark
Myrs數(shù)量 = Myrs(“數(shù)量”)
Myrs.AddNew
Myrs(“分組序號”) = 4
Myrs(“分組”) = “需求量”
Myrs(“狀態(tài)”) =“2”
Myrs(“產(chǎn)品編號”)=
MyRsERP(“材料編號”)
Myrs(“數(shù)量”) = MyRsERP(“材料用量”) * Myrs數(shù)量
Myrs(“日期”) = DateAdd(“d”, -MyRsERP(“材料提前準備日數(shù)”), Now())
Myrs(“月份”) =
TheNeededMonth
Myrs.Bookmark = Myrsbookmark
MyRsERP.MoveNext
Loop
Else
Myrs(“狀態(tài)”) = 1
End If
Myrs(“狀態(tài)”) = 1
ReachNewRecord:
Myrs.MoveNext
Loop
MyRsERP.Close
Myrs.UpdateBatch
Myrs.Close
ERPlevel = ERPlevel + 1
DoEvents
If ERPStop Then GoTo ErrorHandle
If CalcLevel = -1 Then
GoTo DoNextLevel
Else
If ERPlevel< CalcLevel Then GoTo DoNextLevel
End If
Else
’OK, 結(jié)束
End If
大家可以注意到,由于上面采用了單層BOM存儲結(jié)構(gòu),所以展開計算的算法就相當簡單了,由于不需要特別的產(chǎn)品編碼,BOM的輸入與維護也非常簡單。另外,大家還可以注意到,算法完全不用遞歸嵌套,因而可以加快運行速度。
展開計算完畢以后,就可以利用交叉表調(diào)出臨時數(shù)據(jù)庫中的數(shù)據(jù),進行瀏覽、分析和打印了。這樣需求量與供應(yīng)量(庫存量、在制量、在購量)就擺在了一起進行比較,管理者就能夠很直觀、清楚地看出各種資源現(xiàn)有多少,需求量有多少;管理人員可以據(jù)此做采購和生產(chǎn)的計劃。而計劃可以是主計劃,也可以是細計劃,取決于用戶選定要展開到哪層,如果展開所有的層,那么所有的細計劃,如車間計劃,每個車間的人力、設(shè)備安排都會被包括在內(nèi)。
本算法采用Access數(shù)據(jù)庫,在VB 6.0上調(diào)試實現(xiàn),由于采用了特別的算法設(shè)計,使得既可以實現(xiàn)無限的層次,又不用遞歸嵌套。對于國內(nèi)中小規(guī)模企業(yè)(3000人以下,產(chǎn)品、材料條目總數(shù)在50000以下)來說,利用Access開發(fā)的小ERP系統(tǒng)可以很好地實現(xiàn)企業(yè)的現(xiàn)代化管理,應(yīng)付日常的管理需求。
ERP只是一種企業(yè)資源計算器
ERP是一種有效的管理工具,可以對企業(yè)內(nèi)部的資源進行有效管理,明顯減少積壓庫存,加快資金周轉(zhuǎn)率,降低成本。在當前激烈的市場競爭環(huán)境下,誰能比別人以更低的成本生產(chǎn)出更美更好的產(chǎn)品,誰就能成為市場的領(lǐng)導(dǎo)者。美國石油大王洛克菲勒成功最根本的原因是他在成本管理上嚴密精細。他能準確地查閱并分析下面呈報上來的開支和成本,銷售及損益數(shù)據(jù),并以此考核每個分廠的工作。
現(xiàn)實生活中,企業(yè)管理層,特別是實際操作的一線主管,很少會每個人都有洛克菲勒那樣的數(shù)字分析天分,而且不少企業(yè)比油廠復(fù)雜得多,所以ERP等工具就像是一種企業(yè)資源計算器,如果企業(yè)嚴格按它的規(guī)程去做,那么它就能比洛克菲勒還要精確地分析處理數(shù)據(jù)。
如果洛克菲勒今天還在世,他一定也會借助于強大的電腦來管理龐大的業(yè)務(wù)。不過工具畢竟是工具,最智慧的還是應(yīng)用它的人。如果一個企業(yè)家有洛克菲勒那樣的經(jīng)營智慧,就算用手工算,他也肯定是按照著這種管理理念在卓有成效地工作。
所以最智慧的不是機器而是應(yīng)用它的人,ERP只是一種企業(yè)資源計算器,就像會計人員手里的算盤、計算器一樣,只是一種工具。
總 結(jié)
ERP的實施中,最重要的一點在于一定要把握住關(guān)鍵,而忽略一些次要的因素,這對各方面的管理與規(guī)范相差甚遠的國內(nèi)企業(yè)來說尤為關(guān)鍵。這樣抓住了本質(zhì)以后,實施的成功就是必然的了。另外必須要注意到,ERP軟件只是一種工具而已,企業(yè)管理應(yīng)用者的智慧有多高,軟件應(yīng)用的水平就有多高。100萬元的ERP軟件和1萬元的ERP軟件的差別,除了功能和可靠性外,還有很重要的一點在于前者通過具體實施的過程,將一套很完善的管理方法和管理理念灌輸給企業(yè)管理應(yīng)用者,這也就是人們常說的知識的價值。
冼劍光 (jmjackle@pub.yunfu.gd.cn)
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/10819923226.html