Xenosystems Logo
Sascha Hess

Diplom-Biologe | Senior IT-Consultant

SH

Sascha Hess

xenosystems.de - IT-Consulting & Data Management

www.xenosystems.de

 

 

Strategische Wissens-Roadmap 2026

 

 

 

ERP-KPIs & Controlling

 

Die richtigen Kennzahlen — automatisiert, aktuell, entscheidungsrelevant

WAS SIE IN DIESEM KIT ERHALTEN:

 

1

50 ERP-KPIs

Einkauf, Lager, Vertrieb, Finanzen — fertige SQL-Abfragen

 

 

2

KPI-Automatisierung

Tägliche Kennzahlen ohne manuellen Aufwand

 

 

3

Power BI Schnelleinstieg

Von der SQL-Abfrage zum Dashboard in einem Tag

 

 

4

Frühwarnsystem

Automatische Alerts bei KPI-Abweichungen

 

 

5

30-Tage-Dashboard-Plan

Erstes Management-Dashboard in einem Monat live

 


Rechtliche Hinweise und Haftungsausschluss

 

HAFTUNGSAUSSCHLUSS

 

Alle Skripte, KPI-Definitionen und Empfehlungen wurden sorgfältig erarbeitet. Da jede ERP-Umgebung individuelle Datenstrukturen verwendet, übernimmt der Autor keinerlei Haftung für fehlerhafte Kennzahlen, Fehlentscheidungen auf Basis dieser Daten oder sonstige Schäden. Validieren Sie alle Abfragen gegen Ihre spezifische Datenbankstruktur.

 

KEINE ERGEBNISGARANTIE

 

KPI-Definitionen und SQL-Abfragen sind Vorlagen — keine fertigen Lösungen. Tabellenbezeichnungen, Feldnamen und Geschäftslogik weichen je nach ERP-System und Customizing ab. Fachliche Validierung durch Controlling und Buchhaltung ist zwingend erforderlich.

 

VERSIONSHINWEIS

 

Die Inhalte beziehen sich auf Microsoft Dynamics Business Central 2024/2025, MACH, APplus und Power BI, Stand März 2026. Herstellerupdates können Datenbankstrukturen und Feldbezeichnungen verändern.

 

URHEBERRECHT

 

Dieses Dokument ist für den persönlichen oder betriebsinternen Gebrauch des Käufers lizenziert. Weiterverkauf, Weitergabe an Dritte und öffentliche Veröffentlichung sind ohne schriftliche Genehmigung nicht gestattet.

 

KEINE VERBINDUNG ZU HERSTELLERN

 

Dieses Kit ist ein unabhängiges Werk und steht in keinerlei Verbindung zu Microsoft, MACH AG, Asseco Solutions oder anderen genannten Herstellern.

 

Eine ausführliche Version dieses Haftungsausschlusses befindet sich am Ende dieses Dokuments.

 


 

Inhaltsverzeichnis

 

 

01  Einleitung

Warum ERP-KPIs ohne Automatisierung wertlos sind

 

02  KPI-Framework

Struktur, Definitionen und Qualitätskriterien

 

03  Einkaufs-KPIs

Liefertreue, Preisabweichung, Durchlaufzeit

 

04  Lager-KPIs

Umschlagshäufigkeit, Reichweite, Bestandsgenauigkeit

 

05  Vertriebs-KPIs

Auftragseingang, Liefertreue, Deckungsbeitrag

 

06  Finanz-KPIs

DSO, DPO, Liquidität, Offene Posten

 

07  KPI-Automatisierung

SQL Jobs, Staging-Tabellen, tägliche Berechnung

 

08  Power BI Schnelleinstieg

Von der Abfrage zum Dashboard in einem Tag

 

09  Frühwarnsystem

Automatische Alerts bei Zielwertabweichungen

 

10  30-Tage-Dashboard-Plan

Erstes Management-Dashboard produktiv in einem Monat

 

 


 

01

Einleitung

 

Warum ERP-KPIs ohne Automatisierung wertlos sind

 

Jedes ERP-System enthält alle Daten, die für ein fundiertes Unternehmenscontrolling nötig sind. Trotzdem arbeiten die meisten mittelständischen Unternehmen mit monatlichen Excel-Berichten, die mühsam per Hand zusammengestellt werden — veraltet, fehleranfällig und zu spät für operative Entscheidungen.

 

Das Problem ist nicht die Datenverfügbarkeit — sondern die fehlende Automatisierung.

 

  Kennzahlen, die nur monatlich verfügbar sind, ermöglichen nur monatliche Reaktionen — zu spät für viele operative Entscheidungen.

 

  Manuell erstellte Berichte kosten in typischen KMU 5-15 Stunden pro Woche — für Tätigkeiten, die vollautomatisch laufen könnten.

 

  Inkonsistente KPI-Definitionen führen zu Diskussionen über Zahlen statt über Maßnahmen.

 

  Fehlende Frühwarnsysteme bedeuten: Probleme werden sichtbar, wenn der Schaden bereits entstanden ist.

 

Die Lösung ist ein einfaches, automatisiertes KPI-System direkt aus dem ERP — mit klaren Definitionen, täglicher Berechnung und automatischen Alerts bei Abweichungen. Dieses Kit liefert dafür die Blaupause.

 

 

WAS SIE IN DIESEM KIT ERWARTEN DÜRFEN

  50 ERP-KPIs — Mit Formel, SQL-Vorlage und Zielwert-Empfehlung für jede Kennzahl.

  KPI-Automatisierung — Staging-Tabellen, Berechnungs-Jobs und tägliche Aktualisierung.

  Power BI Schnelleinstieg — Von der ersten SQL-Abfrage zum interaktiven Dashboard.

  Frühwarnsystem — Automatische Mail-Alerts bei Zielwertabweichungen.

  30-Tage-Plan — Erstes Management-Dashboard in einem Monat produktiv.

 

 

ZIEL DIESES KITS

