ERP商業(yè)軟件實(shí)施解決方案_第1頁
ERP商業(yè)軟件實(shí)施解決方案_第2頁
ERP商業(yè)軟件實(shí)施解決方案_第3頁
ERP商業(yè)軟件實(shí)施解決方案_第4頁
ERP商業(yè)軟件實(shí)施解決方案_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、ERP系統(tǒng)開發(fā)中BOM結(jié)構(gòu)模型的研究及應(yīng)用陳琦 劉杰(同濟(jì)大學(xué)經(jīng)濟(jì)與管理學(xué)院,上海 200092)摘 要:BOM是ERP系統(tǒng)中重要的基本數(shù)據(jù).本文首先從數(shù)據(jù)庫設(shè)計(jì)和算法實(shí)現(xiàn)兩方面分析了兩種典型的BOM結(jié)構(gòu)模型,通過比較總結(jié)出BOM設(shè)計(jì)中的關(guān)鍵問題;然后針對(duì)該問題提出改進(jìn)的BOM結(jié)構(gòu)模型;最后給出運(yùn)用此模型實(shí)現(xiàn)某BOM管理模塊的實(shí)例。關(guān)鍵字:企業(yè)資源計(jì)劃;物料清單;BOM結(jié)構(gòu)模型1 引言制造業(yè)信息系統(tǒng)從上個(gè)世紀(jì)50年代起至今經(jīng)歷了MRP(Material Requirements Planning)、閉環(huán)MRP(Closed-loop MRP)、MRP (Manufacturing Resour

2、ce Planning)及ERP等四個(gè)階段,后一個(gè)階段都是建立在前一階段基礎(chǔ)之上.ERP的核心仍然是解決企業(yè)根據(jù)市場(chǎng)需求“生產(chǎn)什么”、 “生產(chǎn)多少”、“什么時(shí)候生產(chǎn)”等問題,而這些問題的有效解決都是建立在MRP運(yùn)算,即根據(jù)BOM(Bill of Materials)分解MPS(Main Production Schedule)的基礎(chǔ)之上。所謂BOM就是產(chǎn)品結(jié)構(gòu)在ERP系統(tǒng)中的一種數(shù)據(jù)表現(xiàn)形式,換句話說為了方便計(jì)算機(jī)識(shí)別并做分解運(yùn)算處理,把用圖表達(dá)的產(chǎn)品結(jié)構(gòu)轉(zhuǎn)換成數(shù)據(jù)格式,這種用數(shù)據(jù)格式來描述產(chǎn)品結(jié)構(gòu)的文件就是BOM.從概念中可以看出,BOM的主要作用包括:1.存貯作用,即存儲(chǔ)產(chǎn)品結(jié)構(gòu)信息;2.

3、計(jì)算依據(jù),即為MRP分解運(yùn)算提供邏輯依據(jù)。BOM是ERP的核心數(shù)據(jù)之一,BOM的設(shè)計(jì)與實(shí)施是ERP的基礎(chǔ),所以選用合理得BOM結(jié)構(gòu)模型是保障ERP順利實(shí)施得重要環(huán)節(jié)。2兩種典型的BOM結(jié)構(gòu)模型2.1樹狀結(jié)構(gòu)模型對(duì)于制造型企業(yè)中生產(chǎn)的單個(gè)產(chǎn)品,其結(jié)構(gòu)呈現(xiàn)出一種樹狀結(jié)構(gòu),反映出該產(chǎn)品所需的原材料,零件,部件及總裝件之間的從屬關(guān)系和數(shù)量。如圖1中產(chǎn)品A,是由B,C,D構(gòu)成的,而B又是由C,D構(gòu)成的,括號(hào)里的數(shù)字表示父子之間的數(shù)量關(guān)系,依此類推,其中不能再分解或處于產(chǎn)品結(jié)構(gòu)樹底部的零部件就是需要制造或采購的零部件,有了這種產(chǎn)品結(jié)構(gòu)才能進(jìn)行分解運(yùn)算得到物料需求計(jì)劃。圖1。產(chǎn)品A的結(jié)構(gòu)圖為了把這種產(chǎn)品結(jié)構(gòu)

