Hi,
I am facing a problem to display all the levels for Bill of material(BOM) for a item. i.e suppose item has different versions like 4 the bellow logic shows only 3 levels .
Can any one plz give me the solution for show all the levels of BOM in ax 2009
select vBomVer where vBomVer.bOMId == bOMId;//“20A801A8214/7SP-CE2”;
{
while select vBom where vBom.BOMId == vBomVer.BOMId
{
vTmpBOM.BOMId = vBomVer.BOMId;
vTmpBOM.Level1 = vBomVer.ItemId;
VTmpBOM.Level2 = vBom.ItemId;
vTmpBOM.Qty = vBom.BOMQty;
vTmpBOM.insert();
}
while select forupdate vTmpBom
{
select vInventTable where vInventTable.ItemId == vTmpBom.Level2;
//if (vInventTable.ItemType == ItemType::BOM)
{
select vBomver where vBomVer.ItemId == vTmpBom.Level2;
{
while select vBom where vBom.BOMId == vBomVer.BOMId
{
vTmpBom.BOMId = vTmpBom.BOMId;
vTmpBom.Level1 = vTmpBom.Level1;
vTmpBom.Level2 = vTmpBom.Level2;
vTmpBOM.Qty = vBom.BOMQty;
vTmpBom.Level3 = vBom.ItemId;
vTmpBom.insert();
}
}
}
select vInventTable where vInventTable.ItemId == vTmpBom.Level3;
// if (vInventTable.ItemType == ItemType::BOM)
{
select vBomver where vBomVer.ItemId == vTmpBom.Level3;
{
while select vBom where vBom.BOMId == vBomVer.BOMId
{
vTmpBom.BOMId = vTmpBom.BOMId;
vTmpBom.Level1 = vTmpBom.Level1;
vTmpBom.Level2 = vTmpBom.Level2;
vTmpBom.Level3 = vTmpBom.Level3;
vTmpBOM.Qty = vBom.BOMQty;
vTmpBom.Level4 = vBom.ItemId;
vTmpBom.insert();
}
}
}
select vInventTable where vInventTable.ItemId == vTmpBom.Level4;
// if (vInventTable.ItemType == ItemType::BOM)
{
select vBomver where vBomVer.ItemId == vTmpBom.Level4;
{
while select vBom where vBom.BOMId == vBomVer.BOMId
{
vTmpBom.BOMId = vTmpBom.BOMId;
vTmpBom.Level1 = vTmpBom.Level1;
vTmpBom.Level2 = vTmpBom.Level2;
vTmpBom.Level3 = vTmpBom.Level3;
vTmpBom.Level4 = vTmpBom.Level4;
vTmpBOM.Qty = vBom.BOMQty;
vTmpBom.insert();
}
}
}
}