Nach dem Lesen und Umsetzen dieses Kits haben Sie ein automatisiertes KPI-System, das täglich aktuell ist — ohne manuelle Arbeit. Führungskräfte sehen morgens die wichtigsten Zahlen, Abweichungen werden automatisch gemeldet, und Berichte schreiben sich selbst.

 


 

02

KPI-Framework

 

Struktur, Definitionen und Qualitätskriterien

 

Bevor die erste Abfrage geschrieben wird, braucht es ein gemeinsames Verständnis: Was messen wir? Warum? Wie? Ein solides KPI-Framework verhindert die häufigste Falle — Kennzahlen zu messen, die niemand nutzt.

 

2.1 SMART-Kriterien für KPIs

 

JEDE KPI MUSS SEIN:

 

S — Spezifisch

    Eindeutige Definition, keine Interpretationsspielräume.

    Schlecht: "Kundenzufriedenheit"

    Gut:      "Reklamationsquote = Reklamationen / Lieferungen × 100"

 

M — Messbar

    Aus dem ERP berechenbar, ohne manuelle Ergänzungen.

    Datenquelle, Formel und Einheit schriftlich definiert.

 

A — Akzeptiert

    Von Fachbereich und Controlling gemeinsam definiert.

    Nicht von IT allein — sonst wird die Zahl nicht genutzt.

 

R — Relevant

    Führt die Kennzahl zu Entscheidungen oder Maßnahmen?

    Wenn nicht: weglassen.

 

T — Terminiert

    Zeitraum und Aktualisierungsfrequenz festgelegt.

    Täglich, wöchentlich oder monatlich — bewusst gewählt.

 

 

2.2 KPI-Steckbrief-Vorlage

 

Jede KPI sollte in einem Steckbrief dokumentiert sein — vor der Umsetzung, nicht danach.

 

Feld

Beispiel

Name

Liefertreue Lieferanten

Definition

Anteil pünktlicher Lieferungen an Gesamtlieferungen

Formel

Pünktliche Lfg. / Gesamt-Lfg. × 100

Einheit

Prozent

Zielwert

≥ 95 %

Alarmgrenze

< 90 %

Datenquelle

Wareneingangstabelle, Bestelltabelle

Aktualisierung

Täglich

Owner

Einkaufsleiter

 

2.3 KPI-Hierarchie

 

STRATEGISCHE KPIs (Monatlich / Lenkungsausschuss)

  EBIT-Marge, Liquidität 3. Grades, Eigenkapitalrendite

 

TAKTISCHE KPIs (Wöchentlich / Abteilungsleiter)

  Liefertreue, Lagerumschlag, Forderungslaufzeit (DSO)

 

OPERATIVE KPIs (Täglich / Teamleiter / Disponenten)

  Offene Bestellungen, Überfällige Rechnungen, Lagerbestand

 

 


 

03

Einkaufs-KPIs

 

Liefertreue, Preisabweichung, Durchlaufzeit

 

Einkaufs-KPIs messen die Leistungsfähigkeit des Beschaffungsprozesses — von der Bestellung bis zum Wareneingang. Sie sind die Grundlage für Lieferantenbewertung und Prozessverbesserung.

 

3.1 Liefertreue Lieferanten

 

Formel: Pünktliche Wareneingänge / Alle Wareneingänge × 100

 

Zielwert: ≥ 95 % | Alarmgrenze: < 90 %

 

-- Liefertreue je Lieferant (rollierende 90 Tage)

SELECT

    l.LieferantNr,

    l.Name AS Lieferant,

    COUNT(*) AS Gesamt_Lieferungen,

    SUM(CASE WHEN we.Eingangsdatum <= b.ZugesagtesLieferdatum

             THEN 1 ELSE 0 END) AS Puenktlich,

    ROUND(100.0 * SUM(CASE WHEN we.Eingangsdatum <= b.ZugesagtesLieferdatum

                           THEN 1 ELSE 0 END) / COUNT(*), 1) AS Liefertreue_Pct,

    AVG(DATEDIFF(DAY, b.ZugesagtesLieferdatum,

                 we.Eingangsdatum)) AS Avg_Verzoegerung_Tage

FROM dbo.Wareneingaenge we

JOIN dbo.Bestellungen b ON we.BestellNr = b.BestellNr

JOIN dbo.Lieferanten l ON b.LieferantNr = l.LieferantNr

WHERE we.Eingangsdatum >= DATEADD(DAY, -90, CAST(GETDATE() AS DATE))

GROUP BY l.LieferantNr, l.Name

HAVING COUNT(*) >= 5  -- Mindestens 5 Lieferungen für Aussagekraft

ORDER BY Liefertreue_Pct ASC;

 

 

 

 

 

 

 

 

 

 

 

 

3.2 Preisabweichung (Purchase Price Variance)

 

Formel: (Ist-Preis − Standardpreis) / Standardpreis × 100

 

Zielwert: < ±3 % | Alarmgrenze: > ±10 %

 

-- Preisabweichung je Artikel (letztes Quartal)

SELECT

    a.ArtikelNr,

    a.Bezeichnung,

    a.Standardpreis,

    AVG(bp.EinzelPreis) AS Avg_EinkaufsPreis,

    ROUND(100.0 * (AVG(bp.EinzelPreis) - a.Standardpreis)

          / NULLIF(a.Standardpreis, 0), 1) AS Abweichung_Pct,

    SUM(bp.Menge) AS Gesamt_Menge,

    SUM(bp.Menge * (bp.EinzelPreis - a.Standardpreis)) AS Abweichung_EUR

FROM dbo.BestellPositionen bp

JOIN dbo.Artikel a ON bp.ArtikelNr = a.ArtikelNr

JOIN dbo.Bestellungen b ON bp.BestellNr = b.BestellNr

WHERE b.Bestelldatum >= DATEADD(QUARTER, -1, CAST(GETDATE() AS DATE))

  AND a.Standardpreis > 0

GROUP BY a.ArtikelNr, a.Bezeichnung, a.Standardpreis

HAVING ABS(ROUND(100.0 * (AVG(bp.EinzelPreis) - a.Standardpreis)

           / NULLIF(a.Standardpreis, 0), 1)) > 3