4、存儲(chǔ)在關(guān)系型數(shù)據(jù)庫中(以sqlserver2000為例,下同),其數(shù)據(jù)庫設(shè)計(jì)如表1所示:字段名稱類型含義RootidVarchar(10)產(chǎn)品代碼ChildidVarchar(10)子件代碼Layerint層次碼Usagefloat零件間用量關(guān)系表1樹狀結(jié)構(gòu)模型的數(shù)據(jù)字典其中Rootid, Childid分別表示產(chǎn)品和該產(chǎn)品包含的零部件代碼,如該零部件不可再分解就用一個(gè)特殊的符號(hào)“L”來表示。圖1中A產(chǎn)品的結(jié)構(gòu),在數(shù)據(jù)庫中存儲(chǔ)為以下記錄:RootidChildidLayerUsageAmountAB11AC12ADL3AC22ADL1AEL6AFL8AEL6AFL8表2 產(chǎn)品A在樹狀結(jié)構(gòu)模型中

5、的表示這種數(shù)據(jù)庫設(shè)計(jì)由于模擬了產(chǎn)品結(jié)構(gòu)的樹狀特征(如圖2),稱之為“樹狀結(jié)構(gòu)模型”,它的優(yōu)點(diǎn)是直觀的刻畫了產(chǎn)品結(jié)構(gòu),不同產(chǎn)品間的數(shù)據(jù)相互獨(dú)立的,因而編寫分解算法非常簡(jiǎn)單、高效。缺點(diǎn)主要是數(shù)據(jù)冗余度大,不同產(chǎn)品中包含的相同結(jié)構(gòu)特征在此模型中仍然要存儲(chǔ)多次,例如:產(chǎn)品A包含的部件C為通用件,即可以用在其他產(chǎn)品中。因而當(dāng)增加或修改這些結(jié)構(gòu)特征時(shí)也要重復(fù)多次,容易造成BOM數(shù)據(jù)不一致,或者在數(shù)據(jù)庫設(shè)計(jì)時(shí)需要增加額外的觸發(fā)機(jī)制保證其一致性。另一方面由于這種結(jié)構(gòu)模型只存儲(chǔ)了產(chǎn)品與零部間的關(guān)系從而抹煞了部件與零件的關(guān)系,破壞了BOM數(shù)據(jù)的完整性。ParentidChildidUsageAB1AC2AD3BC

6、2BD1CE3CF4 圖2.BOM的樹狀結(jié)構(gòu)樹狀結(jié)構(gòu)模型可以直接采用較為簡(jiǎn)單的SQL語句來實(shí)現(xiàn)產(chǎn)品結(jié)構(gòu)的查詢。例如對(duì)圖1中A產(chǎn)品查詢需要制造或采購的所有零部件清單時(shí),SQL語句為:select Childid from 表2 where Rootid=A and Layer=L;需要查詢A產(chǎn)品所包含的第n層零部件清單時(shí),SQL語句為:select Childid from 表2 where Rootid=A and Layer=n;22網(wǎng)狀結(jié)構(gòu)模型 對(duì)于制造多品種產(chǎn)品的企業(yè),產(chǎn)品與零部件的關(guān)系不再是簡(jiǎn)單的一對(duì)多而是多對(duì)多關(guān)系。由于大量通用件在不同產(chǎn)品間的相互借用,在樹狀結(jié)構(gòu)中表現(xiàn)為不同的結(jié)點(diǎn)可

7、以有相同的子樹;即使在同種產(chǎn)品內(nèi)部,由于一些標(biāo)準(zhǔn)件的重用,同樣使零部件關(guān)系呈現(xiàn)出復(fù)雜的交織,所以圖2可以轉(zhuǎn)化為圖3所示的網(wǎng)狀結(jié)構(gòu)。 圖3.BOM的網(wǎng)狀結(jié)構(gòu)這種產(chǎn)品結(jié)構(gòu)在數(shù)據(jù)庫中的設(shè)計(jì)如表1所示:字段名稱類型含義ParentidVarchar(10)父件代碼ChildidVarchar(10)子件代碼Usagefloat父子件間用量關(guān)系表3 網(wǎng)狀結(jié)構(gòu)模型的數(shù)據(jù)字典圖1中A產(chǎn)品的結(jié)構(gòu)在數(shù)據(jù)庫中可以存儲(chǔ)為以下記錄: 表4 產(chǎn)品A在網(wǎng)狀結(jié)構(gòu)模型中的表示這種數(shù)據(jù)庫設(shè)計(jì)模擬了多品種產(chǎn)品的結(jié)構(gòu)特征(如圖2),稱之為“網(wǎng)狀結(jié)構(gòu)模型”,它的優(yōu)點(diǎn)是對(duì)每一種父子結(jié)構(gòu)關(guān)系只存儲(chǔ)一次,從而消除了冗余數(shù)據(jù),另外當(dāng)這些通用

