Praxis-Tutorial zu Business Central, AL-Dataset, RDLC-Gruppen, Seitenumbrüchen und PDF-Ausgabe. In komplexen Reports entstehen Probleme selten durch ein einzelnes Textfeld. Meist greifen Datenstruktur, Gruppierung, Papierformat und Rendering ineinander. Hier bauen wir den Report systematisch auf und untersuchen die häufigsten Ursachen von leeren oder verschobenen Seiten.
1. Fachliches Seitenkonzept vor dem Report-Designer
Definiere zuerst die Reihenfolge der Abschnitte: Titelblatt, Bilanz, Gewinn- und Verlustrechnung, Anhang oder Anlagenübersicht. Notiere für jeden Abschnitt, ob er eine eigene Seite benötigt, ob Tabellen fortlaufen dürfen und welche Überschriften wiederholt werden. Entscheide, ob eine feste Seitenstruktur erforderlich ist oder ob variable Datenmengen die Seitenzahl bestimmen. Eine feste Seitennummer pro Abschnitt ist bei unterschiedlich langen Tabellen in der Regel nicht stabil.
2. Dataset und Layout getrennt halten
AL stellt im dataset die Felder bereit; das RDLC-Layout entscheidet über ihre Anordnung. Für Summen und Formatierungen sind klare fachliche Feldnamen hilfreicher als undurchsichtige Ausdrücke im Report Designer. Ein minimales Dataset sieht so aus:
report 50100 "Account Summary Example"
{
UsageCategory = ReportsAndAnalysis;
ApplicationArea = All;
DefaultRenderingLayout = SummaryLayout;
dataset
{
dataitem(GLAccount; "G/L Account")
{
column(AccountNo; "No.") { }
column(AccountName; Name) { }
column(AccountBalance; Balance) { }
}
}
rendering
{
layout(SummaryLayout)
{
Type = RDLC;
LayoutFile = 'Layouts/AccountSummary.rdl';
}
}
}
Dies ist ein didaktisches Beispiel. Für eine echte Jahresabschlussbilanz reichen die Kontensalden nicht aus: Du brauchst fachliche Zuordnungen, Periodenfilter, Vorjahreswerte und eine geprüfte Summenlogik. Prüfe insbesondere, ob Beträge nach Vorzeichen umgegliedert oder saldiert werden müssen.
3. RDLC: Tablix, Gruppen und Seitenwechsel
Das Tablix steuert Tabellenbereiche und wiederholte Zeilen. Lege für fachliche Abschnitte geeignete Parent-Gruppen an. Aktiviere einen PageBreak nur an der Gruppe oder dem Container, an dem er fachlich hingehört; vermeide zusätzliche widersprüchliche Umbrüche auf verschachtelten Rechtecken und Tablix-Gruppen. Die Eigenschaft KeepTogether versucht Inhalte zusammenzuhalten, kann aber bei langen Gruppen große Leerräume verursachen. Sie garantiert nicht, dass ein zu großer Block vollständig auf eine Seite passt.
4. Warum leere Seiten entstehen
Ein klassischer Grund ist ein zu breites Layout. Prüfe die Rechnung Body-Breite + linker Rand + rechter Rand ≤ nutzbare Papierbreite. A4 hat eine Breite von 21 cm; bei je 1 cm Seitenrand bleiben 19 cm. Schon ein minimal überstehendes Objekt kann eine zusätzliche horizontale Seite auslösen. Achte auch auf ausgeblendete Elemente mit verbleibender Breite und die Eigenschaft ConsumeContainerWhitespace. Wenn nur die erste Seite gedruckt wird, untersuche zusätzlich Dataset-Gruppen, Filter, Sichtbarkeit und das Rendering – nicht ausschließlich den PageBreak.
5. Seitentitel, Kopf- und Fußzeilen
Dokumenttitel, Firmenname, Druckdatum und Seitenzahlen gehören abhängig vom Layout entweder in Report Header/Footer oder in bewusst platzierte Berichtskörper-Elemente. Für globale Seitenzahlen in RDLC stehen unter anderem Globals!PageNumber und Globals!TotalPages zur Verfügung. Bei verschachtelten fachlichen Abschnitten muss geprüft werden, ob die globale Seitenzählung oder eine abschnittsbezogene Darstellung verlangt wird. Vermeide scheinbar feste Seitenzahlen, wenn Inhalte dynamisch wachsen.
6. Summen und Vorzeichen fachlich prüfen
Ein RDLC-Ausdruck wie =Sum(Fields!AccountBalance.Value) summiert innerhalb seines festgelegten Scopes. Wird der Scope falsch gewählt, entstehen doppelte oder fehlende Summen. Definiere, ob ein Betrag aus AL bereits berechnet wurde oder im Layout aggregiert werden soll. Teste getrennt Nullwerte, negative Salden, Vorjahresvergleich, Umbuchungen und leere Kategorien. Eine optisch korrekte PDF ist kein Nachweis für korrekte Bilanzzahlen.
7. Ein systematischer Debugging-Ablauf
- Report zunächst mit wenigen Datensätzen und ohne manuelle Seitenumbrüche rendern.
- Datensatzwerte in einer einfachen Debug-Tabelle sichtbar machen und mit BC vergleichen.
- Papierbreite, Ränder und alle sichtbaren Container kontrollieren.
- Gruppen nacheinander aktivieren und pro fachlichem Abschnitt genau den benötigten Umbruch setzen.
- Wiederholte Überschriften und
KeepTogethergezielt testen. - Mit leeren, kurzen und überlangen Texten sowie mehreren Buchungszeilen erneut als PDF exportieren.
8. Tests und Wartbarkeit
Nutze eine feste Testmatrix: Abschnitt ohne Daten, Abschnitt mit einer Zeile, mehrere Seiten, lange Bezeichnungen, negatives Ergebnis, ungewöhnlich hohe Beträge sowie unterschiedliche Sprachen. Vergleiche bei pixelgenauen Layoutvorgaben Screenshots beziehungsweise gerenderte PDFs mit der Vorlage. Prüfe zusätzlich die verwendeten Schriftarten und PDF-Rendering-Eigenheiten. Hinterlege Layoutdateien zusammen mit dem AL-Code in der Versionsverwaltung und dokumentiere, welche Änderung welche Ausgabe beeinflusst.
Fazit: Ein stabiler RDLC-Report entsteht aus einem geprüften Dataset und einem bewusst entworfenen Seitenmodell. Seitenumbrüche sind nur eine Komponente des Gesamtlayouts.
Kommentare (0)
Noch keine Kommentare. Schreibe den ersten Beitrag zur Diskussion.