ORDER BY ABS(Abweichung_EUR) DESC;

 

 

3.3 Weitere Einkaufs-KPIs im Überblick

 

KPI

Formel

Zielwert

Frequenz

Bestelldurchlaufzeit

Ø Tage Bestellung → Wareneingang

≤ Lieferzeit + 1 Tag

Täglich

Maverick Buying Quote

Käufe ohne Bestellung / Gesamtkäufe

< 5 %

Monatlich

Lieferantenkonzentration

Anteil Top-3-Lieferanten am Einkaufsvolumen

< 60 %

Monatlich

Reklamationsquote Einkauf

Reklamierte Lieferungen / Gesamt-Lieferungen

< 2 %

Wöchentlich

Bestellwert je Bestellung

Ø Nettowert je Bestellvorgang

> 500 € (Bündelung)

Monatlich

 


 

04

Lager-KPIs

 

Umschlagshäufigkeit, Reichweite, Bestandsgenauigkeit

 

Lager-KPIs zeigen, ob gebundenes Kapital effizient eingesetzt wird — und ob die Verfügbarkeit für Produktion und Vertrieb gesichert ist.

 

4.1 Lagerumschlagshäufigkeit

 

Formel: Umsatz (zu Einstandspreisen) / Ø Lagerbestand (zu Einstandspreisen)

 

Zielwert: Branchenabhängig — Handel 8-15×, Produktion 4-8× pro Jahr

 

-- Lagerumschlagshäufigkeit je Warengruppe (laufendes Jahr)

SELECT

    a.Warengruppe,

    SUM(vp.Menge * vp.EinstandsPreis) AS Umsatz_Einstand,

    AVG(lb.Bestandswert) AS Avg_Lagerbestand,

    ROUND(SUM(vp.Menge * vp.EinstandsPreis)

          / NULLIF(AVG(lb.Bestandswert), 0), 1) AS Umschlag_Haeufigkeit,

    ROUND(365.0 / NULLIF(

          SUM(vp.Menge * vp.EinstandsPreis)

          / NULLIF(AVG(lb.Bestandswert), 0), 0), 0) AS Reichweite_Tage

FROM dbo.VerkaufsPositionen vp

JOIN dbo.Artikel a ON vp.ArtikelNr = a.ArtikelNr

JOIN dbo.Lagerbestaende lb ON a.ArtikelNr = lb.ArtikelNr

WHERE vp.Belegdatum >= DATEFROMPARTS(YEAR(GETDATE()), 1, 1)

GROUP BY a.Warengruppe

ORDER BY Umschlag_Haeufigkeit ASC;

 

 

4.2 Lagerreichweite (Days of Supply)

 

Formel: Lagerbestand / Ø Tagesverbrauch

 

Zielwert: 14-30 Tage (abhängig von Lieferzeit) | Alarmgrenze: < 7 Tage oder > 90 Tage

 

-- Lagerreichweite je Artikel — kritische Artikel hervorheben

WITH VerbrauchPro90Tage AS (

    SELECT

        ArtikelNr,

        SUM(Menge) / 90.0 AS TagesVerbrauch

    FROM dbo.VerkaufsPositionen

    WHERE Belegdatum >= DATEADD(DAY, -90, CAST(GETDATE() AS DATE))

    GROUP BY ArtikelNr

)

SELECT

    a.ArtikelNr,

    a.Bezeichnung,

    lb.Bestand,

    ROUND(v.TagesVerbrauch, 2) AS TagesVerbrauch,

    ROUND(lb.Bestand / NULLIF(v.TagesVerbrauch, 0), 0) AS Reichweite_Tage,

    CASE

        WHEN lb.Bestand / NULLIF(v.TagesVerbrauch, 0) < 7  THEN 'KRITISCH'

        WHEN lb.Bestand / NULLIF(v.TagesVerbrauch, 0) < 14 THEN 'Niedrig'

        WHEN lb.Bestand / NULLIF(v.TagesVerbrauch, 0) > 90 THEN 'Überbestand'

        ELSE 'OK'

    END AS Status

FROM dbo.Artikel a

JOIN dbo.Lagerbestaende lb ON a.ArtikelNr = lb.ArtikelNr

JOIN VerbrauchPro90Tage v ON a.ArtikelNr = v.ArtikelNr

WHERE a.Aktiv = 1 AND lb.Bestand > 0

ORDER BY Reichweite_Tage ASC;

 

 

4.3 Weitere Lager-KPIs

 

KPI

Formel

Zielwert

Frequenz

Bestandsgenauigkeit

Inventurzählung = Systembestand (%)

> 98 %

Nach Inventur

Slow Mover Quote

Artikel ohne Bewegung > 180 Tage / Gesamt

< 10 %

Monatlich

Lagerkostenquote

Lagerkosten / Ø Lagerwert

< 20 % p.a.

Monatlich

Lieferfähigkeit

Sofort lieferbare Aufträge / Gesamt

> 95 %

Täglich

Nullbestand-Quote

Artikel mit Bestand = 0 / Aktive Artikel

< 5 %

Täglich

 


 

05

Vertriebs-KPIs

 

Auftragseingang, Liefertreue, Deckungsbeitrag

 

Vertriebs-KPIs messen die Effektivität des Verkaufsprozesses — von der Anfrage bis zur Auslieferung und Zahlung.

 

5.1 Auftragseingang (Trend)

 

Formel: Nettowert aller eingegangenen Aufträge im Zeitraum

 

-- Auftragseingang: aktueller Monat vs. Vormonat vs. Vorjahr

SELECT

    YEAR(Auftragsdatum) AS Jahr,

    MONTH(Auftragsdatum) AS Monat,

    COUNT(*) AS Anzahl_Auftraege,

    SUM(Nettobetrag) AS Auftragseingang_EUR,

    AVG(Nettobetrag) AS Avg_Auftragswert,

    LAG(SUM(Nettobetrag)) OVER (ORDER BY YEAR(Auftragsdatum),

                                         MONTH(Auftragsdatum)) AS Vormonat,

    ROUND(100.0 * (SUM(Nettobetrag) -

          LAG(SUM(Nettobetrag)) OVER (ORDER BY YEAR(Auftragsdatum),

                                               MONTH(Auftragsdatum)))

          / NULLIF(LAG(SUM(Nettobetrag)) OVER (ORDER BY YEAR(Auftragsdatum),

                                                        MONTH(Auftragsdatum)), 0), 1)

          AS Veraenderung_Pct

