--建立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...