RDLC Reports in Business Central: Complete Beginner Guide
RDLC reports are a powerful way to create structured, print-ready and pixel-precise reports in Microsoft Dynamics 365 Business Central. This guide explains the complete flow from an AL report dataset to an RDLC layout in Report Builder.
What is an RDLC report?
In Business Central, a report has two important layers: the dataset, which defines the data available to the report, and the layout, which controls how that data is presented. RDLC is a report-definition layout technology used when you need detailed control over positioning, formatting, grouping and print output.
Business Central also supports Word and Excel layouts. RDLC is especially useful when you need a pixel-perfect document or complex visual formatting.
How a Business Central RDLC report works
- Create an AL
reportobject. - Define the report dataset with dataitems and columns.
- Add request filters when users need to filter the report.
- Generate or create the report layout.
- Open the layout in Microsoft Report Builder or an RDLC designer.
- Place dataset fields into the report and format them.
- Publish, run and test the report in Business Central.
Create your first AL report
Start with a simple customer list. The report object below defines a Customer dataitem and exposes fields as dataset columns.
report 50120 "Dynexal Customer List"
{
Caption = 'Dynexal Customer List';
UsageCategory = ReportsAndAnalysis;
ApplicationArea = All;
dataset
{
dataitem(Customer; Customer)
{
RequestFilterFields = "No.", "Customer Posting Group";
column(CustomerNo; "No.")
{
}
column(CustomerName; Name)
{
}
column(City; City)
{
}
column(CountryRegionCode; "Country/Region Code")
{
}
}
}
}
Here, Customer is the dataitem. Each column exposes a value to the report layout. RequestFilterFields makes selected fields available as filters on the request page.
Understanding dataitems and columns
A dataitem is the main source of records for a report. You can use tables as dataitems and create nested dataitems when you need parent-child data. Columns expose individual values from those records to the report dataset.
dataset
{
dataitem(Customer; Customer)
{
column(CustomerNo; "No.") { }
column(CustomerName; Name) { }
dataitem(Contact; Contact)
{
column(ContactName; Name) { }
}
}
}
For beginners, start with one dataitem and a small number of columns. Add nested dataitems only when the report actually needs related records.
Request filters in reports
Users often need to choose which records should appear. RequestFilterFields is a simple way to expose filters on the report request page.
dataitem(Customer; Customer)
{
RequestFilterFields = "No.", Name, "Customer Posting Group";
column(CustomerNo; "No.") { }
column(CustomerName; Name) { }
}
When the report runs, Business Central can show these fields on the request page so the user can narrow the dataset before the layout is rendered.
RDLC layout: where the visual design happens
Once your AL dataset is ready, the layout controls the visual output. You can arrange fields, add labels, format numbers and dates, create headers and footers, add images, and build groups.
Microsoft SQL Server Report Builder can be used to design RDLC layouts. Business Central can export layouts with an .rdlc extension; Report Builder works with .rdl, so an exported layout may need to be renamed from .rdlc to .rdl before editing.
Understanding the RDLC dataset
When you open an RDLC layout in Report Builder, the report dataset contains the fields exposed by your AL report. For the sample above, you would expect fields such as CustomerNo, CustomerName, City and CountryRegionCode.
A common beginner mistake is to look for the original table field name instead of the AL dataset column name. The layout works with the dataset exposed by the report object.
Add a title and report header
A professional report normally contains a clear title, company information and useful filter or date information. In Report Builder, you can add textboxes to the report header and use expressions for dynamic values.
=Globals!ExecutionTime
You can format the execution time as a date or date-time depending on the report requirement. Keep headers simple and avoid adding too many decorative elements that make printed reports difficult to scan.
Formatting numbers, dates and currency
RDLC expressions can control how values are displayed. For example, a numeric value can be formatted using a standard numeric format:
=Format(Fields!Amount.Value, "N2")
For production reports, be careful with culture, currency and decimal formatting. When a value needs business-specific formatting, consider whether the transformation belongs in AL or in the report layout.
Grouping records in RDLC
Grouping is useful when a report needs sections such as customers with their related transactions, salespeople with their sales, or items grouped by category.
A typical design is:
- Define the required parent and child data in the AL dataset.
- Create a group in the RDLC tablix.
- Choose the dataset field used for grouping.
- Place group-level values in the group header.
- Place detail values in the detail row.
For large reports, keep grouping purposeful. Complex nested groups can make layouts difficult to maintain and may increase rendering time.
Adding totals
RDLC supports aggregate expressions such as Sum. For example:
=Sum(Fields!Amount.Value)
The scope of an aggregate matters. A total at a group level can produce a different result from a report-level total, so always test totals with multiple groups and filtered data.
Using report extensions
If you need to modify an existing Microsoft or partner report, creating a completely new report is not always necessary. A reportextension can be used to extend an existing report, for example by adding dataset columns or extending supported report behavior.
reportextension 50121 "Dynexal Customer Report Ext" extends "Customer - List"
{
dataset
{
add(Customer)
{
column(DynexalCity; City)
{
}
}
}
}
The exact extension points depend on the report and Business Central version. Before using a report extension, inspect the base report dataset and confirm that the required dataitem can be extended.
Testing your RDLC report
Use a small and predictable dataset during development. A good testing sequence is:
- Publish the extension successfully.
- Open the report from Business Central.
- Run it without filters to check the basic layout.
- Apply one filter and verify that the dataset changes correctly.
- Test multiple records and multiple groups.
- Check page breaks, headers, footers and totals.
- Export to PDF and inspect the actual printed output.
Common RDLC problems and fixes
1. The report opens but shows no data
First verify that the AL dataset actually returns records. Then check that the RDLC fields match the current dataset column names.
2. A field shows an error in Report Builder
The field may have been renamed or removed from the AL dataset. Refresh the report dataset in the layout designer and confirm the field reference.
3. The report is cut off on the right side
Check the report body width, page width and left/right margins. The body should fit inside the printable page area.
4. Extra blank pages appear
This is often caused by the report body being slightly wider than the printable area. Review the body width and hidden objects as well as horizontal spacing.
5. Totals are incorrect
Check the aggregate scope and whether the dataset contains duplicate rows because of nested dataitems.
6. The layout works but values are missing
Confirm that the value is exposed as a dataset column in AL. A table field is not automatically available to RDLC unless it is part of the report dataset.
RDLC best practices
- Keep the AL dataset focused on the data the report actually needs.
- Use clear, stable dataset column names.
- Keep page width and margins under control from the beginning.
- Use consistent fonts, spacing and alignment.
- Test filtered, empty and large datasets.
- Keep business logic in AL or codeunits rather than hiding complex logic inside RDLC expressions.
- Prefer reusable report patterns instead of copying large layouts unnecessarily.
- For document reports, evaluate whether Word layout is a better fit before choosing RDLC.
RDLC vs Word vs Excel layouts
| Layout | Best for |
|---|---|
| RDLC | Pixel-perfect documents, complex print layouts and advanced formatting |
| Word | Document-style layouts that are easier for business users to maintain |
| Excel | Analysis, tables, formulas, charts and spreadsheet-based reporting |
What should you learn next?
Codeunits in Business Central — move reusable business logic into clean AL codeunits.
AL Tables in Business Central — understand the data model behind your reports.
Creating List and Card Pages in AL — build the pages users interact with before running reports.
Page Extensions in Business Central — add fields and actions to standard pages.
Getting Started with AL Development — follow the beginner AL learning path.