8、件或標(biāo)準(zhǔn)件的結(jié)構(gòu)發(fā)生變化時(shí),在數(shù)據(jù)庫中也只用修改一次,同樣以部件C為例,當(dāng)修改其結(jié)構(gòu)特征時(shí)只需在修改數(shù)據(jù)庫中字段Parentid為“C”的記錄。因而網(wǎng)狀結(jié)構(gòu)模型易于保證BOM數(shù)據(jù)的完整性和一致性。這種模型雖然能清晰的反映產(chǎn)品結(jié)構(gòu),但要編寫較為復(fù)雜的算法來實(shí)現(xiàn)對(duì)BOM的遍歷,常用的算法有: 1.遞歸算法。利用數(shù)據(jù)庫的臨時(shí)表來保存遞歸運(yùn)算中的臨時(shí)信息,通過特定變量控制程序的執(zhí)行.2.分層查找法。就是從被查找的根結(jié)點(diǎn)開始,按層次一層一層的往下遍歷,類似于數(shù)據(jù)結(jié)構(gòu)中樹的層次遍歷過程。3改進(jìn)的BOM結(jié)構(gòu)模型3.1 BOM設(shè)計(jì)中的關(guān)鍵問題綜合上面兩種模型的設(shè)計(jì)方法,在BOM設(shè)計(jì)過程中需著重考慮的兩要素是:

9、1.合理的BOM結(jié)構(gòu)模型,即在數(shù)據(jù)庫中設(shè)計(jì)合理的方式存儲(chǔ)BOM數(shù)據(jù),保證BOM數(shù)據(jù)的完整性、一致性、可靠性和無冗余;2.高效便捷的算法完成對(duì)產(chǎn)品結(jié)構(gòu)的遍歷和分解,滿足MRP運(yùn)算及各種對(duì)產(chǎn)品結(jié)構(gòu)的查詢、匯總等。前者關(guān)系到BOM的易維護(hù)性,后者是關(guān)系到BOM的易使用性,以下簡(jiǎn)稱為BOM“設(shè)計(jì)的兩要素”。然而,當(dāng)今流行的數(shù)據(jù)庫大多采用基于關(guān)系模型的關(guān)系型數(shù)據(jù)庫。在數(shù)據(jù)庫發(fā)展歷史中較以前的層次模型或網(wǎng)狀模型,關(guān)系模型對(duì)這種樹狀結(jié)構(gòu)的存儲(chǔ)和處理有先天性的不足,如果采取冗余度小的數(shù)據(jù)庫設(shè)計(jì),會(huì)使算法比較復(fù)雜,反之亦然。例如前面的兩種模型,樹狀結(jié)構(gòu)模型的數(shù)據(jù)庫設(shè)計(jì)冗余度大但算法簡(jiǎn)單、執(zhí)行效率高,實(shí)際上以較差

10、的易維護(hù)性來換取較好的易使用性;而網(wǎng)狀結(jié)構(gòu)模型在保持低數(shù)據(jù)冗余的情況下卻使算法復(fù)雜,降低查詢分析的效率,與前者正好相反。這導(dǎo)致了BOM設(shè)計(jì)中兩要素間的矛盾,而這種矛盾往往是無法避免的。BOM設(shè)計(jì)的主要問題就是在滿足ERP功能的前提下,如何在BOM兩要素之間需求最優(yōu)均衡。為了解決這個(gè)問題,筆者綜合兩種典型BOM結(jié)構(gòu)模型的特點(diǎn),提出以下改進(jìn)的BOM結(jié)構(gòu)模型。3.2 改進(jìn)后的混合結(jié)構(gòu)模型這種模型的設(shè)計(jì)思路是考慮到在產(chǎn)品生命周期的不同階段有不同的BOM,其內(nèi)容和作用各不相同。所以整個(gè)產(chǎn)品結(jié)構(gòu)可再細(xì)分為銷售BOM,制造BOM,采購BOM等。銷售BOM列舉出制造最終產(chǎn)品所必需的可選物料,它僅僅是為了滿足客

