Monday, August 10, 2020

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...");
}
After running the class it will prompt as below. After that select the directory where to export all projects and select the layer from which layer all projects should be exported. 
















Thanks for reading!!!

No comments:

Post a Comment