K3 BOM卷積查詢

2022-05-02 18:24:11 字數 3825 閱讀 6387

--建立bom查詢表表頭

create

table

hwbom

(fid

intidentity(1,1

),fitemid

int)

--建立bom查詢表表體

create

table

hwbomchild

( fid

intidentity(1,1

), forgid

int,

fparentid

int,

flevel

int,

fsn

nvarchar(200

), fitemid

int,

fqty

decimal(28,19

), fbominterid

int,

fentryid

int)

--將需要的產品**插入到bom查詢表頭中,此表在此處需求根據公司財務要求:本次查詢為所有的產品**的bom,根據公司物料要求的設計為01.08.為產品**,但不包含01.08.00

insert

into

hwbom

(fitemid)

select t.fitemid from

t_icitem t

inner

join t_item t5 on t5.fitemid =

t.fitemid

left

join icbom t6 on t6.fitemid=

t.fitemid

left

join icbomgroup t7 on t7.finterid=

t6.fparentid

where

t.ferpclsid

in (2,3,5)--

2代表自製件,3代表委外件,5代表虛擬件

and t5.fdeleted=

0--此處根據公司要求篩選物料**即可

and t5.fnumber like

'01.08.%

'and t5.fnumber not

like

'01.08.00%'--

可根據需要限定bom範圍

order

byt.fnumber

--此處插入表體的內容分別為:表頭自增長內碼、父類標誌碼、編號、物料內碼、數量、bom內碼、行號、級別

insert

into

hwbomchild

(forgid,fparentid,fsn,fitemid,fqty,fbominterid,fentryid,flevel)

select

fid,-1

as fparentid,'

001',u1.fitemid,1

as fqty,t1.finterid as fbominterid,-

1as fentryid,0

from

hwbom u1

left

join icbom t1 on u1.fitemid=

t1.fitemid

declare

@level

intset

@level=1

--迴圈進行bom填充

--判定bom表中的物料內碼在bom中是否存在,在繼續進行插入,插入bom表中的資料資訊

while

exists(

select

1from

hwbomchild

where flevel=

@level-1

and fitemid in

(select fitemid from

icbom)

)and

@level

<

20begin

insert

into

hwbomchild

(forgid,fparentid,fsn,fitemid,fqty,fbominterid,fentryid,flevel)

select

u1.forgid,u1.fid,u1.fsn+'

.'+right('

000'

+convert(nvarchar(50),t2.fentryid),3),t2.fitemid,u1.fqty*(t2.fqty/t1.fqty)/(1

-t2.fscrap/

100),

t2.finterid,t2.fentryid,

@level

from

hwbomchild u1

inner

join icbom t1 on u1.fitemid=

t1.fitemid

inner

join icbomchild t2 on t2.finterid=

t1.finterid

where u1.flevel=

@level-1

set@level

=@level+1

endselect

row_number()

over(order

by t2.fnumber ) number

, t2.fnumber 產品**,t2.fname 產品名稱,t2.fmodel 產品規格,

t1.fsn 序號,

t3.fnumber 材料**,t3.fname 材料名稱,t3.fmodel 材料規格,t1.fqty 產品用量,yy.fname 材料屬性,

t5.fqty 單位用量,

t5.fscrap 損耗率,

t4.fbomnumber bom編號,

t6.fname

as是否跳層,

t5.fnote 備註,

t5.fpositionno 位置號

into

#caicai

from

hwbom u1

inner

join hwbomchild t1 on u1.fid=

t1.forgid

inner

join t_icitem t2 on t2.fitemid=

u1.fitemid

inner

join t_icitem t3 on t3.fitemid=

t1.fitemid

left

join icbom t4 on t4.finterid=

t1.fbominterid

left

join icbomchild t5 on t5.finterid=t1.fbominterid and t5.fentryid=

t1.fentryid

left

join t_submessage t6 on t6.finterid=

t4.fbomskip

inner

join t_submessage yy on yy.finterid=

t3.ferpclsid

--where fbomnumber='物料編碼'

order

byu1.fid,t1.fsn

truncate

table

hwbom

--清空附表資料

truncate

table

hwbomchild

--清空子表資料

drop

table

hwbom

--刪除父表

drop

table

hwbomchild

--刪除子表

3 成本bom查詢 BOM系統有什麼作用

bom系統是erp核心基礎功能模組,包含編碼規則制定 物料主資料維護 標準bom和特徵bom錄入 實現bom物料正查和物料用途反查 多階展開和反展開 bom物料批量變更 物料替代對照表 客戶料號對照表 設計變更等基礎功能。編碼規則是對物料的基本分類,通常的按照大中小進行編碼規則的制定,大類如成品 半...

k3二次開發 之 bom分層展開

create table dbo bom detail pkid int identity 1,1 not null bom head pkid int not null children item int not null qty decimal 10,0 not null on primary ...

金蝶K3使用一碼多BOM處理多版本物料生產需求

目的和原理 1個物料使用多套bom來區分多個差異版本的生產需求,在開生產任務單的時候,手動選擇需要的bom編號,系統會根據該bom編號自動匹配生成生產投料單,從而實現乙個物料編碼多種版本生產需求。操作步驟 1 為乙個父項物料新增2個以上的bom 2 在bom中做好版本區分,以便選擇時參照 如在bom...