The Reporting Landscape: Choosing the Right Tool
Understand the F&O reporting toolkit β SSRS, Power BI, Excel, Electronic Reporting, and analytical workspaces β and learn when to use each one.
Why are there so many reporting tools?
Think of a kitchen.
You wouldnβt use a blender to slice bread or a toaster to make soup. Each appliance does one thing really well. F&O reporting works the same way β SSRS prints pixel-perfect documents (invoices, packing slips), Power BI builds interactive dashboards for analysis, Excel lets business users play with data in a familiar tool, and Electronic Reporting generates regulatory documents (tax filings, payment formats) that governments require.
Pick the right appliance for the dish youβre making.
The five reporting tools at a glance
| Feature | SSRS | Power BI | Excel | Electronic Reporting | Analytical Workspaces |
|---|---|---|---|---|---|
| Primary purpose | Pixel-perfect operational documents | Interactive dashboards & analytics | Ad-hoc data editing & export | Regulatory / business document generation | Embedded KPIs & visuals in workspaces |
| Data source | RDP classes, queries, data entities | Entity store (star schema) | OData entities | ER data model (mapped to tables/entities) | Aggregate measurements & entity store |
| Output format | PDF, Word, Excel, HTML | Interactive visuals (browser) | Excel workbook | XML, Excel, Word, PDF, text | Charts, KPI tiles, drill-through |
| Requires code? | Yes (RDP class or query in AOT) | Minimal (Power BI Desktop) | No code | No code (config-driven) | Minimal (workspace form extensions) |
| User interaction | Parameter dialog β rendered doc | Filter, slice, drill through | Edit cells, push back to F&O | Generate on demand or batch | View in workspace, drill to details |
| Best for | Invoices, picking lists, cheques | Executive dashboards, trend analysis | Quick exports, data corrections | Tax reports, payment files, e-invoices | Role-based operational summaries |
Scenario: Elena maps PacificForge's reporting needs
Elena Vasquez sits down with CTO Gregor to inventory PacificForge Manufacturingβs reporting requirements:
| Requirement | Tool | Reasoning |
|---|---|---|
| Print customer invoices with exact layout | SSRS | Pixel-perfect, batch-printable |
| CFO wants a live production KPI dashboard | Power BI | Interactive, aggregated analytics |
| Warehouse team needs to bulk-update item weights | Excel | Edit-in-Excel with OData push-back |
| New Zealand IRD requires GST return in specific XML | Electronic Reporting | Regulatory format, config-driven |
| Production manager wants daily yield at a glance | Analytical workspace | Embedded KPIs in production workspace |
Gregor nods: βSo weβre not picking one tool β weβre picking the right tool per scenario.β
Report Data Provider (RDP) classes
Most SSRS reports in F&O get their data from an RDP class β an X++ class that runs queries, processes business logic, and populates a temporary table that the report reads.
How RDP classes work
ββββββββββββββββ ββββββββββββββββ βββββββββββββββββ
β Report ββββββΆβ RDP Class ββββββΆβ Tmp Table β
β (SSRS .rdl) β β (X++ logic) β β (data rows) β
ββββββββββββββββ ββββββββββββββββ βββββββββββββββββ
β β β
Renders output Runs processReport() Report reads
from tmp table populates temp table from this table
| Concept | Detail |
|---|---|
[SRSReportParameterAttribute] | Decorates the RDP class to link it with a report contract (parameters) |
| Contract class | Defines user-facing parameters (date range, customer group) β decorated with [DataContractAttribute] |
processReport() | The main method β queries data, applies logic, inserts into the temp table |
| Temp table | Must be InMemory or TempDB type. The report binds to this tableβs fields |
Vik's RDP class skeleton
Vik Kapoor at Axion Dynamics shows how a basic RDP class is structured:
[SRSReportParameterAttribute(classStr(SalesInvoiceContract))]
class SalesInvoiceRDP extends SRSReportDataProviderBase
{
SalesInvoiceTmp salesInvoiceTmp;
[SRSReportDataSetAttribute(tableStr(SalesInvoiceTmp))]
public SalesInvoiceTmp getSalesInvoiceTmp()
{
select salesInvoiceTmp;
return salesInvoiceTmp;
}
public void processReport()
{
SalesInvoiceContract contract = this.parmDataContract();
// Query logic, business rules
// Insert rows into salesInvoiceTmp
}
}Key points:
- The
[SRSReportDataSetAttribute]links the getter method to the temp table the report reads processReport()is where all the heavy lifting happens- The contract class provides parameter values entered by the user
Report queries (the simpler alternative)
Not every report needs an RDP class. Simple reports can use an AOT query directly β the report binds to the queryβs data sources without any X++ code.
| Approach | When to use |
|---|---|
| AOT Query | Straightforward data retrieval, no business logic needed |
| RDP Class | Complex calculations, multiple data sources, conditional logic |
Reporting datastores
Entity store
The entity store is a read-optimised, star-schema database that mirrors F&O transactional data into a format designed for analytics. Power BI reports and analytical workspaces read from the entity store β never directly from the transactional database.
| Concept | Detail |
|---|---|
| Aggregate measurements | Pre-defined measures (sum, count, average) over entity store data β like βTotal Revenue by Regionβ |
| Aggregate dimensions | The grouping axes β customer, date, product, region |
| Refresh | Scheduled (e.g. every 4 hours) or on-demand β not real-time |
| Star schema | Fact tables (transactions) surrounded by dimension tables (lookups) β optimised for slicing and dicing |
Why not query the live database?
Running heavy analytical queries against the live OLTP database would:
- Slow down transactional operations β users creating sales orders would see degraded performance
- Produce poor query plans β OLTP tables are normalised for writes, not analytical reads
- Risk locks and contention β long-running reports could block data entry
The entity store solves all three: itβs a separate read replica with a denormalised star schema optimised for aggregation.
Aggregate measurements
Aggregate measurements are the building blocks for analytical workspaces and KPI tiles. They define:
- What to measure β revenue, order count, defect rate
- How to aggregate β SUM, COUNT, AVERAGE, MIN, MAX
- What dimensions to group by β customer, date, product category
ββββββββββββββββββββββ
β Aggregate β
β Measurement β
β "TotalRevenue" β
ββββββββββ¬ββββββββββββ
β
ββββββββββββββββββΌβββββββββββββββββ
βΌ βΌ βΌ
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β Dimension: β β Dimension: β β Dimension: β
β Customer β β Date β β Region β
ββββββββββββββββ ββββββββββββββββ ββββββββββββββββ
Reporting security
F&O reporting inherits the standard security model β but there are report-specific considerations.
| Layer | How it applies to reporting |
|---|---|
| Role-based security | Users only see menu items (and therefore reports) that their role grants access to |
| Duty/privilege | Reports are exposed through privileges β duties β roles. A custom report needs its own privilege and menu item |
| Data security (XDS) | Row-level filtering applies to report queries too β a regional manager only sees their regionβs data |
| Report parameters | Contract classes can enforce restrictions (e.g. limit date range to current fiscal year) |
| Entity store security | Power BI workspaces inherit workspace-level security. Aggregate data may be less sensitive than row-level |
Exam tip: Report visibility = menu item security
If a user cannot see a report, the first thing to check is whether their security role includes the privilege that grants access to the reportβs menu item. Reports arenβt secured directly β theyβre secured through the menu item β privilege β duty β role chain.
When to use each tool: decision flowchart
Elena's decision tree for PacificForge
Elena creates a decision flowchart for her team:
- Is it a printed document (invoice, packing slip, cheque)? β SSRS
- Is it an interactive dashboard for analysis? β Power BI
- Does the user need to edit data in a familiar tool? β Excel (Edit in Excel)
- Is it a regulatory/compliance document with a specific format? β Electronic Reporting
- Is it a quick operational KPI embedded in a workspace? β Analytical workspace
βIf the answer is βwe need a printed document with a specific layout,β itβs always SSRS,β Elena tells Sophie Chen, whoβs been defaulting to Power BI for everything.
PacificForge needs to generate a GST return file in a government-mandated XML format. Which reporting tool should Elena use?
A user reports they cannot see the 'Production Efficiency' report in the menu. What should Elena check first?
Why does F&O use an entity store instead of querying the live transactional database for Power BI reports?
Which data source would you use for an SSRS report that requires complex business logic to calculate weighted average costs across multiple warehouses?
Next up: SSRS Reports: Precision Design β deep dive into building, designing, and deploying SSRS reports in F&O.