Bodo's Dynamics NAV und Business Central Blog
Bodo ist ein Dynamics NAV Urgestein. Er programmiert Navision seit DOS Zeiten und hat auch keine Scheu vor .NET und schon gar nicht vor Dynamics 365 oder Azure. Viele Neueinsteiger wurden von ihm in den letzten Jahren zu Entwicklern ausgebildet. In diesem Blog veröffentlichen Bodo und andere Superhelden Interessantes aus der Welt von Dynamics 365 Business Central / Dynamics NAV und Microsoft Azure.Business Central – KPI Webservice aktualisiert KPIs nicht
Tags: power bi, business centralMit dem KPI Webservice (oder auch »KPI Webdienst« genannt) kennt Business Central ein smartes Verfahren, um Finanzkennzahlen (KPIs – Key Performance Indicators) als Webservice zu veröffentlichen, und damit anderen Tools wie zum Beispiel Power BI zugänglich zu machen.
Leider währt die Freude nur kurz. Auch die aktuelle Version 16 (Dynamics 365 Business Central 2020 Release Wave 1) enthält einen Bug, der die korrekte Aktualisierung der KPIs verhindert.
Kurz zu den Grundlagen. Der KPI Webservice basiert auf einem Kontenschema (oder auch mehreren). Sie legen die Periode und den Detaillierungsgrad der Daten (»Anzeigen nach«) fest. Die Kontenschema-Spalten können Sie nicht frei wählen, sondern werden vom System fest vorgegeben.
Die Einrichtung kann zum Beispiel so aussehen:
Welche KPIs Sie mit dem KPI Webservice veröffentlichen, können Sie sich anschauen, wenn Sie die Aktion »Navigieren > Webdienste für KPI Kontenschema« auswählen. Das System füllt seinen so genannten »KPI Puffer« und zeigt diesen an:
Und nun zum Problem. Die KPIs werden automatisch beim Aufruf des Webservice aktualisiert. Um unnötige Berechnungen zu vermeiden, passiert dieses nur, wenn die Gültigkeit der Daten abgelaufen ist, und neue Sachposten hinzugekommen sind. Siehe dazu die Einrichtung oben. Wenn keine Neuberechnung notwendig ist, liefert der Webservice die im KPI Puffer gespeicherten Daten direkt zurück.
Leider hat der Entwickler (m/w/d) versucht, das noch weiter zu optimieren. Es sollen nur die Datensätze im KPI Puffer aktualisiert werden, die sich durch Buchungen in der Periode geändert haben.
Auszug aus Codeunit 197 »Update Acc. Sched. KPI Data«, Funktion »InitSetupData()«:
Das System ermittelt das kleinste Buchungsdatum und löscht alle KPI Puffer-Datensätze größer gleich diesem Datum, um diese später neu zu berechnen. Das funktioniert so aber nur, wenn der Detaillierungsgrad (»Anzeigen nach«) auf »Tag« eingestellt ist. In unserem Beispiel oben verwenden wir »Monat«. Damit steht als Datum im KPI Puffer immer der Monatserste. Die KPI Puffer-Datensätze für den März werden daher nicht gelöscht.
Wenn Sie nun im April noch Buchungen für den März mit Datum beispielsweise 31.03. durchführen, wird der Puffer für den März nicht aktualisiert.
Achtung Eigenwerbung: Falls Sie keine Zeit haben, auf einen Bugfix von Microsoft zu warten, Comporsys hilft.
In diesem Sinne, hier der kürzeste Programmierer-Witz: Gleich bin ich fertig!
PS: Die ausführliche Einrichtung des KPI Webservice können Sie hier nachlesen: https://docs.microsoft.com/de-de/dynamics365/business-central/bi-how-to-set-up-and-publish-kpi-web-services-based-on-account-schedules