FROM dbo.Verkaufsauftraege

WHERE Auftragsdatum >= DATEADD(MONTH, -13, DATEFROMPARTS(YEAR(GETDATE()),

                                                         MONTH(GETDATE()), 1))

  AND Belegart = 'Auftrag'

GROUP BY YEAR(Auftragsdatum), MONTH(Auftragsdatum)

ORDER BY Jahr DESC, Monat DESC;

 

 

5.2 Liefertreue Kunden

 

Formel: Pünktliche Lieferungen / Alle Lieferungen × 100

 

Zielwert: ≥ 95 % | Alarmgrenze: < 90 %

 

-- Liefertreue an Kunden je Monat

SELECT

    YEAR(ls.Lieferdatum) AS Jahr,

    MONTH(ls.Lieferdatum) AS Monat,

    COUNT(*) AS Gesamt_Lieferungen,

    SUM(CASE WHEN ls.Lieferdatum <= va.ZugesagtesLieferdatum

             THEN 1 ELSE 0 END) AS Puenktlich,

    ROUND(100.0 * SUM(CASE WHEN ls.Lieferdatum <= va.ZugesagtesLieferdatum

                           THEN 1 ELSE 0 END) / COUNT(*), 1) AS Liefertreue_Pct,

    AVG(DATEDIFF(DAY, va.ZugesagtesLieferdatum, ls.Lieferdatum)) AS Avg_Verz_Tage

FROM dbo.Lieferscheine ls

JOIN dbo.Verkaufsauftraege va ON ls.AuftragsNr = va.AuftragsNr

WHERE ls.Lieferdatum >= DATEADD(MONTH, -6, CAST(GETDATE() AS DATE))

GROUP BY YEAR(ls.Lieferdatum), MONTH(ls.Lieferdatum)

ORDER BY Jahr DESC, Monat DESC;

 

 

5.3 Weitere Vertriebs-KPIs

 

KPI

Formel

Zielwert

Frequenz

Angebots-Abschlussquote

Aufträge / Angebote × 100

> 30 %

Monatlich

Deckungsbeitrag I

Umsatz − variable Kosten

Budgetwert

Monatlich

Umsatz je Mitarbeiter

Gesamtumsatz / Anzahl MA

Branchenwert

Monatlich

Retourenquote

Retouren / Lieferungen × 100

< 3 %

Wöchentlich

Durchschnittlicher Auftragswert

Σ Nettoumsatz / Anzahl Aufträge

Trendbeobachtung

Monatlich

Top-10-Kunden-Anteil

Umsatz Top 10 / Gesamtumsatz

< 50 %

Monatlich

 


 

06

Finanz-KPIs

 

DSO, DPO, Liquidität, Offene Posten

 

Finanz-KPIs sind die sensibelsten Kennzahlen — sie zeigen, ob das Unternehmen zahlungsfähig bleibt und ob Forderungen und Verbindlichkeiten im Griff sind.

 

6.1 Days Sales Outstanding (DSO) — Forderungslaufzeit

 

Formel: Ø Forderungen / (Jahresumsatz / 365)

 

Zielwert: ≤ vereinbartes Zahlungsziel + 5 Tage | Alarmgrenze: > vereinbartes Ziel + 20 Tage

 

-- DSO: Durchschnittliche Forderungslaufzeit (rollierende 90 Tage)

WITH UmsatzJahr AS (

    SELECT SUM(Nettobetrag) / 365.0 AS TagesUmsatz

    FROM dbo.Verkaufsbelege

    WHERE Belegdatum >= DATEADD(YEAR, -1, CAST(GETDATE() AS DATE))

      AND Belegart = 'Rechnung'

)

SELECT

    ROUND(SUM(op.OffenerBetrag) / u.TagesUmsatz, 1) AS DSO_Tage,

    SUM(op.OffenerBetrag) AS Gesamtforderungen_EUR,

    COUNT(*) AS Anzahl_Offene_Posten,

    SUM(CASE WHEN DATEDIFF(DAY, op.Faelligkeitsdatum, GETDATE()) > 0

             THEN op.OffenerBetrag ELSE 0 END) AS Ueberfaellig_EUR,

    ROUND(100.0 * SUM(CASE WHEN DATEDIFF(DAY, op.Faelligkeitsdatum, GETDATE()) > 0

                           THEN op.OffenerBetrag ELSE 0 END)

          / NULLIF(SUM(op.OffenerBetrag), 0), 1) AS Ueberfaellig_Pct

FROM dbo.OffenePosten op

CROSS JOIN UmsatzJahr u

WHERE op.Typ = 'Forderung';

 

 

6.2 Days Payable Outstanding (DPO) — Verbindlichkeitslaufzeit

 

Formel: Ø Verbindlichkeiten / (Jahreseinkauf / 365)

 

Zielwert: Möglichst nah am vereinbarten Zahlungsziel (Liquidität optimieren)

 

-- Überfällige Verbindlichkeiten mit Skontopotenzial

SELECT

    l.Name AS Lieferant,

    op.BelegNr AS Rechnungsnummer,

    op.Belegdatum,

    op.Faelligkeitsdatum,

    op.SkontodatumI AS Skonto_Faellig,

    op.OffenerBetrag,

    DATEDIFF(DAY, op.Faelligkeitsdatum, GETDATE()) AS Tage_Ueberfaellig,

    CASE WHEN GETDATE() <= op.SkontodatumI

         THEN ROUND(op.OffenerBetrag * op.SkontoProzentI / 100, 2)

         ELSE 0 END AS Skontopotenzial_EUR

FROM dbo.OffenePosten op

JOIN dbo.Lieferanten l ON op.KontoNr = l.LieferantNr

