How to export projects layerwise in Microsoft Dynamics AX 2012
Introduction:
How to export projects layerwise (usr, cus, var, etc.) in Microsoft Dynamics AX 2012?Details:
Here, we will see how we can export the projects from AX 2012. Now It’s very easy to do so.
We need to create a class or job in the respective environment and just need to do run.
static void exportProjects(Args _args)
{
#AotExport
TreeNodeIterator tni;
ProjectNode projectNode;
int exportFlag;
Dialog dialog = new Dialog();
DialogField folderName;
DialogField projectDefinitionOnly;
DialogField exportFromLayer;
DialogField projectType;
UtilEntryLevel layer;
SysExcelApplication application;
SysExcelWorkbooks workbooks;
SysExcelWorkbook workbook;
SysExcelWorksheets worksheets;
SysExcelWorksheet worksheet;
SysExcelCells cells;
SysExcelCell cell;
SysExcelFont font;
int row;
CustTable custTable;
str fileName;
fileName = "D:\\Backup XPOs.xlsx"; //By specifying the directly, we will get the list of exported projects
//Excel Part..............................................................................
dialog.addText("This will export all projects (shared or private) that exist in a selected model.");
projectType = dialog.addFieldValue(enumStr(ProjectSharedPrivate), ProjectSharedPrivate::ProjShared);
projectDefinitionOnly = dialog.addField(extendedTypeStr(NoYesId), 'Project Definition Only');
folderName = dialog.addField(extendedTypeStr(FilePath));
exportFromLayer = dialog.addField(enumStr(UtilEntryLevel), 'Projects from layer');
dialog.run();
if (dialog.closedOk())
{
if (!folderName.value())
throw error("Missing folder");
exportFlag = #export;
if (projectDefinitionOnly.value())
exportFlag += #expProjectOnly;
layer = exportFromLayer.value();
switch (projectType.value())
{
case ProjectSharedPrivate::ProjPrivate:
tni = SysTreeNode::getPrivateProject().AOTiterator();
break;
case ProjectSharedPrivate::ProjShared:
tni = SysTreeNode::getSharedProject().AOTiterator();
break;
}
projectNode = tni.next() as ProjectNode;
while (projectNode)
{
if (projectNode.AOTLayer() == layer && projectNode.name() like "CFS*") //if [like] specifies, system will export the projects which names starts with CFS
{
projectNode.treeNodeExport(folderName.value() + '\\' + projectNode.name() + '.xpo', exportFlag);
row++;
}
projectNode = tni.next() as ProjectNode;
}
info("Projects Exported Successfully & Exported Projects List to Excel Sheet");
}
else
warning("No action taken...");
}
Thanks for reading!!!