Best Practices: Report Data Methods
Microsoft Dynamics AX 2012
With the introduction of the new developer tools provided by the Microsoft Dynamics Ax 2012 Reporting Framework, accessing AX business data has never been easier. The framework offers provides many built-in utility functions that can be exercised directly using text box expressions. However, there are cases where more complex algorithms are necessary to produce the desired output. For these situations, it’s worth considering taking advantage of report data methods. MSDN offers an excellent overview of Report Data Methods that’s worth reviewing. The following article surfaces some of the highlights from this reading.
DO USE ….. logic in the Report Data Provider class to calculate and manipulate data whenever possible
It is strongly recommended that you take steps to minimize the amount of network traffic required to produce the report data set. One of the key benefits to Report Data Providers is that all of the processing occurs on the AOS. The SSRS Server makes a request to build the data set and the AOS streams the response back without a great deal of back and forth communication. For this reason, porting all of your AX data access manipulation code into a Report Data Provider class is worth considering before using Data Methods.
DO USE ….. report data methods to apply custom formatting operations at runtime
The framework offers provides many built-in utility functions that can be exercised directly using text box expressions. However, there are cases where more complex algorithms involving external data are required to produce the desired output. For these case, it may be appropriate to use some custom business logic
DO NOT ….. reference C# data methods from an expression to access AX Service APIs
Whereas report data method are perfectly suited for producing rectangular data sets using C# business logic, they are NOT intended for use as a callback into AX Services. The report uses Data Methods in SSRS Expressions to make service calls to AX. The expression host that performs the execution is by design a low trust environment. This has been known to cause the service execution to fail in many cases.