WHERE op.Typ = 'Verbindlichkeit'

  AND op.OffenerBetrag > 0

ORDER BY op.SkontodatumI ASC, Tage_Ueberfaellig DESC;

 

 

6.3 Weitere Finanz-KPIs

 

KPI

Formel

Zielwert

Frequenz

Liquidität 1. Grades

Zahlungsmittel / kurzfr. Verbindl.

> 20 %

Täglich

Liquidität 3. Grades

Umlaufvermögen / kurzfr. Verbindl.

> 120 %

Monatlich

Debitorenausfallquote

Abgeschriebene Forderungen / Umsatz

< 0,5 %

Monatlich

Skontoquote

Genutzte Skonti / Mögliche Skonti

> 80 %

Monatlich

Mahnquotenverteilung

OP je Mahnstufe / Gesamtforderungen

Mahnstufe 1 > 80 %

Wöchentlich

 


 

07

KPI-Automatisierung

 

SQL Jobs, Staging-Tabellen, tägliche Berechnung

 

KPIs manuell zu berechnen eliminiert den Nutzen. Dieser Abschnitt zeigt, wie ein vollautomatisches KPI-System aufgebaut wird — von der Staging-Tabelle bis zum täglichen Berechnungsjob.

 

7.1 KPI-Datenbank-Architektur

 

EMPFOHLENE ARCHITEKTUR:

 

ERP-Produktivdatenbank (Read-only für KPI-Jobs)

        ↓ (nächtlicher ETL-Job)

KPI-Staging-Datenbank (eigene DB: "KPI_DWH")

  ├── dbo.KPI_Definitionen    (Metadaten aller KPIs)

  ├── dbo.KPI_Tagesdaten       (tägliche Berechnungsergebnisse)

  ├── dbo.KPI_Zielwerte        (Soll-Werte je KPI und Periode)

  ├── dbo.KPI_Alerts           (ausgelöste Warnmeldungen)

  └── dbo.KPI_History          (Langzeitarchiv, 3 Jahre)

        ↓ (DirectQuery oder Import)

Power BI Dashboard

 

 

7.2 KPI-Staging-Tabellen anlegen

 

-- KPI-Definitionstabelle

CREATE TABLE dbo.KPI_Definitionen (

    KPI_ID        INT IDENTITY PRIMARY KEY,

    KPI_Code      NVARCHAR(50) UNIQUE NOT NULL,

    KPI_Name      NVARCHAR(200) NOT NULL,

    Bereich       NVARCHAR(50),    -- Einkauf / Lager / Vertrieb / Finanzen

    Einheit       NVARCHAR(20),    -- %, EUR, Tage, Stück

    Zielwert      DECIMAL(18,2),

    Alarmgrenze   DECIMAL(18,2),

    Alarm_Richtung NVARCHAR(10),   -- 'unter' oder 'ueber'

    Beschreibung  NVARCHAR(MAX),

    Aktiv         BIT DEFAULT 1

);

 

-- KPI-Tagesdaten

CREATE TABLE dbo.KPI_Tagesdaten (

    ID            INT IDENTITY PRIMARY KEY,

    KPI_ID        INT REFERENCES dbo.KPI_Definitionen(KPI_ID),

    Berechnungs_Datum DATE NOT NULL,

    Wert          DECIMAL(18,4),

    Dimension1    NVARCHAR(100),  -- z.B. Warengruppe, Lieferant

    Berechnet_Am  DATETIME2 DEFAULT GETDATE(),

    CONSTRAINT UQ_KPI_Tag UNIQUE (KPI_ID, Berechnungs_Datum, Dimension1)

);

 

-- KPI-Alerts

CREATE TABLE dbo.KPI_Alerts (

    AlertID       INT IDENTITY PRIMARY KEY,

    KPI_ID        INT REFERENCES dbo.KPI_Definitionen(KPI_ID),

    Alert_Datum   DATETIME2 DEFAULT GETDATE(),

    Ist_Wert      DECIMAL(18,4),

    Ziel_Wert     DECIMAL(18,4),

    Abweichung_Pct DECIMAL(8,2),

    Alert_Gesendet BIT DEFAULT 0,

    Empfaenger    NVARCHAR(500)

);

 

 

7.3 Automatischer Berechnungsjob

 

-- Täglicher KPI-Berechnungsjob (SQL Agent, täglich 06:00)

-- Beispiel: Liefertreue Lieferanten automatisch berechnen und speichern

 

DECLARE @Datum DATE = CAST(GETDATE() AS DATE);

DECLARE @KPI_ID INT = (SELECT KPI_ID FROM dbo.KPI_Definitionen

                       WHERE KPI_Code = 'EINK_LIEFERTREUE');

 

-- Alte Werte für heute löschen (Idempotenz)

DELETE FROM dbo.KPI_Tagesdaten

WHERE KPI_ID = @KPI_ID AND Berechnungs_Datum = @Datum;

 

-- Neue Werte berechnen und speichern

INSERT INTO dbo.KPI_Tagesdaten (KPI_ID, Berechnungs_Datum, Wert, Dimension1)

SELECT

    @KPI_ID,

    @Datum,

    ROUND(100.0 * SUM(CASE WHEN we.Eingangsdatum <= b.ZugesagtesLieferdatum

                           THEN 1 ELSE 0 END) / COUNT(*), 1),

    l.Name

FROM dbo.Wareneingaenge we

JOIN dbo.Bestellungen b ON we.BestellNr = b.BestellNr

JOIN dbo.Lieferanten l ON b.LieferantNr = l.LieferantNr

WHERE we.Eingangsdatum >= DATEADD(DAY, -90, @Datum)

GROUP BY l.LieferantNr, l.Name

HAVING COUNT(*) >= 5;

 

-- Alert prüfen

INSERT INTO dbo.KPI_Alerts (KPI_ID, Ist_Wert, Ziel_Wert, Abweichung_Pct)

SELECT

    t.KPI_ID,

    t.Wert,

    d.Alarmgrenze,

    ROUND(100.0 * (t.Wert - d.Alarmgrenze) / NULLIF(d.Alarmgrenze, 0), 1)

