Display BOM Levels in Ax 2009

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();

}

}

}

}