Report Parameters in Dynamics AX 2012 SSRS Reports
SSRS in the Parameters Node
If you regularly develop Dynamics AX 2012 reports you have likely seen the report parameters displayed in SSRS under the Parameters node. It is the very last node displayed in the report. In the Parameters list are parameters coming from the datasets and global parameters that come with every AX SSRS report like AX_CompanyName and AX_UserContext.
For the parameters originating from datasets:
1. If your datasets use queries the parameters represent the ranges on your query.
2. If your datasets uses a data provider class, the parameters are the data member methods on your data contract class.
These parameters are not difficult to understand or change. The other set of parameters, the global ones, are more difficult to understand. The global parameters are added directly into to the report by right-clicking on the Parameters node and choosing Add. Microsoft adds several parameters into each report in order to pass data required every report to execute. For that reason every report will contain parameters like AX_PartitionKey, AX_UserContext and AX_CompanyName. The difficult part to understand about report parameters is, how might you take advantage of a parameter that does not come from a range or a data contract class? When would you add a parameter directly to the report?
I ran into a scenario recently where a report parameter worked flawlessly. I was modifying an existing AX report, VendPurchOpenLines_NA. The vanilla AX report uses a query, VendPurchOpenLines, to pull data rather than a data contract. On the query there are 5 different fields added as ranges. All of those fields have parameters generated for them on the SSRS report. Those parameters are in turn displayed in a prompt when the AX user executes this report. My customer wanted to also add a checkbox parameter to the prompt to include financial information. If the user unchecks the checkbox, a few fields should be hidden on the report. A checkbox does not sound difficult to add, but in this scenario that checkbox is not based on a field in the query used by the report. In other words, there was not an additional range I could add to the query without changing the data returned by the query. I was not interested in creating a data provider and data contract class for this report because it was a lot of overhead and customization for the purposes of adding one checkbox to the prompt presented to the user. The perfect solution in this scenario is a parameter added directly to the report.
In SSRS under the Parameters node, I right-clicked and chose Add. I gave my parameter a name of InclCostInfo, set the data type property to boolean, and finally set the default value property to true. That is really all there is to it. In AX when the user runs the report my newly added parameter is picked up and displayed in the prompt. If the user unchecks the checkbox in the prompt, I can respond to their request by inspecting the report parameter with this expression =Parameters!InclCostInfo.Value = "False" in my SSRS report design.