11、戶訂單把相對(duì)獨(dú)立的部件匯總起來的BOM;制造BOM是根據(jù)產(chǎn)品結(jié)構(gòu)和工藝流程特點(diǎn),把銷售BOM中的獨(dú)立部件作為“最終項(xiàng)目”來構(gòu)建的,用于幫助制定并簡(jiǎn)化主生產(chǎn)計(jì)劃;采購BOM是采購部門根據(jù)制造BOM中部件需求制定的外購件、外協(xié)件清單,是進(jìn)行MRP運(yùn)算的邏輯基礎(chǔ)。這種劃分把整個(gè)產(chǎn)品結(jié)構(gòu)分解為粒度大小不同得BOM,銷售BOM包含的數(shù)據(jù)項(xiàng)對(duì)應(yīng)的產(chǎn)品結(jié)構(gòu)粒度最大,接下來依次為制造BOM、采購BOM。然后根據(jù)這幾種BOM的結(jié)構(gòu)選擇不同的BOM結(jié)構(gòu)模型。一般來講,銷售BOM的結(jié)構(gòu)簡(jiǎn)單且相對(duì)固定,對(duì)其主要做查詢、匯總等簡(jiǎn)單操作,需要較好的BOM易使用性,故采用樹狀結(jié)構(gòu)模型,采購BOM的結(jié)構(gòu)復(fù)雜且需要經(jīng)常修改,而

12、且數(shù)據(jù)存儲(chǔ)量大,對(duì)其完整性、一致性要求較高,即需要較好的BOM易維護(hù)性,故采用網(wǎng)狀結(jié)構(gòu)模型,制造BOM視企業(yè)的具體情況,同樣按照其他BOM的選型方法選取合適的BOM結(jié)構(gòu)模型。這樣對(duì)整個(gè)產(chǎn)品結(jié)構(gòu)綜合兩種BOM結(jié)構(gòu)模型的優(yōu)點(diǎn),而且能滿足ERP系統(tǒng)各模塊的功能需要,所以稱之為“混合結(jié)構(gòu)模型”。4 應(yīng)用實(shí)例在某壓縮機(jī)生產(chǎn)企業(yè)的ERP系統(tǒng)實(shí)際開發(fā)中,運(yùn)用混合結(jié)構(gòu)模型開發(fā)了其中的BOM管理模塊.該系統(tǒng)采用基于Web的三層B/S架構(gòu),主要運(yùn)用JSP技術(shù),開發(fā)環(huán)境為:服務(wù)器端的操作系統(tǒng)采用Window NT;Web服務(wù)器為AparchTomcat;數(shù)據(jù)庫采用SQL Server 2000。4.1 BOM結(jié)構(gòu)設(shè)

13、計(jì)該企業(yè)是典型的多品種大批量的制造型企業(yè),在BOM設(shè)計(jì)前首先對(duì)物料進(jìn)行了編碼,保證每種物料有唯一代碼標(biāo)識(shí),然后參考混合模型把整個(gè)產(chǎn)品結(jié)構(gòu)劃分(如圖4示意)。 圖4 BOM結(jié)構(gòu)劃分l 銷售BOM壓縮機(jī)全代碼標(biāo)識(shí)交付客戶使用的商品,包括壓縮機(jī)、附件及包裝等。在ERP中這部分BOM主要供銷售部門使用,使其能夠根據(jù)客戶需要迅速查詢相應(yīng)的配件,或使客戶按照自身需要挑選并自由組合各部件。該部分采用樹狀結(jié)構(gòu)模型,數(shù)據(jù)庫中Rootid字段存放壓縮機(jī)全代碼,Childid字存放壓縮機(jī)裝配碼、附件代碼或者附件包裝代碼。l 制造BOM壓縮機(jī)裝配碼標(biāo)識(shí)裝配線上最終裝配出的產(chǎn)品,包括壓縮機(jī)本體、本體包裝和標(biāo)識(shí)銘牌。這部

