Here I am explaining how to write a lookup to get a list of forms and same way we can write a lookup of any metadata lookups.
In AX 2012 we have a table called 'UtilElements' to get the list of objects and then you can filter with 'UtilElementType' in your query.
In 365, they have introduced an API instead to get the list of metaData based on your requirements.
In AX 2012 we have a table called 'UtilElements' to get the list of objects and then you can filter with 'UtilElementType' in your query.
In 365, they have introduced an API instead to get the list of metaData based on your requirements.
var forms = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::FormNames();
So for lookup, I have developed a tmp table and that has two columns
1. FormName
2. FormLabel
And that table will get inserted when you open the form where we have a requirement to put the lookup.
*******************************************************
SysFormsListTmp formsList;
public void populateFormsListTmp() // custom method to populate the tmp table
{
var forms = Microsoft.Dynamics.Ax.Xpp.MetadataSupport::FormNames();
ttsbegin;
while (forms.MoveNext())
{
formsList.clear();
formsList.FormName = forms.Current;
formsList.FormLabel = formName2Pname(formsList.FormName);
formsList.insert();
}
ttscommit;
}
public void init() //init() method of the form.
{
super();
element.populateFormsListTmp();
}
******************************************************
And then you can write a lookup() method on your control.
******************************************************
public void lookup(FormControl _formControl, str _filterStr)
{
SysTableLookup sysTableLookup = SysTableLookup::newParameters(Tablenum(SysListOfFormsTmp),_formControl);
Query query = new Query();
QueryBuildDataSource queryBuildDataSource;
sysTableLookup.addLookupField(fieldNum(SysFormsListTmp, FormName));
sysTableLookup.addLookupfield(fieldNum(SysFormsListTmp, FormLabel));
queryBuildDataSource = query.addDataSource(tableNum(SysFormsListTmp));
queryBuildDataSource.addSortField(fieldNum(SysFormsListTmp, FormName), SortOrder::Ascending);
sysTableLookup.parmQuery(query);
sysTableLookup.parmTmpBuffer(formsList);
sysTableLookup.performFormLookup();
super(_formControl, _filterStr);
}
Tags: #FormLookup #MetaData #D365FO