top of page

Spesenerfassung mit PowerApps – Das Resultat

Aktualisiert: 6. Feb. 2023



Nachdem mein Blogbeitrag aus dem Jahr 2019 auf grosses Interesse gestossen ist, möchte ich hier das Ergebnis vorstellen, das dabei herausgekommen ist.


Die Idee, mit Hilfe der Power-Plattform von Microsoft eine App zur Erfassung und Verarbeitung von Spesen zu erstellen, ist ein gutes Beispiel, um zu zeigen, was mit den verfügbaren Tools erreicht werden kann. Allerdings gibt es auch Schwierigkeiten und Einschränkungen.


Der Gedanke an eine individuelle App für Mobiltelefone, die die vorhandene Hardware der Mitarbeiter nutzt, um die Kostenerfassung zu erleichtern, ist verlockend. Alle Mitarbeiter haben eine O365 E3-Lizenz, so dass dem nichts im Wege steht. Oder etwa doch?


Achtung Spoiler, die Lizenzierung wird hier etwas Kreativität erfordern, um unser Ziel zu erreichen. Tatsächlich können mit der M365-Lizenz die Tools Power Apps und Power Automate verwendet werden, allerdings mit Einschränkungen. Diese Tools müssen mit anderen Systemen kommunizieren, um die Aufgaben zu erfüllen.


Daten müssen gespeichert werden, Excel- oder PDF-Berichte müssen erstellt werden, und auch ein Genehmigungsprozess darf nicht fehlen. Für die Kommunikation werden Konnektoren verwendet, die in Standard- und Premium-Konnektoren unterteilt werden. Sobald meine Anwendungen einen Premium-Konnektor verwenden, reicht die Lizenzierung mit M365 nicht mehr für jeden Anwender aus, dann benötigt jeder eine eigene Lizenzierung für Power Apps und/oder Power Automate.


Zurück zur geplanten Spesen App: Sie soll es ermöglichen, Spesenbelege mit dem Handy zu scannen und die notwendigen Attribute wie Betrag, Kunde, Kategorie, Datum, etc. zu erfassen.


Dafür bietet sich in M365 eine SharePoint Liste mit Dateianhängen an. Sie ist flexibel, kann um beliebige Attribute erweitert werden und – ganz wichtig – verfügt über Konnektoren zu Power Apps und Power Automate – die als Standard eingestuft sind und somit mit unserer Lizenz genutzt werden können.


Somit haben wir eine Datenhaltung für die einzelnen Spesenabrechnungen. Nun soll in regelmässigen Abständen ein Bericht erstellt werden, der zum Beispiel für einen Monat alle Spesenbelege und eine Tabelle als Übersicht enthält. Da es sich hierbei um Dokumente handelt, bietet sich wiederum SharePoint mit den Dokumentenbibliotheken an, um die erzeugten Dokumente abzulegen.


Zuerst soll ein Excel-Dokument mit ausgewählten Spesen erstellt werden. Dazu verwende ich eine Vorlage mit einer Excel-Tabelle, welche kopiert und mit den Werten aller abzurechnenden Spesenbelegen ergänzt wird. Die Berechnung von Total und weitere Layout-Elemente sind im Template definiert und können so auch später problemlos bearbeitet werden.





Um die Werte in eine Excel-Tabelle eintragen, verwende ich Microsoft Graph API. Hierbei gibt es allerdings ein Lizenzproblem. HTTP Request Actions sind in Power Automate zwar verfügbar, diese benötigen allerdings eine Premium-Lizenz.


Hier kommt Microsoft Azure ins Spiel. In Azure können Logic Apps verwendet werden, welche denselben grafischen Editor für die Definition anbieten wie Power Automate. Diese benötigen keine Lizenzen und werden anhand der benötigten Azure Ressourcen abgerechnet, die in diesem Fall sehr klein sind. Wie kann man aus Power Automate eine Azure Logic App triggern? HTTP Request? Nein, dafür benötigt man Premium Lizenzen 😊.


Der Umweg führt über eine SharePoint-Liste. Der Trick besteht darin, eine Liste als eine Art Auftragswarteschlange zu verwenden. Wenn also ein Benutzer eine Spesenabrechnung erstellen möchte, schreibt die Power App den Auftrag mit allen Informationen (welche Belege, etc.) in diese Liste. Auf der anderen Seite bauen wir eine Logic App in Azure, die als Trigger die Erstellung eines Eintrags in dieser Liste hat. Auf diese Weise können wir indirekt den Übergang von Power Apps zu Azure Logic Apps realisieren.


Die Logic App kann nun Graph API-Aufrufe ohne Lizenzbeschränkungen tätigen, und mit etwas Graph API-Kenntnissen können wir die Aufgabe erledigen. Unser Excel wird also erstellt und wieder in eine SharePoint-Bibliothek eingefügt.


Unsere Buchhaltung möchte nun zusätzlich zum Excel-Dokument auch ein PDF mit den Informationen aus dem Excel-Dokument und allen Belegen der Ausgaben, die wir in der App als Bilder oder PDFs mit den einzelnen Ausgaben erfasst haben. Power Automate, aber auch Logic Apps bieten einige Aktionen von bekannten PDF-Herstellern wie Adobe an. Mit diesen kann man eine Menge anstellen. Allerdings fand ich es schwierig, alle benötigten Funktionen wie Grössenanpassung von Bildern, Konvertierung von Excel in PDF, Zusammenführen von PDFs, Nummerierung von Einträgen usw. mit den Funktionen von Logic Apps zu realisieren. Ich beschloss, die PDF-Generierung selbst in C#-Code zu implementieren. Dieser Code läuft in einer Azure Function und wird von der Logic App aufgerufen. Es gibt verschiedene Lösungen, mit oder ohne Programmierung.


Nun muss der fertige Bericht noch genehmigt werden. An dieser Stelle kommt Power Automate ins Spiel. Mit Hilfe der Approval Actions kann der Bericht an den Vorgesetzten oder eine zentrale Stelle gesendet und genehmigt oder abgelehnt werden.


Um den Mitarbeiter zeitnah über den Genehmigungsprozess zu informieren, verwende ich Push-Benachrichtigungen direkt an das Mobilgerät, auf dem die Power App läuft. Diese Verbindung ist nur in Power Automate und nicht in Logic Apps verfügbar, kann aber durch die Verwendung einer SharePoint-Liste ebenfalls wie beschrieben realisiert werden.


Ich sehe in den Power Platform-Tools von Microsoft ein riesiges Potenzial. Geschäftsprozesse können flexibel umgesetzt werden, Apps können auf Handys ausgerollt werden, und das alles kombiniert mit Datensicherheit und Compliance in M365 und Azure. Auch wenn man immer wieder hört, dass diese Tools ohne Programmierkenntnisse genutzt werden können, braucht es doch einiges an Know-how, um mit diesen Tools echte Use Cases zu lösen und Mehrwerte zu schaffen. Die Dimension der Lizenzierung, die oft darüber entscheidet, ob eine Lösung rentabel ist oder nicht, ist neu und bietet Raum für kreative Lösungen.

bottom of page