14、分主要供生產(chǎn)部門的總裝配線使用,使其能夠按照主生產(chǎn)計(jì)劃計(jì)算各部件的投料量。該部分同樣采用樹狀結(jié)構(gòu)模型,數(shù)據(jù)庫中Rootid字段存放壓縮機(jī)裝配碼,Childid字段存放壓縮機(jī)本體代碼,本體包裝代碼及標(biāo)識(shí)銘牌代碼。l 采購BOM采購BOM用來存儲(chǔ)壓縮機(jī)本體的結(jié)構(gòu)信息,由于不同型號(hào)的壓縮機(jī)本體僅存在細(xì)微的結(jié)構(gòu)差異,如果采用樹狀結(jié)構(gòu)模型,必然會(huì)產(chǎn)生大量的冗余數(shù)據(jù)。此外,由于所有產(chǎn)品的技術(shù)資料需要與國外母公司保持同步并且隨客戶需求變化頻繁更換,因而對(duì)BOM數(shù)據(jù)的維護(hù)是經(jīng)常性的,所以最終采用網(wǎng)狀結(jié)構(gòu)模型,數(shù)據(jù)庫中僅存在具有父子關(guān)系的零部件數(shù)據(jù),然后編寫算法實(shí)現(xiàn)其查詢、匯總等功能。4.2 關(guān)鍵算法實(shí)現(xiàn)對(duì)采用

15、樹狀結(jié)構(gòu)模型的客戶BOM和制造BOM,可以直接用SQL查詢語句實(shí)現(xiàn)所需功能,而采購BOM需要對(duì)網(wǎng)狀結(jié)構(gòu)模型實(shí)現(xiàn)遍歷等功能,算法較為復(fù)雜,以下給出用于實(shí)現(xiàn)對(duì)給定的任一物料查詢其包含的所有子件,并按層次關(guān)系排列的算法。1.在sqlserver2000下先建立兩個(gè)臨時(shí)表work和result,前者用于存儲(chǔ)運(yùn)算的中間數(shù)據(jù),后者存儲(chǔ)運(yùn)算結(jié)果。字段名稱類型含義Lv1int層次碼itemidVarchar(20)物料代碼usageFloat(10)用量表5.臨時(shí)表#work字段名稱類型含義SeqInt identity序號(hào)Lv1int層次碼itemidVarchar(20)物料代碼usageFloat(10

16、)用量表6.臨時(shí)表#result2.實(shí)現(xiàn)BOM遍歷查詢的SQL語句為:/聲明變量declare lvl int,curr varchar(20),usage float(10)/從BOM表中選取需要分解的物料信息,并存入#work表等待運(yùn)算select top 1 lvl=1,curr=”根節(jié)點(diǎn)物料代碼”,usage=”用量” from “BOM表”insert into #work (lvl,itemid,usage) values (lvl,curr,usage)/循環(huán)開始,當(dāng)分解層次碼為0時(shí)循環(huán)終止while (lvl0) beginif exists (select * from #w

17、ork where lvl=lvl) begin/從#work表中選取層次碼為lvl的首條記錄A,保存在變量中并插入表#result,然后將該記錄從#work表刪除select top 1 curr=itemid,usage=usage from #work where lvl=lvlinsert #result (lvl,itemid,usage) values (lvl,curr,usage)delete #work where lvl=lvl and itemid=curr/以記錄A為父節(jié)點(diǎn)在BOM表中選取其所有子節(jié)點(diǎn),并插入表#workinsert #work select lvl+1

18、,cid,usagefrom “BOM表” where pid=curr and pidcid/如記錄A有子結(jié)點(diǎn)集B,則層次碼加1,否則減1.然后跳至循環(huán)開始if(rowcount0) set lvl=lvl+1endelseset lvl=lvl-1end/從表#result中選取最終遍歷結(jié)果select * from #result;實(shí)踐證明,采用混合結(jié)構(gòu)模型的BOM設(shè)計(jì)無論是在數(shù)據(jù)庫結(jié)構(gòu)還是運(yùn)算效率上都能滿足企業(yè)需要,為該ERP的順利實(shí)施奠定了基礎(chǔ)。4 結(jié)束語本文分析比較了兩種典型的BOM結(jié)構(gòu)模型,從中總結(jié)BOM設(shè)計(jì)的主要問題并提出相應(yīng)的改進(jìn)BOM結(jié)構(gòu)模型。在筆者參與的ERP系統(tǒng)開發(fā)過程中,這種方法得到了很好的應(yīng)用和證實(shí),希望能給其它ERP系統(tǒng)開發(fā)者以參考?;痦?xiàng)目:上海市浦東新區(qū)科技發(fā)展基金信息化應(yīng)用推進(jìn)專項(xiàng)資金資助項(xiàng)目參考文獻(xiàn):1程控,革楊.MRPII/ERP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論