AX 2012, Calling a ssrs REport from x++

This question is answered

Hi ,

How can I run (call)  a SSRSreport from a method in X++.

Thanks.

Verified Answer
  • You can use the SrsReportRunController class as in this example:

       SrsReportRunController  controller;

       controller = new SrsReportRunController();

       controller.parmReportName(ssrsReportStr(LedgerTrialBalance, Summary));

       controller.startOperation();

    The controller has additional parm methods to help control running the report, such as parmShowDialog which you can use to skip the report dialog.

    For advanced features you can create a new controller class extending SrsReportRunController and override methods.  For example, by overriding the prePromptModifyContract method you can manipulate the query or other data members before the dialog is shown.

All Replies
  • You can use the SrsReportRunController class as in this example:

       SrsReportRunController  controller;

       controller = new SrsReportRunController();

       controller.parmReportName(ssrsReportStr(LedgerTrialBalance, Summary));

       controller.startOperation();

    The controller has additional parm methods to help control running the report, such as parmShowDialog which you can use to skip the report dialog.

    For advanced features you can create a new controller class extending SrsReportRunController and override methods.  For example, by overriding the prePromptModifyContract method you can manipulate the query or other data members before the dialog is shown.

  • Thanks Daniel,

    It's working.

    Case closed.

  • Hi,

           I need to know the usage of controller class in ax 2012 for creating SSRS Report.

           Any ideas, Please share it.

    Regards,

    Zahir

  • Report programming model for Microsoft Dynamics AX 2012

    search for above text in BING.

    MOst comprehensive documentation for reporting framework in ax 2012

  • How can I run the report with parameters?

  • you have to get the contract object associated to the execution by using this kind of construct

    ReportContractClass contract;

    contract = controlerObj.ParmReportContract().ParmRDPContract() as ReportContractClass

    contract.parmParamete1(SetValueHere)

    contract.parmParameter2(SetValuehere);

    now call this method,

    ControlerObj.startOperations()

  • With parameters like calling the report with parameter name Customer_Num, Invoice_ID...,  not report parameters like print destination, report name, caption... ?

  • @ Ante    

    You need to first set the report name for the controller object

    then you get the ReportContract object from it as mentioned above.

    ReportContractContains

    1)RDPContract   (If you have a DP class attached to a DS used in the report which has a parameters)

    2)RDLContract  (these are parameters used just in the design of the report )

    3)QueryContracts (the query  LIST associated with the execution of the DP)

    4)PrintContracts (these are the print destination settings associated to report execution)

    you can explicitly set all these for a report once the report name is set and you have ReportContract object

    Hope this might be of some help

    Cheers

    Venkatesh

  • I am so happy to have found this snippet of code,

    contract = controlerObj.ParmReportContract().ParmRDPContract() as ReportContractClass

    That did the trick for me!

    Thanks, Jim