我有一物料清单结构,请高手帮写出展开的存储过程
数据结构如下:
BOM主表:
BOM_M
bom_no varchar(50) //BOM编号
parent_no varchar(50) //母件编码BOM子表
BOM_D
bom_no varchar(50)//BOM编号
bom_lot varchar(50)//BOM批号,因为一个物料可能由一个上的物料组成,用批号记录
parent_no varchar(50)//母件编码
child_no varchar(50)//子件编码
unit_qty1 float(20,8)//单位净用量
unit_qty2 float(20,8)//单位水口用量,因涉及注塑成型,所以定义了 单位水口用量
dishu int //用量底数,用于单位净用量很小时.
suhao float(20,8)//损耗率
请高手能否帮忙写出成品的BOM完全展开过程----展开到最后一层
如有物料A,B,C,D,E,F,G,H,I,J,K
BOM_M 的记录
001,A
002,B
003,C
004,D
005,E
006,FBOM_D的记录
001,001_001,A,B,1,0,1,0.02
001,001_002,A,C,1,0,1,0.02
002,002_001,B,G,1,0,1,0.02
002,002_002,B,H,1,0,1,0.02
003,003_001,C,K,0.02,0.5,1000,0.15
004,004_001,H,J,0.03,0.6,1000,0.15
请展开A到最后一层
数据结构如下:
BOM主表:
BOM_M
bom_no varchar(50) //BOM编号
parent_no varchar(50) //母件编码BOM子表
BOM_D
bom_no varchar(50)//BOM编号
bom_lot varchar(50)//BOM批号,因为一个物料可能由一个上的物料组成,用批号记录
parent_no varchar(50)//母件编码
child_no varchar(50)//子件编码
unit_qty1 float(20,8)//单位净用量
unit_qty2 float(20,8)//单位水口用量,因涉及注塑成型,所以定义了 单位水口用量
dishu int //用量底数,用于单位净用量很小时.
suhao float(20,8)//损耗率
请高手能否帮忙写出成品的BOM完全展开过程----展开到最后一层
如有物料A,B,C,D,E,F,G,H,I,J,K
BOM_M 的记录
001,A
002,B
003,C
004,D
005,E
006,FBOM_D的记录
001,001_001,A,B,1,0,1,0.02
001,001_002,A,C,1,0,1,0.02
002,002_001,B,G,1,0,1,0.02
002,002_002,B,H,1,0,1,0.02
003,003_001,C,K,0.02,0.5,1000,0.15
004,004_001,H,J,0.03,0.6,1000,0.15
请展开A到最后一层
http://community.csdn.net/Expert/topic/5473/5473611.xml?temp=.2339899
就可以构成bom单了要解析某个物件有多少个子件构成,用个递归函数来解开它
谢谢你的回复
看过你提到的帖子,有一点象.因为子件的可能用于不同的物料清单中,且所在层数可能不同.如果我用展开表的数据结构来记录这些信息,应该怎样做?
存放展开BOM的数据结构如下:
BOM_EXM
bom_no,
parent_no //被展开的母件----相对的成为母件
BOM_EXD
bom_no
bom_lot
bom_treepath 记录BOM的层次路径
parent_no 最顶层的物料编码
parent_no1 母件编码
child_no, 子件编码
unit_qty1
unit_qty2
dishu
sunhao
level_num
parent_no 最顶层的物料编码这两个是冗余的了,还不如用算法算出来。否则做bom维护的时候,你还要另外算出这两个字段填写上去
parent_no 最顶层的物料编码
是用展开存储过程算出的,如果修改了BOM结构须重新计算,BOM_EXM,BOMEXD是保存展开后的BOM,供生产使用