每日分享(0411)BOM计算课件-综合交流区论坛-低代码平台-本牛千智|专注WorkFine

每日分享(0411)BOM计算课件

以下附件内容为2023年4月11日分享的BOM计算存储过程脚本,大家可以下载到本地后根据实际情况进行新建调整

20240312024351384-execbom.sql_.zip
zip文件
959B
alter PROCEDURE Exec_BOM
	@serial varchar(20),				--需求计划号
	@material_id varchar(20),			--物料编号
	@request decimal(20,2) = 1,			--物料需求数量
	@current_level decimal(5,0) = 0,	--当前计算层级
	@level decimal(5,0) = 0				--需求计算层级
AS
BEGIN
	set @current_level=@current_level+1
	--根据层级,判断本级是否写入到结果中
	if @current_level=@level
		begin
			insert into UDT_M_116 values(131,0,@serial,@material_id,@request,@current_level)
		end
	else
		begin
			--建立物料信息临时表
			create table #materialInfo(
				id varchar(20),
				request decimal(20,2)
			)
			--获取该物料在BOM表中的记录号
			declare @reportId int
			select @reportId = RID from UDT_S_109 where UDF_S_179=@material_id
			--获取该物料需要的所有下级物料
			insert into #materialInfo
			select UDF_M_184,UDF_M_187 from UDT_M_110 where RID=@reportId
			--判断是否含有下级,没有则将自己写入到结果中
			if @@ROWCOUNT>0
			begin
				--指针递归遍历所有下级物料
				declare @info_id varchar(20), @info_request decimal(20,2)
				--定义指针(local参数一定要记得)
				declare my_cursor cursor local for select * from #materialInfo
				open my_cursor
				fetch my_cursor into @info_id,@info_request
				while @@FETCH_STATUS=0
				begin
					--设置下一级需要的数量
					set @info_request=@info_request*@request
					--递归计算
					exec Exec_BOM @serial,@info_id,@info_request,@current_level,@level
					fetch my_cursor into @info_id,@info_request
				end
				close my_cursor
				deallocate my_cursor
			end
			else
			begin
				--不再递归遍历下级物料并将自己写入结果表
				insert into UDT_M_116 values(131,0,@serial,@material_id,@request,@current_level)
			end
			--释放临时表
			drop table #materialInfo
		end
END
GO

如需要体验,可以下载压缩包,支持LocalDB或SQL Server2014以上版本

20240312024309201-bom.zip.zip
zip文件
602.1K

2023-4-11物料需求计划

  1. bom是什么
    物料清单,用于记录一个项目用到的所有下级材料
  2. bom计算最小组成
    物料信息、BOM、需求计划
  3. bom计算过程
    基于Workfine的存储过程编写
  4. 思考:结合库存、允许使用库存中间件

原文地址

Workfine每日分享(0411)BOM计算课件 – 服务中心

视频教程

请登录后发表评论

    请登录后查看回复内容