Hi Ankit,
Here is the logic you can put in validate method -
select firstOnly prodBOMLoc
where prodBOMLoc.ItemId == prodJournalBom.ItemId
&& prodBOMLoc.ProdId == prodJournalBOM.ProdId;
if (!prodBOMLoc)
{
ret = checkFailed(strFmt("Item %1 is not a part of Production BOM", prodJournalBom.ItemId));
}
For lookup, this should work -
public void lookup(FormControl _formControl, str _filterStr)
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(InventTable), _formControl);
Query query = new Query();
QueryBuildDataSource qbds1, qbds2;
QueryBuildRange queryBuildRangeItemType;
qbds1 = query.addDataSource(tableNum(InventTable));
qbds2 = qbds1.addDataSource(tableNum(ProdBOM));
qbds2.joinMode(JoinMode::InnerJoin);
qbds2.addLink(fieldNum(InventTable, ItemId), fieldNum(ProdBOM, ItemId));
qbds2.addRange(fieldNum(ProdBOM, ProdId)).value(queryValue(prodJournalBom.ProdId));
sysTableLookup.addLookupfield(fieldNum(InventTable,ItemId));
sysTableLookup.addLookupMethod(tableMethodStr(InventTable,itemGroupId));
sysTableLookup.addLookupMethod(tableMethodStr(InventTable,defaultProductName));
sysTableLookup.addLookupfield(fieldNum(InventTable,ItemType));
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
}