Route Version via Maps in dynamics AX 2009(Code With Error)

hi,

Any one having Idea about maps because in this code i am getting.Code is related to route version.If any one have some time so check my code and plz correct it. Reply if any one having Idea about maps.

static void Job6(Args _args)
{
RouteId fromId,newId;
InventSiteId siteId;
InventDim inventDim;
RouteVersion routeVersion,routeVersionNew;
InventTable inventTable;
ProdRoute prodRoute;
Route route,newRo;
RouteTable routeTable;
RouteOpr routeOpr;
RouteOprTable rot;
ItemId itemId;
ConfigId configId;
RouteId routeId;
Map mapTmp2Route;
Map mapTmp2RouteOpr;
Map mapRoute;
Map mapRouteOpr;
WrkCtrTable wrkCtrTable;
MapIterator mi;
RecId recId;

;

Select routeVersion where routeVersion.ItemId == “1109” &&(routeVersion.Approved == Noyes::Yes && routeVersion.Active == Noyes::Yes) ;
if (routeVersion)
{
fromId = routeVersion.RouteId;
newId = fromId + “/1” ;
itemId = routeVersion.ItemId;
routeVersion.inventDim();
configId = configId;
siteId = routeVersion.inventSiteId();
routeVersionNew.clear();
routeVersionNew.initValue();
routeVersionNew.data(routeVersion);
routeVersionNew.Approved = false;
routeVersionNew.Active = false;
routeVersionNew.ApprovedBy = “”;
routeVersionNew.RouteId = newId;
routeVersionNew.insert();

while select route where route.RouteId == fromId
{
mapRoute = new Map(typeId2Type(typeid(recId)), Types::Record);
mapRouteOpr = new Map(typeId2Type(typeid(recId)), Types::Record);
mapTmp2Route = new Map(typeId2Type(typeid(recId)), typeId2Type(typeid(recId)));
mapTmp2RouteOpr = new Map(typeId2Type(typeid(recId)), typeId2Type(typeid(recId)));

select routeOpr
where routeOpr.OprId == route.OprId &&
((routeOpr.RouteCode == RouteAll::Route &&
routeOpr.RouteRelation == route.RouteId) ||
routeOpr.RouteCode == RouteAll::All);

routeOpr = route.routeOpr(itemId, configId, routeOpr, siteId);
if (! routeOpr)
routeOpr.initValue();

select prodRoute where prodRoute.OprId == routeOpr.OprId;
prodRoute.RouteOprMap::initFromRouteOprMap(routeOpr);

mapRoute.insert(route.RecId,route);
mapRouteOpr.insert(routeOpr.RecId,routeOpr);
mapTmp2RouteOpr.insert(prodRoute.RecId,routeOpr.RecId);
mapTmp2Route.insert(prodRoute.RecId,route.RecId);

newRo.clear();
newRo.initValue();
newRo.RecId = 0;
newRo.RouteId = newId;
prodRoute.ProdId = newRo.RouteId ;
newRo.OprId = prodRoute.OprId ;
newRo.OprNum = prodRoute.OprNum;
if( newId != Route::findFirst(newId).RouteId)
{
newRo.insert();
}
else
{
mi = new MapIterator(mapTmp2RouteOpr);
mi.begin();
while(mi.more())
{
recId = mi.value();
select routeOpr where routeOpr.RecId == recId;
select forupdate prodRoute where prodRoute.OprId == routeOpr.OprId;
ProdRoute.WrkCtrId = routeOpr.WrkCtrId;
ProdRoute.update();
mi.next();
}
}

}

}
}