FROM dbo.KPI_Tagesdaten t

JOIN dbo.KPI_Definitionen d ON t.KPI_ID = d.KPI_ID

WHERE t.KPI_ID = @KPI_ID

  AND t.Berechnungs_Datum = @Datum

  AND d.Alarm_Richtung = 'unter'

  AND t.Wert < d.Alarmgrenze;

 

 


 

08

Power BI Schnelleinstieg

 

Von der SQL-Abfrage zum Dashboard in einem Tag

 

Power BI ist das leistungsfähigste und für M365-Kunden kostengünstigste BI-Tool. Mit der richtigen Vorbereitung im SQL-Backend entsteht ein Dashboard in Stunden, nicht Wochen.

 

8.1 Architektur-Entscheidung: Import vs. DirectQuery

 

IMPORT-MODUS (empfohlen für die meisten KMU):

  ✓ Daten werden in Power BI-Dataset gespeichert

  ✓ Sehr schnell — keine Datenbankabfrage beim Öffnen

  ✓ Automatische Aktualisierung (täglich / stündlich)

  ✗ Daten bis zu 24h veraltet

  ✗ 1 GB Dataset-Limit (Pro-Lizenz)

  → Für: Tages-/Wochen-Berichte, KPI-Dashboards

 

DIRECTQUERY-MODUS:

  ✓ Immer aktuelle Daten

  ✓ Kein Datenmengenlimit

  ✗ Langsam bei komplexen Abfragen

  ✗ Hohe Last auf ERP-Datenbank

  → Für: Operative Echtzeit-Übersichten (Lagerbestand, offene Aufträge)

 

 

8.2 SQL-Views als stabile Power BI-Grundlage

 

 

BESTE PRAXIS FÜR POWER BI & ERP

Verbinden Sie Power BI nie direkt mit ERP-Rohtabellen. Erstellen Sie stattdessen SQL-Views oder gespeicherte Prozeduren — diese abstrahieren die ERP-Datenstruktur und schützen Ihre Berichte vor ERP-Updates, die Tabellennamen oder -strukturen ändern.

 

-- Beispiel: Stabile View für Power BI Umsatz-Analyse

CREATE OR ALTER VIEW dbo.vw_PBI_Umsatz AS

SELECT

    CAST(vb.Belegdatum AS DATE) AS Datum,

    YEAR(vb.Belegdatum) AS Jahr,

    MONTH(vb.Belegdatum) AS Monat,

    DATENAME(MONTH, vb.Belegdatum) AS Monatsname,

    k.Name AS Kunde,

    k.Kundennummer,

    k.Region,

    k.Branche,

    a.Warengruppe,

    a.Produktgruppe,

    vp.ArtikelNr,

    a.Bezeichnung AS Artikel,

    vp.Menge,

    vp.Nettobetrag AS Umsatz_EUR,

    vp.EinstandsPreis * vp.Menge AS Kosten_EUR,

    vp.Nettobetrag - (vp.EinstandsPreis * vp.Menge) AS DB1_EUR

FROM dbo.VerkaufsPositionen vp

JOIN dbo.Verkaufsbelege vb ON vp.BelegNr = vb.BelegNr

JOIN dbo.Kunden k ON vb.KundenNr = k.KundenNr

JOIN dbo.Artikel a ON vp.ArtikelNr = a.ArtikelNr

WHERE vb.Belegart = 'Rechnung'

  AND vb.Storniert = 0;

 

 

8.3 Power BI Dashboard-Grundstruktur

 

EMPFOHLENE DASHBOARD-SEITEN:

 

SEITE 1 — EXECUTIVE SUMMARY

  KPI-Karten: Umsatz MTD, DB-Marge, DSO, Liefertreue

  Umsatz-Trend (12 Monate, Linie + Vorjahr)

  Top-5-Kunden nach Deckungsbeitrag

 

SEITE 2 — VERTRIEB

  Auftragseingang aktueller Monat vs. Plan

  Umsatz je Verkäufer / Region

  Pipeline und offene Angebote

 

SEITE 3 — LAGER & EINKAUF

  Lagerreichweite nach Warengruppe

  Kritische Artikel (< 7 Tage Reichweite)

  Liefertreue Lieferanten Top/Flop 10

 

SEITE 4 — FINANZEN

  DSO-Trend, überfällige Forderungen nach Alter

  Skontopotenzial

  Liquiditätsvorschau 30/60/90 Tage

 

 


 

09

Frühwarnsystem

 

Automatische Alerts bei Zielwertabweichungen

 

Ein KPI-System ohne Frühwarnfunktion ist ein Rückspiegel — es zeigt, was war, nicht was kommt. Automatische Alerts wandeln das reaktive Controlling in ein proaktives um.

 

9.1 Alert-Architektur

 

3-STUFEN-ALERT-SYSTEM:

 

STUFE 1 — INFORMATION (Grün → Gelb)

  Abweichung: 10-20 % vom Zielwert

  Empfänger:  Abteilungsleiter

  Kanal:      E-Mail / Teams-Nachricht

  Reaktion:   Beobachten, Ursache prüfen

 

STUFE 2 — WARNUNG (Gelb → Orange)

  Abweichung: 20-30 % vom Zielwert

  Empfänger:  Bereichsleiter + Abteilungsleiter

  Kanal:      E-Mail mit Detailbericht

  Reaktion:   Maßnahmenplan innerhalb 48h

 

STUFE 3 — ALARM (Orange → Rot)

  Abweichung: > 30 % vom Zielwert

  Empfänger:  Geschäftsführung + alle Führungsebenen

  Kanal:      E-Mail + SMS / Teams-Direktnachricht

  Reaktion:   Sofortmaßnahmen, Eskalation

 

 

9.2 Automatischer Alert-Job

 

-- SQL Agent Job: Täglicher KPI-Alert-Check (täglich 07:00)

DECLARE @AlertText NVARCHAR(MAX) = '';

DECLARE @AnzahlAlerts INT = 0;

 

-- Alle ausgelösten aber noch nicht gesendeten Alerts sammeln

