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