Spesenerfassung mit PowerApps, Flow und AI – Teil 2

Nachdem wir uns im ersten Teil von diesem Blog Beitrag damit befasst haben, wie wir die einzelnen Spesen samt Quittungen in unserer Power App erfassen, und die Quittungen mittels Artificial Intelligence API auslesen, geht es in diesem zweiten Teil darum, einen Report aus gesammelten Spesenpositionen zu erstellen, welcher dann z.B. von der Finanzabteilung weiter verarbeitet werden kann.

 

PowerApps

Zuerst erweitern wir dazu unsere Ansicht der SharePoint Liste in der PowerApp um einen Button zur Generierung von Spesen Reports. Dazu einfach das Gallery Control etwas kleiner machen und einen Button auf den Browse Screen hinzufügen:

Der Button „Create Report“ wird zur Navigation verwendet, und leitet den Benutzer weiter auf einen neu erstellten Screen „CreateReport“. Dazu wird zuerst der neue Screen erstellt und der „OnSelect“ Eigenschaft des Buttons die Formel zur Navigation eingetragen:

 

Auf dem neuen Screen soll es möglich sein, Spesen nach Datum zu filtern und zusätzlich einzelne Elemente zu selektieren, um so zu bestimmen, welche Spesenpositionen im Report erscheinen sollen. Dazu verwenden wir zwei Datums-Control und eine Galerie zur Anzeige der Resultate:

Damit nur Elemente aus unserer SharePoint Liste im selektierten Datumsbereich angezeigt werden, setzen wir einen Filter für die Datenquelle der Galerie ein, indem die Eigenschaft „Items“ der Galerie wie folgt definiert wird:

Filter(Expenses; ExpenseDate >= DatePickerFilterFrom_1.SelectedDate && ExpenseDate <= DatePickerFilterTo_1.SelectedDate && Status = „New“)

Zusätzlich zum Datum möchten wir auch nur die Elemente anzeigen, welche im Status den Wert „New“ haben, um Spesen nicht doppelt zu erfassen. Die Checkbox in der Galerie erlaubt uns nun einzelne Elemente abzuwählen, welche nicht in den Spesen Report sollen. Unten links wird in einer Textbox noch der Namen des Reports angezeigt sowie unten rechts ein“Create Report“ Button zum Starten des Prozesses.

 

Flow & Excel Liste

Das eigentliche Erstellen des Spesen Reports in Form eines Excel Dokuments, möchte ich einem Flow Ablauf übergeben. Um diesen Flow zu erstellen, selektiere ich den Button welcher den Flow auslösen soll und  im Menü „Aktion“ wähle ich die Auswahl „Flow“ an:

Es öffnet sich der Datenbereich auf der rechten Seite und wir können einen neuen Flow erstellen. Ich kann hier entweder eine einfache Vorlage ausprobieren, oder einen neuen, leeren Flow erstellen. Wichtig ist nur, dass als Trigger der PowerApps Trigger verwendet wird:

Der PowerApps Trigger erlaubt es im Flow Werte zu verwenden, welche dem Flow beim Aufruf aus PowerApps heraus mitgegeben werden, wie wir später noch sehen werden. Für das Beispiel werden folgende Werte an den Flow übergeben und als erstes in Variablen gespeichert:

„ExpensesIdJson“ ist etwas speziell, darin wird ein JSON Array als Text übergeben mit allen Item IDs der selektieren Spesen Elemente in der SharePoint Liste.

 

Um den Spesen Report zu gestalten, wird eine Excel Datei als Template erstellt und in einer Bibliothek in SharePoint abgelegt. Dieses Template wird dann jeweils kopiert und mit den zu verarbeitenden Spesendaten befüllt.

Um die Excel Datei zu erstellen werden folgende Schritte ausgeführt:

  • Template Datei von SharePoint Bibliothek lesen
  • Neue Datei erstellen und Inhalte vom Template speichern.
  • Vordefinierte Bereiche im Excel mit Werten befüllen (Datum von, bis, Mitarbeiter, etc.)
  • Pro Spesen Element ein Eintrag/Zeile in eine benannte Tabelle im Excel hinzugefügt.

Um anhand des Template eine Excel Datei zu erstellen, werden die Actions „Dateiinhalt abrufen“ und „Datei erstellen“ verwendet:

Da es zum Zeitpunkt vom Schreiben dieses Blog Beitrags nur eine Flow Action gab, welche Manipulationen an Excel Dateien zulässt, diese aber zur Designzeit das Excel File kennen muss, was bei uns nicht gegeben ist, musste eine andere Lösung her.

Via MS Graph API lassen sich Excel Dateien manipulieren. Dazu muss man allerdings eine ID des Drive Objektes haben, was eine Bibliothek in SharePoint repräsentiert und eine Item ID, welche die Datei repräsentiert. Da sich der Name oder die URL einer Bibliothek in SharePoint nicht so einfach in die Drive-, und Item ID übersetzen lassen, musste hier einiges an Logik im Flow umgesetzt werden, um an die IDs zu kommen. Mit ein paar Schlaufen und Abfragen sowie JSON analysieren-Funktionen funktioniert aber auch das:

 

Mit der Drive ID und der Item ID kann dann via Graph API der Inhalt im Excel Zeile für Zeile in einer Schlaufe über alle SharePoint Items eingefügt werden:

 

Wenn der Flow fertig erstellt und getestet ist, müssen wir ihn noch aus der PowerApp aufrufen. Hierzu wird die „OnSelect“ Eigenschaft vom „Create Report“ Button mit folgender Formel befüllt:

‚PowerApps-CreateExpensesReport‘.Run(TextInput1.Text;“{ „“values““ : [“ & Concat(Filter(Gallery2.AllItems; Checkbox1.Value); ID & „, “ ) & „] }“; DatePickerFilterFrom_1.SelectedDate; DatePickerFilterTo_1.SelectedDate; User().Email)

 

Der Name “PowerApps-CreateExpensesReport” bezeichnet den Flow. Darauf wird die Methode „Run“ angewendet und die benötigten Parameter Werte übergeben:

  • Report Datei Name
  • JSON String mit allen selektierten Spesen Listen IDs
  • Start Datum
  • End Datum
  • Email des Benutzers

Wenn alles richtig läuft, wird somit ein Spesen Report als Excel Datei erstellt und in SharePoint abgelegt:

 

Fortsetzung folgt…

Im nächsten Teil wird es darum gehen, wie die erstellten Abrechnungen von der zuständigen Instanz genehmigt werden können, ohne das digitale System zu verlassen. Auch dazu wird wieder Microsoft Flow und, wenn möglich, Microsoft Teams verwendet werden.

Wollen auch Sie mit den Möglichkeiten der Microsoft Power Plattform auf dem Laufenden bleiben? Haben Sie konkrete Fragestellungen oder Projekte?
Kontaktieren Sie uns. Unsere Experten helfen Ihnen gerne weiter.