SELECT

    @AlertText = @AlertText +

    CHAR(13) + CHAR(10) +

    '⚠ ' + d.KPI_Name + ' [' + d.Bereich + ']' + CHAR(13) + CHAR(10) +

    '   Ist-Wert:    ' + CAST(ROUND(a.Ist_Wert, 1) AS VARCHAR) + ' ' + d.Einheit + CHAR(13) + CHAR(10) +

    '   Ziel:        ' + CAST(ROUND(a.Ziel_Wert, 1) AS VARCHAR) + ' ' + d.Einheit + CHAR(13) + CHAR(10) +

    '   Abweichung:  ' + CAST(a.Abweichung_Pct AS VARCHAR) + ' %' + CHAR(13) + CHAR(10),

    @AnzahlAlerts = @AnzahlAlerts + 1

FROM dbo.KPI_Alerts a

JOIN dbo.KPI_Definitionen d ON a.KPI_ID = d.KPI_ID

WHERE a.Alert_Gesendet = 0

  AND CAST(a.Alert_Datum AS DATE) = CAST(GETDATE() AS DATE);

 

-- Alert senden wenn vorhanden

IF @AnzahlAlerts > 0

BEGIN

    EXEC msdb.dbo.sp_send_dbmail

        @profile_name = 'KPI-Alerts',

        @recipients   = 'controlling@firma.de;geschaeftsfuehrung@firma.de',

        @subject      = 'KPI-Frühwarnung: ' + CAST(@AnzahlAlerts AS VARCHAR)

                        + ' Kennzahl(en) unter Zielwert — '

                        + CONVERT(VARCHAR, GETDATE(), 104),

        @body         = 'Folgende KPIs haben heute Alarmgrenzen unterschritten:'

                        + CHAR(13) + CHAR(10) + @AlertText

                        + CHAR(13) + CHAR(10)

                        + 'Details im KPI-Dashboard: https://powerbi.firma.de';

 

    -- Als gesendet markieren

    UPDATE dbo.KPI_Alerts SET Alert_Gesendet = 1

    WHERE Alert_Gesendet = 0

      AND CAST(Alert_Datum AS DATE) = CAST(GETDATE() AS DATE);

END;

 

 

9.3 Alert-Konfiguration je KPI-Bereich

 

Bereich

KPI

Alert-Grenze

Empfänger

Einkauf

Liefertreue Lieferant

< 90 %

Einkaufsleiter

Lager

Lagerreichweite kritischer Artikel

< 7 Tage

Disponent + Einkauf

Vertrieb

Liefertreue an Kunden

< 90 %

Vertriebsleiter

Finanzen

DSO

> Zahlungsziel + 20 Tage

Buchhaltung + GF

Finanzen

Überfällige Forderungen

> 15 % der Gesamtforderungen

GF + Buchhaltung

Allgemein

Backup fehlt

> 26 Stunden

IT-Leiter

 


 

10

30-Tage-Dashboard-Plan

 

Erstes Management-Dashboard produktiv in einem Monat

 

Dieser Plan führt Sie von der leeren Datenbank zum ersten produktiven Management-Dashboard — ohne externe Berater, ohne monatelange Projekte.

 

 

VOR DEM START

KPI-Steckbriefe für mindestens 10 KPIs mit Fachbereich abstimmen und unterschreiben lassen. Datenbankzugriff auf ERP (Read-only) für den KPI-Job-User einrichten. Power BI Desktop installiert und Zugang zu Power BI Service (Pro-Lizenz) sichergestellt.

 

WOCHE 1: FUNDAMENT

 

■ TAG 1-2: KPI-AUSWAHL MIT FACHBEREICHEN

 

  Workshop: Je Bereich 5 KPIs auswählen und Steckbrief ausfüllen

  Zielwerte und Alarmgrenzen von Fachbereich bestätigen lassen

  Datenquellen je KPI identifizieren: Welche Tabellen, welche Felder?

  Datenqualität prüfen: Sind die benötigten Felder befüllt?

  Owner je KPI festlegen: Wer ist verantwortlich?

 

■ TAG 3-5: KPI-DATENBANK AUFBAUEN

 

  Datenbank "KPI_DWH" anlegen (oder Schema in bestehender DB)

  Tabellen anlegen: KPI_Definitionen, KPI_Tagesdaten, KPI_Alerts (Skripte Kapitel 7)

  KPI-Definitionen für die ersten 10 KPIs eintragen

  Read-only-User für ERP-Datenbank einrichten

  Ersten Berechnungs-Job manuell testen — Ergebnisse validieren

 

WOCHE 2: DATEN & VIEWS

 

■ TAG 6-10: SQL-VIEWS FÜR POWER BI

 

  Views für alle 10 KPIs anlegen (Vorlage aus Kapitel 8.2)

  Jede View mit Fachbereich auf Korrektheit prüfen

  Performance testen: Abfragezeit < 10 Sekunden anstreben

  Bei langen Laufzeiten: Indizes prüfen, ggf. Staging-Tabelle

 

■ TAG 11-14: BERECHNUNGSJOBS EINRICHTEN

 

  Automatischen Berechnungsjob für alle 10 KPIs einrichten (Kapitel 7.3)

  Fehlerbehandlung und Logging einbauen

  Job 3 Tage täglich laufen lassen — Ergebnisse täglich validieren

 KPI_Alerts-Tabelle prüfen: Werden Alarme korrekt ausgelöst?

 

WOCHE 3: POWER BI DASHBOARD

 

■ TAG 15-17: POWER BI VERBINDUNG

 

  Power BI Desktop: Verbindung zu KPI_DWH herstellen

  Import-Modus für historische Daten, DirectQuery für Echtzeit-KPIs

  Datenmodell erstellen: KPI_Tagesdaten mit KPI_Definitionen verknüpfen

  Datumstabelle anlegen (Kalender-Dimension für Time Intelligence)

 

