案例分享:BOM模糊查找批量修改

栏目:k3wise知识作者:金蝶来源:金蝶云社区发布:2024-09-16浏览:1

案例分享:BOM模糊查找批量修改

案例分享:BOM模糊查找批量修改
以下变更规则,请先研究一下,谢谢。目前是接到订单后,手工在修改。SpectekCrucial DDR3 SO-DIMM 系统BOM需切换吸塑上下盖,用量不变,烦请帮忙处理,谢谢! 条件如下:1. 料号以SPK.W或CRL.W开头;2. 规格型号含SO-DIMM;需修改:1. 吸塑上盖由601.501360 [L*W*H=290*215*35,透明无色上盖,其中一个角旁边印有标识字母;SO_DIMM_50个装] 变更为601.501610[L*W*H=290*212*35,透明PET上盖(含67.6 SODIMM 30 GEN2和材质标),需防静电,其中一个角旁边印有供应商字母标识,50个装],用量不变(0.02);吸塑下盖由601.501370[L*W*H=290*213*38,黑色下盖,其中一个角旁边印有标识字母;SO_DIMM_50个装] 变更为601.501620[L*W*H=290*212*38,黑色PS下盖(含67.6 SODIMM 30 GEN2和材质标),需防静电,其中一个角旁边印有供应商字母标识,50个装,用量不变(0.02);
分析:根据以上要求,” 条件如下”为BOM表头,”需修改:”为BOM表体,因此BOM可能会涉及多层搜索修改,最简单的是只有一层BOM就可以修改,如果中间隔层才会出现,这就是需求难点,所以,须列出BOM的树形全表,金蝶提供了精确料号查找批量修改,没有模糊搜索查找修改。
SQL语句执行:已经写成[GDQ_BOMExpand_all]存储过程(不直接用),与以下SQL相同。过程简介第一步,搜索出需要更换的数据:从物料表中搜索,料号以SPK.W,规格型号含SO-DIMM的所有料。并且为每个物料建立BOM存放在临时表@Temp_K3BOM中。建立BOM表可以用存储过程GDQ_BOMExpand,这里直接用了SQL比较详细,和存储过程GDQ_BOMExpand代码一样。第二步,更新根据第二次搜索出需要更换的数据 从临时表中过滤料号为“601.501360”的数据,直接更新ICBOMChild表即可。 全部代码如下:使用时只要更改红字有下划线相应部分参数即可DECLARE @Temp_K3BOM TABLE(FLevel INT,FInterID INT,FPNumber VARCHAR(80),FItemID INT,FNumber VARCHAR(80), FName NVARCHAR(255),[Fmodel] [varchar](255) NOT NULL, FQty DECIMAL(23,10) DEFAULT(0),FTYPE char(10)) DECLARE @I INT ---第一步,搜索出需要更换的数据declare @FNumber varchar(80)declare auth_cur cursor for SELECT FNumber FROM t_ICItem WHERE FNumber like '[u]SPK.W[/u]%' and FModel like '%[u]SO-DIMM[/u]%' open auth_curfetch next from auth_cur into @FNumberwhile (@@fetch_status=0)begin---------------------方法1--insert into@Temp_K3BOM exec GDQ_BOMExpand @FNumber--------------------方法2,比存储过程多一个查询条件E.FPNumber=@FNumber SET @i = 0 INSERT INTO @Temp_K3BOM (FLevel,FPNumber,FItemID,FNumber,FName,[Fmodel],FQty) SELECT TOP 1 @i,FNumber,FItemID,FNumber,FName,[Fmodel],1 FROM t_ICItem WHERE FNumber=@FNumber WHILE @@rowcount>0 BEGIN SET @i=@i+1 INSERT INTO @Temp_K3BOM(FLevel,FInterID,FPNumber,FItemID,FNumber,FName,[Fmodel],FQty) SELECT @i,B.FInterID,@FNumber,D.FItemID,A.FNumber,a.fname,a.FModel,D.FQty*E.FQty*B.FQty FQty FROM ICBOMChildD INNER JOIN ICBOM B ON B.FInterID = D.FInterID INNERJOIN @Temp_K3BOME ON E.FItemID = B.FItemID INNERJOIN t_ICItem a on a.FItemID = d.FItemID WHERE E.FPNumber=@FNumber and E.FLevel=@i-1 and B.FUseStatus=1072 -- B.FUseStatus=1073去掉作废的BOM END ----------------------fetch next from auth_cur into @FNumber endclose auth_curdeallocate auth_curselect * from @Temp_K3BOM where FNumber='[u]601.501360[/u]'---本条只查询无意义---第二步,更新根据第二次搜索出需要更换的数据SPK.W1066SA2GV-TDT83NLdeclare @FInterID intdeclare @FItemID intdeclare auth_cur2 cursor for select FInterID,FItemID from @Temp_K3BOM where FNumber='[u]601.501360[/u]' order by fPnumber---orFNumber='601.501370' open auth_cur2fetch next from auth_cur2 into @FInterID,@FItemIDwhile (@@fetch_status=0)begin update ICBOMChild set FItemID=( SELECTFItemID FROM t_ICItem WHERE FNumber ='[u]601.501610 [/u]' ) ---,FAuxQty=0.005,FQty=0.005where FInterID =@FInterID and FItemID=@FItemID fetch next from auth_cur2 into @FInterID,@FItemID endclose auth_cur2deallocate auth_cur2
{:5_152:}
{:5_152:}
楼主是分享还是有需要咨询的:/lol

案例分享:BOM模糊查找批量修改

案例分享:BOM模糊查找批量修改以下变更规则,请先研究一下,谢谢。目前是接到订单后,手工在修改。Spectek及Crucial DDR3 SO-DIMM 系...
点击下载文档
分享:
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息