Hi Folks.
I had a requirement for a custom lookup of ItemId on sales Line for External ItemId to be included. I have duplicated the standard Query and the View for the same and have added the CustVendExternalItem table with Outer Join.
[FormControlEventHandler(formControlStr(SalesTable, SalesLine_ItemId), FormControlEventType::Lookup)]
public static void SalesLine_ItemId_OnLookup(FormControl sender, FormControlEventArgs e)
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(tableNum(ALE_InventItemIdLookupSimpleView), sender);
Query query = new Query();
QueryBuildDataSource qbds;
//CustAccount custAccount = sender.formRun().design().controlName(formControlStr(SalesTable, CustAccount)).valueStr();
FormControlCancelableSuperEventArgs ce = e as FormControlCancelableSuperEventArgs;
qbds = query.addDataSource(tableNum(ALE_InventItemIdLookupSimpleView));
//qbds.addRange(fieldNum(ALE_InventItemIdLookupSimpleView , CustVendRelation)).value(strFmt('%1',SysQuery::valueNotEmptyString()));
// Add fields
sysTableLookup.addLookupfield(fieldNum(ALE_InventItemIdLookupSimpleView, ItemId));
sysTableLookup.addLookupfield(fieldNum(ALE_InventItemIdLookupSimpleView, Product));
sysTableLookup.addLookupfield(fieldNum(ALE_InventItemIdLookupSimpleView, ProductName));
sysTableLookup.addLookupfield(fieldNum(ALE_InventItemIdLookupSimpleView, NameAlias));
sysTableLookup.addLookupfield(fieldNum(ALE_InventItemIdLookupSimpleView, ExternalItemId));
sysTableLookup.addLookupfield(fieldNum(ALE_InventItemIdLookupSimpleView, ItemGroupId));
sysTableLookup.addLookupfield(fieldNum(ALE_InventItemIdLookupSimpleView, ItemType));
// Run lookup
sysTableLookup.parmQuery(query);
sysTableLookup.performFormLookup();
//cancel super() to prevent error.
ce.CancelSuperCall();
}
In the View on the table browser "" was not working and when i have checked in the DB so it has shown in Null value
to over come I have used in DB ISNULL(FieldName,"") and it worked. I want to do the same in D365 fo. I have gone through many of the blogs and found SysComputedColumn class. I am not aware how to use it.
SysComputedColumn::if(SysComputedColumn::isNullExpression(fieldName), SysComputedColumn::returnLiteral(""), fieldName); https://robscode.onl/d365-outer-join-in-view-with-null-enum-column/Kindly help me out on this issue.
would be appreciated.
Cheers.