■ TAG 18-21: DASHBOARD AUFBAUEN

 

  Executive Summary Seite: 4-6 KPI-Karten + 1 Trendiagramm

  Farbcodierung: Grün/Gelb/Rot basierend auf Zielwerten (Conditional Formatting)

  Vertriebsseite: Umsatz-Trend, Top-Kunden

  Einkauf/Lager-Seite: Liefertreue, kritische Reichweiten

  Finanzseite: DSO, überfällige Posten, Skontopotenzial

 

WOCHE 4: ROLLOUT & BETRIEB

 

■ TAG 22-25: ALERT-SYSTEM AKTIVIEREN

 

  Alert-Job einrichten und mit echten Empfängern testen

  Mail-Templates professionell gestalten — Link zum Dashboard

  Alert-Empfänger mit Fachbereich abstimmen

  Eskalationsregeln konfigurieren

 

■ TAG 26-28: FREIGABE UND SCHULUNG

 

  Dashboard mit Fachbereich reviewen — Zahlen validieren

  Kurzschulung: Wie liest man das Dashboard? Was bedeuten die Farben?

  Automatische Aktualisierung einrichten (täglich 07:00 — nach Berechnungsjob)

  Dashboard in Power BI Service veröffentlichen — Link an Nutzer

 

 

■ TAG 29-30: ABSCHLUSS UND ROADMAP

 

  Dokumentation: KPI-Definitionen, Job-Beschreibungen, Dashboard-Anleitung

  Feedback einholen: Was fehlt? Was ist unklar?

  Roadmap Phase 2: Weitere 10-20 KPIs, weitere Dashboard-Seiten

  Review-Termin in 4 Wochen fest einplanen ■

 

 

ERGEBNIS NACH 30 TAGEN

Nach 30 Tagen haben Sie ein automatisiertes KPI-System mit 10+ täglich berechneten Kennzahlen, ein Management-Dashboard in Power BI und ein Frühwarnsystem das Alarme automatisch sendet. Der manuelle Reporting-Aufwand sinkt von Stunden auf Minuten pro Woche.

 


 

Ausführlicher Haftungsausschluss und Lizenzbestimmungen

 

1. Allgemeiner Haftungsausschluss

 

Die in diesem Dokument enthaltenen Informationen, KPI-Definitionen, Skripte und Konfigurationshinweise wurden nach bestem Wissen und Gewissen auf der Grundlage langjähriger praktischer Erfahrung erstellt. Dennoch kann keine Gewähr für die Vollständigkeit, Richtigkeit oder Aktualität übernommen werden.

 

Der Autor übernimmt ausdrücklich keinerlei Haftung für Fehlentscheidungen auf Basis dieser Kennzahlen, Datenverlust, Systemausfälle oder sonstige Schäden. KPI-Definitionen und Berechnungen müssen zwingend mit Controlling und Buchhaltung fachlich abgestimmt und validiert werden.

 

2. Keine Steuer- oder Rechtsberatung

 

Die Hinweise zu Finanzkennzahlen (DSO, DPO, Liquiditätskennzahlen) ersetzen keine steuerliche oder rechtliche Beratung. Für Abschlussrelevanz ist ein Steuerberater oder Wirtschaftsprüfer hinzuzuziehen.

 

3. Versionsabhängigkeit

 

SQL-Abfragen sind Vorlagen — Tabellen- und Feldbezeichnungen weichen je nach ERP-System, Version und Customizing ab. Alle Abfragen vor dem produktiven Einsatz validieren.

 

4. Urheberrecht und Nutzungsrechte

 

Dieses Dokument und alle Inhalte sind urheberrechtlich geschützt. © 2026 Sascha Hess, xenosystems.de. Alle Rechte vorbehalten.

 

5. Markenrechte

 

Microsoft, Power BI, SQL Server, Dynamics Business Central sind eingetragene Marken der Microsoft Corporation. Alle anderen Produktnamen sind Eigentum ihrer jeweiligen Inhaber.

 

6. Anwendbares Recht und Gerichtsstand

 

Es gilt ausschließlich deutsches Recht. Gerichtsstand ist, soweit gesetzlich zulässig, Weimar, Thüringen, Deutschland.

 

Über den Autor

 

Sascha Hess ist Diplom-Biologe und IT-Professional mit über 20 Jahren Erfahrung in der Administration von ERP-, BI- und Datenbanksystemen. Er hat KPI-Systeme und Power BI Dashboards für mittelständische Unternehmen, Logistiker und die Bauhaus-Universität Weimar aufgebaut — von der ersten SQL-Abfrage bis zum produktiven Management-Reporting.

 

Sein Ansatz verbindet naturwissenschaftliche Präzision mit pragmatischer IT-Erfahrung. Schwerpunkte: Business Intelligence (Power BI, DeltaMaster, SSAS), ERP-Controlling, SQL Server Performance-Tuning und IT-Interim-Management.

 

Web: www.xenosystems.de | E-Mail: info@xenosystems.de | Standort: Weimar, Thüringen / Remote

 

Service

Beschreibung

BI-Dashboard-Aufbau

Power BI / DeltaMaster Dashboards inkl. ETL-Strecken, KPI-System und Data-Warehouse-Aufbau — für KMU ab 1 Woche Projektumfang.

ERP-Prozessautomatisierung

Analyse, Konzeption und Umsetzung von Workflow- und Schnittstellenautomatisierungen — von Quick Wins bis zur vollständigen Roadmap.

SQL Server DB Health Check

Professioneller Audit Ihres SQL Servers — Managementreport, Risikobewertung und Maßnahmenplan. Scope: 3-5 Tage.

ERP-Einführungsberatung

Begleitung von ERP-Projekten (MACH, Dynamics NAV/BC, APplus) — Anforderungsanalyse, Datenmigration, Go-Live-Support.

Interim IT-Management

Übernahme der IT-Steuerung auf Zeit — Budgetplanung, Dienstleister-Management, strategische IT-Ausrichtung.

 

Vollständiges Dokument

ERP KPIs Automatisierung 2026

Strategische Wissens-Roadmap · Checklisten · Praxisbeispiele

49,90 €

Sichere Zahlung über PayPal · Sofort-Download nach Zahlungseingang