物料清單(Bill of Materials,BOM)是產(chǎn)品結(jié)構(gòu)的技術(shù)性描述文件,它表明了成品、半成品、原材料之間的結(jié)構(gòu)關(guān)系,以及每個部件所需要的各下屬部件的數(shù)量。BOM是企業(yè)ERP(EntERPrise Resource Planning)系統(tǒng)的核心數(shù)據(jù)。對于一些沿海的加工貿(mào)易企業(yè),海關(guān)需要將企業(yè)內(nèi)部的BOM轉(zhuǎn)換為單損耗表,從而對企業(yè)的原材料進口、生產(chǎn)過程和產(chǎn)品出口進行全程監(jiān)管。
由于企業(yè)和海關(guān)對數(shù)據(jù)的要求不同,企業(yè)內(nèi)部需要了解生產(chǎn)過程每一道工序的原材料到半成品、半成品到產(chǎn)品的消耗情況,而海關(guān)等監(jiān)管部門更關(guān)心進口保稅原材料到最終出口產(chǎn)品消耗情況,需要將BOM數(shù)據(jù)轉(zhuǎn)換為單損耗數(shù)據(jù)。本文提出了一種物料清單到單損耗表的轉(zhuǎn)換算法,在構(gòu)造BOM的同時,生成單損耗表,即滿足了企業(yè)內(nèi)部數(shù)據(jù)管理系統(tǒng)的需要,也為海關(guān)等監(jiān)管部門提供了有效的監(jiān)管依據(jù)。
1 BOM與單損耗表
通過對BOM操作,可以查詢某個產(chǎn)品是由哪些原材料加工而成以及各種原材料的消耗情況。BOM中涉及到如下概念:
* 單損耗:又稱單耗,是指加工生產(chǎn)單位出1:3產(chǎn)品所耗用的進口保稅料件的數(shù)量,包括凈耗和工藝損耗。
* 凈耗:是指物化在單位出口產(chǎn)品中的進口保稅料件的數(shù)量。
* 工藝損耗:是指除凈耗之外必須耗用,且不能物化在成品中的進口保稅料件數(shù)量。
* 損耗率:指工藝損耗與單耗之比,即損耗率=工藝損耗/單耗=l-凈耗/單耗。
企業(yè)為滿足監(jiān)管要求,需要將BOM表轉(zhuǎn)換為海關(guān)要求的單損耗表。BOM表和單損耗表都是用來描述成品和料件之間的消耗關(guān)系,它們之間的區(qū)別是:BOM表描述最初料件-半成品-成品的消耗關(guān)系;而單損耗表僅描述最初料件-成品之間的關(guān)系。BOM表的變化按日期區(qū)分;而單損耗表的變化按不同的版本號區(qū)分。
BOM構(gòu)造算法主要有遞歸遍歷、非遞歸遍歷和層次遍歷等,在本項目中采用了深度優(yōu)先算法構(gòu)造BOM,使用了面向?qū)ο蟮臄?shù)據(jù)封裝技術(shù),利用路徑生成單損耗表。
2 單損耗的計算方法
下面以某化工產(chǎn)品為例,介紹其單損耗的計算方法,該產(chǎn)品的配方結(jié)構(gòu)如圖1所示,單損耗的計算過程可分為兩步。
圖1 成品配方結(jié)構(gòu)圖
(1)首先計算BOM表到單損耗表的分支1(圖1中加粗分支)的凈耗和損耗率。其中,P9為最初料件,P6和P2為半成品,P1是最終成品。Cmi(i=1,2,...,n)表示由下一個料件(半成品)加工成上一個半成品(成品)的凈耗,dmi(i=1,2,...,n)表示由下一個料件(半成品)加工成上一個半成品(成品)的損耗率。
假設(shè)由最初料件P9加工成最終成品P1的凈耗為cmpa,由最初料件P9加工成最終成品P1的損耗率為dmpa,則cmpa和dmpa的計算公式如下:
(2)其次計算BOM表到單損耗表的總的凈耗和損耗率。第1步計算了BOM表的分支1的凈耗和損耗率,下面計算BOM表到單損耗表的總的凈耗和損耗率.原材料為P9的另一個分支為P9-P6-P3-P1(分支2),通過第1步中的公式(1)、(2),計算出由分支1加工成最終成品的凈耗cm加和損耗率。同樣,可以計算出由分支2加工成最終成品的凈耗cmpb和損耗率dmpb。
假設(shè)由最初料件P9加工成最終成品P1的總凈耗為cm,由最初料件P9加工成最終成品P1的總損耗率為dm,則cm和dm的計算公式如下:
3 算法的設(shè)計及實現(xiàn)
3.1 基于面向?qū)ο蠹夹g(shù)的數(shù)據(jù)封裝
在BOM的設(shè)計中,頂點表示料件(成品、半成品或原材料),邊代表兩個料件之間的損耗關(guān)系。由于頂點和邊包含了大量的信息。且這些數(shù)據(jù)是動態(tài)變化的,在設(shè)計中使用了面向?qū)ο蟮募夹g(shù),構(gòu)造了4個類用來封裝相關(guān)數(shù)據(jù),它們分別是:
* Material類封裝了有關(guān)料件(成品)信息,是數(shù)據(jù)表Material在內(nèi)存中的映象。
* Vertex類封裝了結(jié)點相關(guān)信息。
* Edge類封裝了與邊相關(guān)信息,是數(shù)據(jù)表Product Relation在內(nèi)存的映象。
* Graph類封裝了帶權(quán)有向圖的構(gòu)造,遍歷方法。各個類之間的關(guān)系如圖2所示。
圖2 B0M結(jié)構(gòu)的類關(guān)系圖
計算成品與原材料的最終損耗關(guān)系,就是求出成品頂點到原材料頂點的所有可達路徑,并保存路徑所經(jīng)過的所有頂點。依次計算該路徑上每兩個相鄰結(jié)點之間的損耗關(guān)系,就可以得到成品與原材料的總的損耗關(guān)系;谝陨系姆治觯惴ǹ梢猿橄鬄橛嬎銉蓚頂點間的所有可達路徑。由于要保存搜索過程中的所有頂點,要使用;蜿犃袑崿F(xiàn),本算法使用棧保存搜索路徑中的頂點,用鄰接矩陣保存邊的權(quán)值信息,核心算法包括兩部分。
a.訪問數(shù)據(jù)庫,建立BOM的圖形結(jié)構(gòu)
BOM圖形結(jié)構(gòu)構(gòu)造過程為:首先讀取成品編碼構(gòu)造圖的第一個頂點,隨后依次無重復(fù)的讀入子級料件編碼,建立頂點隊列,再由父級料件編號與子級料件編號的對應(yīng)關(guān)系建立全部弧線,實現(xiàn)代碼為:
b.基于深度優(yōu)先搜索的遞歸算法
該算法實現(xiàn)從成品到原材料的所有路徑的搜索,路徑保存在數(shù)組中。
4 結(jié)論
BOM到單損耗表的構(gòu)建與轉(zhuǎn)換算法,是海關(guān)聯(lián)網(wǎng)監(jiān)管系統(tǒng)的一個重要組成部分,為加工貿(mào)易企業(yè)及監(jiān)管部門提供了數(shù)據(jù)支持,作為海關(guān)聯(lián)網(wǎng)監(jiān)管系統(tǒng)的核心算法,在聯(lián)網(wǎng)監(jiān)管系統(tǒng)中已得到驗證及應(yīng)用,結(jié)果表明:該算法穩(wěn)定、可靠,滿足系統(tǒng)要求。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標題:ERP系統(tǒng)中物料清單BOM到單損耗表(報關(guān)BOM)的轉(zhuǎn)換算法
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/1082065076.html