常州森薩塔科技有限公司 張 銳
江南銀行 王 娟
在現(xiàn)代制造企業(yè)中,為了增加原材料的流動性,防止呆、廢料的發(fā)生,企業(yè)都希望擁有原材料先進先出(FIFO:first in first out)的特性。這對于保證原材料質(zhì)量,提高庫存周轉(zhuǎn)率,具有重要意義。對于業(yè)內(nèi)領(lǐng)先的制造企業(yè),F(xiàn)IFO和批次控制的實現(xiàn)也是提升其管理水平,贏得行業(yè)中優(yōu)質(zhì)客戶的重要一環(huán),關(guān)系到企業(yè)的重要利益。
目前ORACLE EBS系統(tǒng)僅僅對存貨計價方式集成了FIFO的方法,而對于庫房中的實物則沒有這方面的有效支持[1]。大多企業(yè)仍舊依靠粘貼不同顏色的季節(jié)性標(biāo)簽或者敲檢驗日期章的方式進行手工管理,結(jié)果在發(fā)料時庫房人員往往難以尋找到最早入庫的原料;也有部分企業(yè)花費巨資購買第三方庫存管理系統(tǒng)或者進行ERP本身的客制化。雖然效果不錯但花費不斐,并且往往需要再造現(xiàn)有流程,具有一定的風(fēng)險;還有部分企業(yè)建立獨立的數(shù)據(jù)庫和對應(yīng)系統(tǒng),監(jiān)控原料的流轉(zhuǎn),但這種方案,庫房人員需要掌握多套系統(tǒng),多個系統(tǒng)間易出現(xiàn)數(shù)據(jù)的不一致。使得庫房人員需要花費更多的精力在多個系統(tǒng)中進行盤點,極大增加了庫房的工作量。本文深入研究了Oracle EBS系統(tǒng)(下文簡稱EBS系統(tǒng))INV模塊的底層特性和庫房中原料流轉(zhuǎn)的所有流程。創(chuàng)造性地提出了依附于現(xiàn)有ERP系統(tǒng),在報表和條碼綜合輔助下實現(xiàn)原料庫房FIFO的解決方案。
原本車間使用傳統(tǒng)的粘貼顏色標(biāo)簽的方式來標(biāo)識原材料的大致入庫月份,通過庫房人員的記憶來確定入庫最早的原料位置,此方式已不能適應(yīng)新客戶對于原料庫存精益管理的要求。遂擬定本項目,項目目標(biāo)如下:①制定批次號的規(guī)則和實現(xiàn)原材料的可追溯性;②無論原材料在庫房中如何流轉(zhuǎn),系統(tǒng)始終可以保證最先入庫的原料最先發(fā)料;③發(fā)料時庫房人員可獲得原料各批次的具體位置;④為降低風(fēng)險與工作量,基于現(xiàn)有系統(tǒng),不另建外部數(shù)據(jù)源。
表1 某原料庫存事務(wù)操作的歷史紀(jì)錄
表2 批次分布報表
要完成以上目標(biāo),項目中有如下重點問題:
1)確定批次號格式及在系統(tǒng)中的存儲位置,從而為FIFO和追溯性的實現(xiàn)打下基礎(chǔ)。
2)建立批次號與對應(yīng)原料實物的關(guān)系,以實現(xiàn)基于批次號順序的自動尋料。自動尋料將避免人工尋料和判斷的不準(zhǔn)確性,是實現(xiàn)FIFO的重要保障
3)由于EBS不提供有效的批次管理功能,即實際使用中EBS只關(guān)心收、發(fā)原料的數(shù)量和貨位,無法根據(jù)我們標(biāo)示的批次號收發(fā)原料,故需尋找方法使EBS系統(tǒng)所有流程中按批次的原料出入與實際的原料接收/消耗的批次一致。
其中第三條牽涉EBS底層邏輯,且牽涉所有庫房流轉(zhuǎn)流程,是方案要解決的重點問題。以下詳細(xì)分析上述三個問題。
若要實現(xiàn)原料流轉(zhuǎn)的過程追蹤,必須確定批次號,而批次號要實現(xiàn)FIFO必須滿足以下三個條件:
1)EBS系統(tǒng)中需要記錄每批原材料的唯一標(biāo)識,標(biāo)識本身能反映前后關(guān)系
2)在庫房流轉(zhuǎn)的所有流程中統(tǒng)一使用這個標(biāo)識來進行追蹤
3)此標(biāo)識必須要粘貼在每批原料的箱子上,以實現(xiàn)系統(tǒng)記錄到物理標(biāo)識的印射。
日期可以直觀地表示批次的前后關(guān)系,但由于某原料在一天內(nèi)接收可能不止一次,一天內(nèi)接收的物料也不止一種,為了滿足唯一性,批次號格式應(yīng)為:料號+入庫時間+流水號。因為批次號中記錄了入庫的日期,一旦在系統(tǒng)中將在庫原料和數(shù)量與批次號建立起對應(yīng)關(guān)系,則可以找到方法將某原料的所有庫存數(shù)據(jù)按照批次號中的入庫日期排序,從而建立起庫房中所有原料的批次分布報表,也就實現(xiàn)了自動尋料。
通過上述分析,已經(jīng)可以做到基于批次號條碼的的原料流轉(zhuǎn)追蹤,以及基于批次號的自動尋料。雖然物理上,庫房人員可以根據(jù)報表的內(nèi)容,正確的按照批次號的順序進行發(fā)料,但ERP系統(tǒng)一定會按照我們定義的批次號的順序進行發(fā)料嗎?答案是否定的。因為參考字段是用戶自己擴展的,作備注使用,任何一個ERP系統(tǒng)在沒有客制化之前不可能為這些字段給予事務(wù)操作的邏輯。所以如何使系統(tǒng)按照我們的定義來消耗原料就成了本項目的核心。
通過挖掘資料,發(fā)現(xiàn)在數(shù)據(jù)庫中,表MTL_ONHAND_QUANTITIES(庫存原料數(shù)量表)會記錄下現(xiàn)有原料分別轉(zhuǎn)移進這個貨位(Location)的時間(不是進入倉庫的時間),而且其消耗的順序也會依照進入貨位的時間來進行,也就是說,從倉庫的某個貨位來看,某一個原料先轉(zhuǎn)移入這個貨位的一定會先出這個貨位[2]。但這個定義和原料FIFO還是有一定差異的,并有可能形成實物現(xiàn)有量與系統(tǒng)中現(xiàn)有量的不一致。如下示例,對同一個料(13427-1),假設(shè)之前的現(xiàn)有量為0。從6月10日起分別4次接收入兩個貨位A和B(此時入庫時間和轉(zhuǎn)入貨位的轉(zhuǎn)入時間一致)。并在6月16日把貨位B上的原料轉(zhuǎn)移到貨位A上。至此所有此原料的庫存全部在A貨位中,共3500個(見表1)。
表3 EBS內(nèi)部發(fā)料序列表
圖1 原料庫房FIFO流程總圖
若此時需要發(fā)料1200 PCE。我們根據(jù)批次分布報表的內(nèi)容(表2),按入庫時間進行排序。所以消耗的將是貨位A中10日入庫的1000個和11日入庫的200個。但是EBS系統(tǒng)中卻是依照轉(zhuǎn)移入貨位的時間自動進行消耗的(表3),消耗的將是10日入庫的1000個和12日入庫的200個。這時貨位中的總數(shù)量雖然與系統(tǒng)記錄的總數(shù)量一致,但系統(tǒng)中各批次對應(yīng)的數(shù)量與實際將完全不符。則以后的發(fā)料工作則難以再按照批次分布報表數(shù)量進行發(fā)料。
總結(jié)原因,兩張表的不一致,是由于其中的數(shù)據(jù)排序方式的不一致造成的。如果轉(zhuǎn)入之前,先檢查貨位A上最大的轉(zhuǎn)入時間是15號,庫房人員只轉(zhuǎn)入庫日期在15號之后的原材料,則無論按轉(zhuǎn)入時間排序還是按入庫時間排序就都一致。根據(jù)這一思想,當(dāng)做貨位轉(zhuǎn)移時,我們把此批原料的轉(zhuǎn)入貨位分成可轉(zhuǎn)入和不可轉(zhuǎn)入,假如某原料n的入庫時間用Ti(n)表示,某貨位A中此原料的轉(zhuǎn)入時間用Tt(n,A)表示,則當(dāng)Ti(n)<=Max(Tt(n,A))則A為不可轉(zhuǎn)入貨位,除了這些貨位以外的其他貨位(包括空貨位)為可轉(zhuǎn)入貨位。當(dāng)從某貨位轉(zhuǎn)出某原料的時候,應(yīng)當(dāng)先挑選可轉(zhuǎn)入貨位,再做轉(zhuǎn)入的動作。(可轉(zhuǎn)入貨位的尋找可以根據(jù)以上邏輯自定義實時報表實現(xiàn))。
另外因為原料轉(zhuǎn)出時等同于在原貨位消耗原料,所以本著FIFO的原則,也應(yīng)該查詢批次分布報表(表2),找到原貨位中最早入庫的原料,使之先轉(zhuǎn)出。這樣也就實現(xiàn)了貨位轉(zhuǎn)移過程中原料批次流轉(zhuǎn)順序與系統(tǒng)記錄順序的一致。
這里只是分析了貨位轉(zhuǎn)移這樣一種流程,對庫房中其他類型的流程是否也適用呢?通過調(diào)查總結(jié)和查閱資料,原材料流轉(zhuǎn)過程中含有如下的流程[3]:
(1)發(fā)料流程(原材料庫從倉庫發(fā)送至生產(chǎn)線或委外加工供應(yīng)商);
(2)入庫流程(內(nèi)部訂單或采購訂單的接收入庫);
(3)線上退料流程(生產(chǎn)線退回至原材料倉庫);
(4)貨位(Location)轉(zhuǎn)移流程(原料倉庫中不同貨位之間的轉(zhuǎn)移);
(5)盤贏流程;
(6)盤虧流程。
而從貨位的角度看,其操作有兩大類:消耗和積累。
所以庫房中的上述六個流程針對貨位的動作可以分為三類:
1)只涉及某一貨位積累的流程:盤贏/入庫/生產(chǎn)線退料;
2)只涉及某一貨位消耗的流程:發(fā)料/盤虧;
3)涉及一個貨位的積累和另一個貨位的消耗的流程:貨位轉(zhuǎn)移。
對第一類。盤贏和生產(chǎn)線退料流程類似。由于只涉及轉(zhuǎn)入,只需在轉(zhuǎn)入前尋找到可轉(zhuǎn)入貨位,并轉(zhuǎn)入即可;對于入庫的流程更簡單,因為入庫時間一定大于所有的在庫原料的轉(zhuǎn)入時間。故所有貨位都是可轉(zhuǎn)入貨位
對第二類。發(fā)料時,由于產(chǎn)線線上只關(guān)心足夠數(shù)量的原料,故只需要依據(jù)批次分布報表找到最早入庫的原料,進行發(fā)料即可;對于盤虧,可能需要盤虧某批次的原料,因為盤虧屬于消耗動作。系統(tǒng)自動會消耗某貨位中最早的入庫材料,故盤虧前應(yīng)先將比想要盤虧批次更早早的原料轉(zhuǎn)移,再進行盤虧動作。
對第三類。貨位轉(zhuǎn)移,前文已經(jīng)解釋此處不再累述。
綜上所述,無論原料在原料庫房中如何流轉(zhuǎn),只要轉(zhuǎn)入的是我們定義的可轉(zhuǎn)入貨位,取出(消耗)時查詢我們批次分布報表中最前面的記錄,就一定可以實現(xiàn)系統(tǒng)中批次數(shù)據(jù)和實物批次數(shù)據(jù)的一致。
通過上述的分析,基本明晰了實現(xiàn)的手段和要點。以下簡述解決方案。
2.1 批次號的存儲及批次分布報表的實現(xiàn)
EBS在做庫房的所有流程事務(wù)(發(fā)料/入庫/線上退料/貨位轉(zhuǎn)移/盤點)處理時,都存在一個備注字段,可以用來存儲批次號。在產(chǎn)品入庫的時候可以要求庫房人員打印和粘貼批次號標(biāo)簽,并在所有庫房流轉(zhuǎn)事務(wù)操作過程中均掃描輸入這個批次號進入EBS系統(tǒng)的備注字段,從而也就實現(xiàn)了原料在所有流程中對批次號的追蹤。但批次分布報表需要的是庫存中原料及數(shù)量與批次號的對應(yīng),不是事物操作中原料與批次號的對應(yīng),如何進行這種轉(zhuǎn)化呢?通過翻閱資料發(fā)現(xiàn),EBS對于在貨位中的材料會提供轉(zhuǎn)入本貨位的對應(yīng)事務(wù)操作ID號,按照這個號碼可以尋找到每次事務(wù)操作的備注字段,即批次號。由于存在這樣一種關(guān)聯(lián),也就可以找到方法來制作批次分布報表(見表2),列出某原材料的各個批次分別在哪些貨位中,有多少數(shù)量。庫房人員就可以根據(jù)報表,一目了然的得知應(yīng)該從哪個貨位取哪幾個最早批次的料,以及對應(yīng)的數(shù)量,從而實現(xiàn)了自動尋料。自動尋料是庫房人員正確依據(jù)FIFO原則發(fā)料的基礎(chǔ)。
2.2 原料庫房中的批次控制總流程
原料入庫:在入庫時,由于本批次的接收時間大于所有貨位中原料的最大轉(zhuǎn)入時間,故所有的貨位都是可轉(zhuǎn)入貨位,庫房人員可隨意挑選貨位做入庫操作,操作時輸入批次號。庫房人員會在條碼系統(tǒng)中打印出批次號并粘貼于接收的箱子上。
盤贏/線上退料:這兩個流程大體相似,欲轉(zhuǎn)入其他貨位前,先從箱子上尋找到批次號;通過在報表中輸入此批次號,報表給出可轉(zhuǎn)入貨位(包括空貨位),將原材料轉(zhuǎn)入。并在備注字段中掃描輸入批次號。(在EBS中做相關(guān)的事務(wù)操作時在備注字段中輸入批次號以使系統(tǒng)可以方便的找到每個原料的接收時間)。
貨位轉(zhuǎn)移:轉(zhuǎn)入過程與盤贏的流程相似,但在轉(zhuǎn)出原先貨位時,必須先查詢批次分布報表,轉(zhuǎn)出本貨位中最早轉(zhuǎn)入的原料。同樣在做相關(guān)的事務(wù)操作時需在備注字段中輸入批次號
盤虧:盤虧與出庫不同。出庫始終發(fā)出(消耗)最早入庫的料,而盤虧有可能要消耗的是某個批次的料。故先查詢批次分布報表,轉(zhuǎn)移出批次號早于欲盤點批次的原材料。然后在此貨位中作盤虧處理。
出庫:由于上述每個流程都將批次號掃描至備注字段中,故系統(tǒng)中可以容易到找到所有在庫材料的的批次號以及貨位和對應(yīng)的數(shù)量。形成批次分布報表。并且由于定義了可轉(zhuǎn)入貨位和不可轉(zhuǎn)入貨位,這樣也就保證了Oracle系統(tǒng)在做原料出庫(消耗)的時候是按照原料入庫的前后順序排列的。庫房人員只需查詢批次分布報表并按照報表中的數(shù)據(jù)一筆筆出庫即可,圖1為原料庫房FIFO流程總圖。
本文深入挖掘了Oracle EBS INV模塊的底層邏輯,并在充分利用其特性的基礎(chǔ)上創(chuàng)新的提出了利用原有系統(tǒng),結(jié)合條碼和報表實現(xiàn)FIFO的敏捷解決方案。相比較其他解決方案,此方案僅用了不到兩個月的時間就完成了調(diào)試上線。具有開發(fā)量小,簡單易行,成本低的特點。由于此方案仍然基于原有ERP,不需要建立新的系統(tǒng),避免了多數(shù)據(jù)源帶來的數(shù)據(jù)不一致和流程再造的風(fēng)險。經(jīng)過4個月的運行驗證,此解決方案運行正常,表現(xiàn)出了良好的實用性。
[1]許賢琳,曹健.ERP中動態(tài)庫存成本核算算法的研究[J].計算機工程與應(yīng)用,2006,42(34):199-202.
[2]Tyra Crockett.Oracle? Warehouse Management Implementation Guide[M].Release 12.US:Oracle,2006:126.
[3]馬東博.制造企業(yè)的倉庫設(shè)計[J].物流科技,2005,28(12):25-27.