Create report runtime in axapta through code

This is code sample to Create report runtime in axapta through code

 static void MakeReportInJob(Args _args)  
 {  
 #AOT  
 str reportName = 'aatestReport';  
 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();  
 }