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