Thursday, April 14, 2022

X++ | AX2012 - Create a class name list lookup

This is almost the same thing as this post X++ | d365FO - Create a list of table name lookup, but in AX2012.


Thanks Muhammad Afsar Khan here as the original source code and idea comes from his post Display all/specific AOT tables in a lookup.


The overview processes are very similar to D365FO version, but now we don't need to create the temp table:

  1. Add a lookup method to the table that will be used as a form's data source
  2. Add a lookup method to the form control


1. Add a lookup method to the table that will be used as a form's data source



 public void lookupClassName(FormStringControl _control)  
 {  
   QueryBuildDataSource  qbds;  
   Query          q = new Query();  
   SysTableLookup     lookup = SysTableLookup::newParameters(tableNum(UtilidElements), _control, true);  
   qbds = q.addDataSource(tablenum(UtilidElements));  
   qbds.addRange(fieldnum(UtilidElements, recordType)).value(SysQuery::value(UtilElementType::Class));  
   //qbds.addRange(fieldnum(UtilidElements, name)).value(SysQuery::value("ABC*"));  
   //qbds.addSortField(fieldNum(UtilidElements, name), SortOrder::Ascending);  
   lookup.addLookupField(fieldnum(UtilidElements, Name), true);  
   lookup.parmQuery(q);  
   lookup.performFormLookup();  
 }  


2. Add a lookup method to the form control



 public void lookup()  
 {  
   //super();  
   [OurTableName].lookupClassName(this);  
 }  


Thanks for reading and until the next post!