Creating a report in X++ code and running


Here is a small job that demonstrates the main parts of build a report dynamically in X++ and launching it.


 



static void MakeReportJob(Args _args)


{


    #AOT


    str reportName = ‘aaMakeReport’;


    tableid custTableId = tablenum(CustTable);


    TreeNode reportNode = TreeNode::findNode(#ReportsPath);


    Report areport;


    ReportDesign design;


    ReportAutoDesignSpecs specs;


    ReportSection section;


    ReportRun run;


    ;


   


    // Delete the report if it already exists


    areport = reportNode.AOTfindChild(reportName);


    if (areport)


        areport.AOTdelete();


 


    // Build the report


    areport = reportNode.AOTadd(reportName);


    areport.query().addDataSource(custTableId);


    design = areport.addDesign(‘Design’);


    specs = design.autoDesignSpecs();


    section = specs.addSection(ReportBlockType::Body, custTableId);


    section.addControl(custTableId, fieldnum(CustTable, AccountNum));


    section.addControl(custTableId, fieldnum(CustTable, Name));


   


    // Now the report will not prompt for user input


    areport.interactive(false);


    areport.query().interactive(false);


   


    areport.AOTcompile();


   


    run = ClassFactory.reportRunClass(new Args(reportName));


    run.init();


    run.run();


}


 

Comments (0)