So etwas, sollte man vermeiden: Mehrfaches laden von Datensätzen in einem Kontext
Das mag im Schulungsumfeld „OK“ sein – Produktiv bedeutet das aber Umstand, Unübersichtlichkeit und Zeit. Schöner ist das bilden eines JSON Datensatzes. Das geht ganz einfach:
Einen Satz laden und durch den JSON Tree selektieren.
Da scheiden sich die Geister: Datenaggregation und das setzen der Properties eines UI5 Elements nach oder mit der SQL Abfrage? Eine Frage der Sicherheit und des Komforts. Beispiel unsere KPI Seite https://halsec.de
Die Daten für die Kurs Kacheln habe ich aus Basis von PL/pgSQL als Funktion realisiert. Postgresql übernimmt die Selektion der Daten und die Findung der Properties.
Definition des Daten TypsSelektion und Definition des RückgabewertesErgebnis Abfrage der Funktion
Der JSON Datensatz beinhaltet so alle nötigen Daten zur Darstellung der Kurs Kachel im UI5. So gestaltet sich das JavaScript im UI5 sehr einfach:
(Controller) var anzeige1 = new sap.ui.model.json.JSONModel(); anzeige1.loadData(„https://halsec.de/fetch/ui5_eins.php?wo=USD“); this.byId(„gt2“).setModel(anzeige1, „rates„);
Das Apache2 Modul mod_proxy zur Anbindung des SAP ITS an die Aussenwelt funktioniert recht problemlos wenn es um WebDynpro’s geht.
Will man darüber hinaus auch die WebGUI Online nutzen, gibt es einen Stolperstein. Im Verbindungsaufbau zum WebGUI wird die Session ID (SSO) als POST in der URL ausgetauscht. Das sprengt die Direktive im Filter „/sap“ des Apache welcher dann das „/sap(“ nicht erkennt. Der Prozess bleibt für den User scheinbar stehen.
URL Rewrite im Anmeldeprozess
Apache Proxy und Rewrite
So funktioniert Verbindungsaufbau und Nutzung einwandfrei. Keine schöne Lösung – ich würde das nur für WebDynpro’s nutzen.
Stillstand gibt es bei mir nicht. Auch wenn vieles Routine ist; ein wiederholen ist immer richtig. Neuerungen und Änderungen gibt es auch bei vermeintlichen Grundlagen.
Eingrenzende Filterung oder Bindung in Listen und Tabellen sind häufige Szenarien die in UI5 Anwendungen. Wie kann das realisiert werden, besteht die Anwendung aus mehreren Views?
Eine Möglichkeit ist das speichern von Daten im Session Storage – aus Sicherheitsgründen eine nicht gern realisierte Lösung. Im Controller lassen sich Daten mit „sessionStorage.setItem(„Variable“, „Wert“);“ speichern und an anderer Stelle oder anderem Controller mit „var Variable2 = sessionStorage.getItem(„Variable“);“ gelesen werden.
Eine bessere Lösung ist das deklarieren von globalen Variabeln. Im Controller, ausserhalb einer Funktion, simpel „var Variable;“ vereinbaren. Nach Aufruf des Controllers ist die Variable global verfügbar.
Von SAP favorisiert, ist das arbeiten mit Routing und Targets. Werte werden mit dem Aufruf eines Controllers über das Routing „mitgegeben“. So kann im aufgerufenen View Daten nach Selektion durch Binding oder Filter eingeschränkt dargestellt werden.
List Navigation durch Router und Filter
Im View 1 (Link zum Beispiel) wählen wir einen Kunden aus, nach dessen Kundennummer (description) im View2 die in Relation stehende Daten gefiltert darsgestellt werden.
Im Controller wird Wert aus dem gewählten Listeneintrag gelesen
NavTo lädt entsprechenden Controller. Das geschieht über die im manifest.json vereinbarten Router und Targets:
Es ist zu erkennen, wie die Variable „description“ über den Router im manifest quasi über die URL weiter gegeben wird. Wird der Controller des Views „bst“ aufgerufen wird, liest die Funktion „onInit“ den übergbenen Wert.
OnInit ruft _onRouteMatched auf, wenn Daten übergeben wurdenmit dem übergebenden Argument, wird ein Filter gesetzt
Wird im zweiten View, durch Klick auf einen Listeneintrag, weiter selektiert, muss die Route und das Target ebenfalls deklariert sein.
Weiter Selektion läuft nach dem selben Muster ab
In dem Beispiel navigieren wir nur durch drei Views. Die Möglichkeiten der Selektion sind natürlich frei verwendbar und zu kombinieren.
Im Controller können beliebige JSON Model gebunden werden.
Die Model sind mit setModel(oModel,“XXXXX“) mit verschiedenen Namen gebunden. Im View lassen sich die Namen direkt ansprechen.
In dem Beispiel stelle ich Wetterdaten in einem einfachen Generic Tile dar. Die Wetterdaten werden von einem PHP Script aufbereitet – mit einfachem print out ist es nicht einmal ein gültiges JSON. UI5 ist in der Hinsicht unempfindlich.
Generic Tile mit Daten aus zwei JSON Model
Daten aus openweathermap
Daten müssen nach Code (Standort) gefiltert werden
Das Data Retention Tool (DART) unterstützt uns dabei, die gesetzlichen Anforderungen an die Datenhaltung und die Datenüberlassung für steuerliche Prüfungszwecke zu erfüllen (Grundsätze zum Datenzugriff und zur Prüfbarkeit digitaler Unterlagen (GDPdU)). Mit diesen Datenextrakten kann man auch brauchbare Auswertungen anfertigen und lassen sich beliebig oft im SAP Content Server archivieren. Die Archivierung im Content Server löscht und stellt lokale Dateien wieder her.
DART TCode im Menuebaum
Auswahl der Datenmengen im DART
Mit der FTW1A grenzen wir die zu extrahierenden Daten ein und benennen die zu erstellenden lokalen Datendateien. Die Dateien werden lokal zunächst kompakt abgelegt. Für das Einlesen der Daten in der IDEA Software der Finanzverwaltung, sind die Dateien mit dem Splitter S_P6D_40000027 zu zerlegen.
SAP Audit ist mit IDEA kompatibel
Kompakte Dateien und Splitter
FTWL Auflistung der Datenextrakte
Die Datenextrakte lassen sich über FTWL anzeigen und mit dem Datenexplorer detailiert darstellen. Die Datenextrakte sowie die zerlegten Dateien und Views können im SAP Content Server archiviert werden.
nach Archivierung werden Dateien lokal gelöscht
Treten bei diesem Szenario Fehler auf, kann das an einer Besonderheit im Customizing liegen.
FTWPV Pfadangabe
Pfadangabe des Austauschlaufwerks
OAAD Extrakte wieder finden
Extrakte im Klartext
Die Pfadangaben in der DART und Content Server Administration muss als Literal absolut gleich sein! Auch wenn IP und Netzwerkname logisch ein Ziel darstellen, kommt es zum Fehler wenn diese Angaben nicht absolut (Zeichen, Gross- Kleinschrift) gleich sind!
Nachdem die Daten archiviert wurden, finden wir sie auch in der Dokumentenanzeige OAAD wieder.
In unserem Projekt „Business Address Service“ im SAP System bauen wir derzeit eine Adressprüfung gegen das öffentliche Firmenregister ein.
Unglaublich guter Service, den die GfUD nutzt: Plausibilitätsprüfung und Ergänzung zu ihrem Kundenverzeichnis.
Plausibilitätsprüfungen und wertvolle Ergänzungen für ihr CRM und SD. Ein Vorteil für ihre Risikoabschätzung und Herstellung der Transparenz von gemeinsamen Geschäften.
Das Projekt (2019) wird nicht veröffentlicht – wer noch teilnehmen, oder den Dienst ausserhalb von SAP System nutzen möchte, mag mich kontaktieren:
Die Themen Dokmentenmanagement und Dokumentenarchiv sind im SAP System extrem komplex implementiert. Ganz bestimmt kein Thema, auf das man „mal eben“ in einem Blog eingeht.
Zu den bestehenden offiziellen Installationsanleitungen ( unter anderen: LINK ), bin ich über diese Kleinigkeiten gestolpert:
VOR der Installation (!!) sollten die User angelegt werden:
sapcs ( für den Content Server ) und sapcsc ( für den Cache Server ) in Gruppe sapsys.
In deren Homeverzeichnis ist dann jeweils ein Apache2 2.2 zu compilieren. Wer mag kann andere Apacheversionen ausprobieren – habe ich gemacht und sage: Apache2 2.2
Apache2 2.2 Installation in Homedirectorys von SAPCS und SAPCSC
Zuerst das configure ausführen. In jedem Verzeichnis:
Du muss angemeldet sein, um einen Kommentar zu veröffentlichen.