陸海平
以往,生產企業(yè)在面臨供應商很長又不可靠的交貨期時,通常都會采取較被動的方法,如準備安全庫存、提前備料、人工緊急跟催等,如果生產成品周期出現調整或產能發(fā)生變化,很容易產生原物料呆滯庫存,增加企業(yè)的不必要生產成本。為解決上述問題,本文設計一套供應商交貨排程自動分配系統(tǒng),旨在使供應商的交期及數量遵循企業(yè)的實際生產需求,縮短進貨周期時間,使企業(yè)保持所需求的最小存貨量,有效減少了采購成本。
本系統(tǒng)基于 SAP R/3系統(tǒng)設計開發(fā),使用其提供的ABAP語言實現,其中數據顯示部分采用了SAP提供的標準ALV顯示功能模塊,業(yè)務數據更新部分,采用了SAP的BAPI接口技術。在完成本系統(tǒng)的過程中,原物料的需求計算很重要。本文根據SAP的供需平衡理念,在其MRP的運算結果基礎之上,通過有效的庫存數量,去沖減生產需求數量,以得到正確的缺料需求數據。系統(tǒng)設計的過程中,還充分考慮系統(tǒng)與采購人員的交互操作,增加了可人工選擇更新數據部分,使得交貨排程分配更加靈活。本系統(tǒng)的開發(fā),使用了多種程序模塊化技術,使得程序結構清晰,實現了代碼復用,并增加了程序的可讀寫和可維護性[1]。
供應商交貨排程自動分配系統(tǒng)的總體結構,如圖1所示:
圖1 供應商交貨排程自動分配系統(tǒng)結構
系統(tǒng)包括 4個部分:物料需求計算模塊,物料供給計算模塊,供應商交貨排程模擬分配模塊,更新 SAP系統(tǒng)業(yè)務數據模塊。為減少開發(fā)難度、降低開發(fā)風險,都采用分模塊的開發(fā)方式,后期測試也分模塊進行,有效地提高了開發(fā)效率。
(1)物料需求計算模塊:根據系統(tǒng)MRP計算出來的物料需求時間和需求量,結合該物料的可用庫存量,計算出物料在相應時間的短缺量。計算結果,按時間排序并按照事先定義的數據結構存儲在數據庫中,該數據可隨時更新,并加入數據版本控制,生成新數據時,舊版本數據需加上刪除標志。該模塊計算結果,還可供其它系統(tǒng)采用,如缺料預警系統(tǒng)等。
(2)物料供給計算模塊:收集系統(tǒng)中未完成交貨的采購單信息,并將結果按一定的格式存儲在數據庫中,該數據可隨時更新,并加入數據版本控制。
(3)供應商交貨排程模擬分配模塊:該模塊是本系統(tǒng)的主模塊,在上述兩個模塊的計算基礎上,將系統(tǒng)中的采購單交貨排程信息,按照物料需求數據做數量和時間的分配,分配過程中加入參數控制,將模擬計算結果寫入數據庫中,此部分可多次模擬,每次模擬將產生一個新的數據版本,用于后續(xù)查詢或選擇性更新業(yè)務數據。
(4)更新 SAP系統(tǒng)業(yè)務數據模塊:根據模擬分配的結果,將計算出的采購單交貨排程,更新到 SAP系統(tǒng)的業(yè)務數據中,該部分使用SAP提供的組件BAPI技術[2]完成。
本系統(tǒng)的 4個軟件模塊,在 SAP的開發(fā)平臺-ABAP Workbench上開發(fā),采用其自帶的設計語言-ABAP。ABAP工作臺組件,是一個以 ABAP語言為基礎、功能極為強大而全面的系統(tǒng)定制和開發(fā)工具,所開發(fā)的應用程序,在R/3 Basis系統(tǒng)應用服務器的工作過程中運行,因而獨立于用戶所使用的硬件和操作系統(tǒng)。
物料需求計算程序采用ABAP編程,程序根據SAP-MRP的運行結果【庫存/需求清單】展開,將物料的需求日期和數量按時間排序,并用物料的可用庫存去滿足每一項的需求,如有某項需求不能夠滿足,則認為此項需求處于缺料狀態(tài),程序再將這項需求的缺料日期和數量,保存到數據庫中。物料需求計算程序流程,如圖2所示:
圖2 物料需求計算程序流程
程序設計時重點考慮以下問題:
(1)物料的可用庫存,需根據企業(yè)定義的庫存類型去計算,無效的庫存不能納入計算;
(2)物料的需求數據,需遵循 SAP的【庫存/需求清單】,需求類型,可加入選擇參數控制,用戶可根據實際情況,決定需要滿足的物料需求類型;
(3)計算出的物料需求數據需存儲至數據庫中,并加入數據版本,在新版本產生時,舊版本數據設置為失效。
物料供給的計算程序,將系統(tǒng)中現有的未交完采購單信息,計算出并存儲至數據庫中,可加入數據版本控制。設計時,如有其它物料供給信息,比如預留單(MR)等,也需計算并存儲,存儲時,設置一個標識列,以與采購單信息區(qū)別。
供應商交貨排程模擬分配程序,在物料需求程序計算出的物料短缺信息及采購單信息的基礎上,根據最近日期優(yōu)先滿足的原則,將采購單的交貨排程重新分配,重新分配僅針對采購單的未結數量、分配時,先以MRP建議的采購單優(yōu)先分配,當分配的采購單數量不夠滿足需求時,再對其它的采購單進行分配。所有的需求滿足后,如還有剩余的采購單數量,可以將這一部分分配到一個指定日期,并標記為無需求狀態(tài),此部分數量,可做為向供應商縮減采購訂單的依據。每次模擬分配時,需將采購單的分配結果存入數據庫中并加上版本控制,便于后續(xù)數據查詢和驗證。編寫程序時,按照模擬分配的步驟將程序模塊化,每個子模塊實現其相應功能,當有新的需求要加入時,程序比較易于維護。供應商交貨排程模擬分配程序流程,如圖3所示:
圖3 供應商交貨排程模擬分配程序流程
設計程序時,重點考慮以下問題:
(1)物料的最小包裝量:程序在進行供應商交貨排程分配時,如該物料有最小包裝量,則在分配時,不僅要將每次分配的交貨數量補足至最小包裝的整數倍,而且對于本次分配時多出的數量,需要在下一個分配中扣除,這樣才能保證由最小包裝量導致的多余數量,滿足到正確的需求日期上,而不會產生過多的交貨。
(2)供應商已確認交貨排程的處理:交貨排程通知供應商后,供應商會對此交貨排程做一個確認動作,對于這部分已確認交貨排程,在供應商沒有發(fā)貨的前提下,如企業(yè)需求出現變化,還是需要對此交貨排程重新分配。重新分配時,對于供應商已發(fā)交貨單的排程需要鎖定,并且需要把這些排程的相應日期的數量從需求中扣除。
(3)不能夠變更交期的時間區(qū)間處理 :供應商交貨排程模擬分配時,對于當前日期的鄰近日期區(qū)間內的排程,需要做鎖定處理,因這部分排程供應商已做了備料,如臨時發(fā)生排程變化,會導致雙方的交貨協(xié)議不一致。所以程序中,可設置一個參數去管理這個區(qū)間范圍,或者也可以根據物料分開管理,這樣,不同的物料會有不同的鎖定交貨期參數。
BAPI全稱為 Business Application Programming Interfaces ,即業(yè)務應用編程接口,在SAP內部組件及SAP、非SAP組件之間的技術整合和業(yè)務數據傳輸過程中,起著非常重要的作用[3]。SAP通過BAPI實現組件間的信息和數據交換。與傳統(tǒng)意義上的API不同,BAPI提供的整合功能,不僅在技術層面,同時也擴展到了業(yè)務層面。BAPI是基于RFC技術實現的,內部程序或外部程序,都可以通過BAPI訪問SAP系統(tǒng)中的業(yè)務對象、數據和應用。本模塊基于BAPI技術,調用其業(yè)務對象方法BAPI_PO_CHANGE,其功能,是根據上述模塊中計算出的供應商交貨排程模擬分配結果,對系統(tǒng)中的采購單交貨排程做批量更新動作。設計程序時,需考慮原采購單交貨排程數據,已交貨部分需要做鎖定處理,同時,還要考慮更新的事務處理,如果更新時采購單數據已被更改,需要做數據的回滾機制。
根據系統(tǒng)的開發(fā)結構,測試分4個部分,分別是物料的需求計算測試,物料的供給數據測試,供應商交貨排程模擬分配測試,更新SAP系統(tǒng)業(yè)務數據測試。
根據企業(yè)的生產需求,考慮物料現有庫存的前提下,計算出該物料的需求日期及數量,測試結果,如表1所示:
表1 物料需求計算數據
物料的供給數據,基本上是該物料的采購數據,考慮測試的完整性,加入一項預留單(MR)供給數據,后續(xù)模擬分配時,此項非采購單供給也需參與分配計算。測試結果,如表2表示:
表2 物料供給數據
供應商交貨排程模擬分配時,如表3所示:
表3 供應商交貨排程模擬分配
對于過期的需求,其建議交期會放在今天,如表3次序1和次序2兩項,建議交期為2011年11月27日(當日)。表2中的預留單一項在分配時會把需求數據(表1)中從2011年10月14日至2011年11月28日的數量999999 PC優(yōu)先滿足,剩余數量107067 PC被分配到2011年11月28日,見表3次序3 。當所有需求滿足后,如還有部分采購單未分配,程序中設置將這部分交期統(tǒng)一放到2013年12月31日,見表3次序6 。
供應商交貨排程模擬分配后,再執(zhí)行本模塊程序將模擬的結果寫入SAP系統(tǒng),測試結果,如表4和表5所示:
表4 更新前SAP交貨排程結果
表5 更新后SAP交貨排程結果
隨著企業(yè)的不斷發(fā)展,對供應商交貨管理也不斷提出新的改善需求。本文設計的供應商交貨排程自動分配系統(tǒng)基于SAP體系,數據完全與MRP系統(tǒng)集成,減少了中間轉換等不必要環(huán)節(jié),使得安排供應商交貨更有效率。為實現雙贏的企業(yè)管理模式,越來越多的企業(yè)對實施供應商關系管理(SRM)系統(tǒng)寄予更多重視,本文設計的系統(tǒng),也為企業(yè)后續(xù)實施供應商關系管理系統(tǒng)或電子采購系統(tǒng),打下堅實的基礎。
[1]黃佳.SAP程序設計[M].北京:機械工業(yè)出版社,2007.
[2]魏喆,譚建榮,馮毅雄,朱亞臣.基于組件BAPI的制造業(yè)網絡化商務異構數據集成技術[J].機械工程學報,2009,45(12):121-127
[3]黃佳.SAP業(yè)務數據傳輸指南[M].北京:人民郵電出版社,2006.