1. Create a class or add below method to use it globally:
Class printers
{
}
//This method loads
all available printers to a Map object
static Map printerMap()
{
Microsoft.Dynamics.AX.Framework.Reporting.Shared.PrinterHelper
printerHelper;
Microsoft.Dynamics.AX.Framework.Reporting.Shared.PrinterInfo
printerInfo;
System.Collections.ArrayList names;
System.Collections.IEnumerator enumerator;
Map printerMap;
str name;
int printerStatus;
str driverName;
str portName;
str comments;
int jobCountSinceLastReset;
if(!printerMap)
{
printerMap = new Map(Types::String,
Types::Container);
// BP Deviation documented
printerHelper = new
Microsoft.Dynamics.AX.Framework.Reporting.Shared.PrinterHelper();
names
= printerHelper.get_PrinterNames();
if (names != null)
{
enumerator = names.GetEnumerator();
while (enumerator.MoveNext())
{
name = enumerator.get_Current();
printerInfo = printerHelper.GetPrinterInfo(name);
// BP Deviation documented
printerStatus =
CLRInterop::getAnyTypeForObject(printerInfo.get_PrinterStatus());
// BP Deviation documented
driverName =
CLRInterop::getAnyTypeForObject(printerInfo.get_DriverName());
// BP Deviation documented
portName =
CLRInterop::getAnyTypeForObject(printerInfo.get_PortName());
// BP Deviation documented
comments =
CLRInterop::getAnyTypeForObject(printerInfo.get_Comment());
// BP Deviation documented
jobCountSinceLastReset =
CLRInterop::getAnyTypeForObject(printerInfo.get_JobCountSinceLastReset());
printerMap.insert(name, [name, printerStatus, driverName, portName,
comments, jobCountSinceLastReset]);
}
}
}
return printerMap;
}
2. Build lookup Method
public static void
printerLookup(FormControl _formControl)
{
SysTableLookup
sysTableLookup;
TmpTableFieldLookup
tmpTableFieldLookup;
Enumerator
en;
List entitylist = new
list(types::String);
Map printerMap;
MapEnumerator
enumerator;
PrinterName
printerName;
printerMap = printerMap(); //If above method was
created in Global class else call specific class
enumerator =
printerMap.getEnumerator();
while (enumerator.moveNext())
{
printerName = enumerator.currentValue();
entitylist.addend(printerName);
}
en =
entityList.getEnumerator();
while (en.moveNext())
{
tmpTableFieldLookup.TableName = en.current();
tmpTableFieldLookup.insert();
}
sysTableLookup = SysTableLookup::newParameters(tableNum(tmpTableFieldLookup), _formControl);
sysTableLookup.addLookupfield(fieldNum(TmpTableFieldLookup,
TableName));
sysTableLookup.setLabel("@SYS62708");
//BP Deviation documented
sysTableLookup.parmTmpBuffer(tmpTableFieldLookup);
sysTableLookup.performFormLookup();
}
Is the control on the field string control at which lookup is written ?
ReplyDeleteTablename stringsize (40) from TmpTableFieldLookup doesn't match PrinterName stringsize (260).
ReplyDelete