
025: Recycling-Heroes - New Data (Contact)
In dieser Folge finalisieren wir die Kontakt App, erstellen einen großen Satz Testdaten, Setzen die Nummernkreise zurück und machen noch die letzten Anpassungen am UI.
Inhaltsverzeichnis
Einleitung
In dieser Folge finalisieren wir die Kontakt App und befüllen die Anwendung mit ordentlichen Daten. Dabei schauen wir uns ein Open Source Projekt an, laden die Daten über EML in unsere Anwendung und passen zum Abschluss noch einmal das UI an, um die richtigen Daten zu sehen.
Test Data Container
Für das Laden der Daten verwenden wir ein Open Source Projekt, welches auch zur Bereitstellung von Test Daten Containern über GitHub genutzt werden kann. Dazu nutzen wir die zentrale Ablage und den JSON Editor auf Github, um ein großes Datenpaket laden zu können und damit unsere Anwendung befüllen zu können. Im Repository und der README Datei findest du noch weitere Informationen zur Nutzung des Projekts, sowie zusätzliche Beispiele. Link zum Projekt in der Beschreibung des Videos.
Implementierung
Schauen wir uns deshalb einmal die Daten im Repository an. Im neuen Ordner "DATA" findest du eine JSON Datei, wo wir bereits Mitarbeiter, Kunden und Adressen hinterlegt haben. Möchtest du auf die eigentlichen Daten ohne Webseite zugreifen, kannst du über den Button "RAW", dir den Dateipfad und die JSON Datei anschauen. Diesen Pfad benötigen wir dann auch zum Laden der Informationen nach ABAP.
Für die Entwicklung nutzen wir unsere alte Testklasse, wo wir bereits einen ersten Datensatz erzeugt hatten. Bis auf das Löschen der Daten in der Tabelle, können wir die alte Logik entfernen. Im nächsten Schritt erzeugen wir eine neue Methode, zum Beladen der Daten, und lassen diese über den Content Assist anlegen. Die neuen Kontakte wollen wir über ein EML Statement anlegen, da wir das automatische Numbering und die Prüfung der Datensätze wiederverwenden wollen. Legen wir nun den Pfad zur GitHub Datei als Konstante in der Klasse an.
Um das Test Data Framework zu nutzen, benötigen wir eine Konfiguration, dieser übergeben wir den GitHub Pfad und den Namen der Datei, um eine neue Konfiguration anzulegen. Die Konfiguration können wir dann der Factory übergeben, um eine neue Instanz des Frameworks zu generieren, welche wir per RETURNING an den Aufrufer zurückgeben. Da die angelegte Struktur im JSON bereits unserer Zielstruktur entspricht, können wir die Daten direkt in die interne Tabelle laden. Nun müssen wir nur noch das EML Statement schreiben und die Daten an das RAP Framework übergeben. Dabei geben wir hier beim Create an, welche Felder wir einfügen wollen. Damit müssen wir nicht mehr die CONTROL Struktur der Tabelle befüllen, was uns einige Zwischenschritte spart. Da wir für das Framework auch die CID befüllen müssen, verwenden wir hier den AUTO FILL, damit werden generische IDs übernommen. Da wir keine Abhängigkeiten innerhalb der Hierarchie haben, reicht das für unseren Fall.
Damit wir nun eventuelle Fehler mitbekommen, legen wir noch die Rückgabetypen FAILED, MAPPED und REPORTED an und geben diese in die Konsole aus. Du solltest auch nicht den Commit vergessen, damit die Änderungen nach dem EML Statement persistiert werden.
Führen wir dann die Klasse aus, sollten wir als Ausgabe die neuen Datensätze und deren Referenzen erhalten. Schauen wir uns dazu die Daten im Data Preview an, finden wir diese mit den neuen Nummerierungen.
Nummernkreis
Aktuell haben wir Lücken in der Nummernvergabe, die noch aus unseren Experimenten mit den Datensätzen und Features entstanden sind. Im nächsten Schritt wollen wir die Nummernkreise zurücksetzen und die Daten erneut zu generieren, um lückenlose Informationen zu haben. Dazu rufen wir im Launchpad die App "Manage Number Range Intervals" auf und gehen in die Pflege unseres Nummernkreises. Dort öffnen wir das erste Interval und können über den Button "Change Number Range Status" den aktuellen Stand anpassen. Diesen setzen wir wieder auf Null am Ende und müssen die Hinweise bestätigen. Grundsätzlich solltest du dir dabei Gedanken machen, vor allem in einem Test und Produktivsystem. Da wir hier in Entwicklung sind und wir im Anschluss alle Daten wegschmeißen werden, ist das kein Problem für uns.
Führen wir nun noch einmal die Logik aus und befüllen unser RAP Objekt mit den Daten. Nach der Ausführung gehen wir in den Data Preview und prüfen die Daten. Nun sollten die Nummern bei 1 starten und wir haben keine Lücken mehr in den Daten. Die Daten wurden damit erfolgreich geladen und ein erster Satz an Daten ist für uns verfügbar.
UI
Gehen wir noch einmal ins UI und schauen uns die Daten im System an. Aktuell haben wir 26 Datensätze aus den verschiedenen Bereichen. Im List Report fällt allerdings auf, dass der Text bei den Adressen nicht wirklich gut aussieht. Da FirstName und LastName für die Adresse keine Pflichtfelder sind, haben wir hier sehr viele leere Felder. Ebenso haben wir bei den Kunden einige Firmen, hier haben wir ebenfalls leere Stellen beim zweiten Feld. Navigieren wir auf die Object Page, dann erhalten wir bei der Adresse ein "Unnamed Objekt", diesen Zustand wollen wir gern korrigieren.
Dazu gehen wir in unsere Anwendung, wo der eigentliche Text generiert wird. Aktuell wird in der Wertehilfe der FullName nur aus dem FirstName und LastName zusammengesetzt. Daher passen wir die Erzeugung des Feldes an. Über Funktionen in CDS können wir das ganz leicht durchführen, handelt es sich um eine Adresse, dann wollen wir eine andere Logik verwenden, als bisher. Dazu nehmen wir die Straße, ergänzen diese um ein Komma und hängen den Namen der Stadt am Ende an. Im Data Preview ist der FullName nun für alle Informationen befüllt.
Damit können wir nun den FullName an den passenden Stellen verwenden. Gehen wir dazu in die Metadata Extension und entfernen das LineItem an FirstName und LastName, um die Felder auf dem List Report auszublenden. Dafür zeigen wir nun an der gleichen Stelle den FullName an. Prüfen wir das UI, dann sehen wir nun keine Lücken mehr im List Report, einzig die Überschrift gefällt uns noch nicht. Dazu ergänzen wir das EndUserText Label am Feld und haben damit unsere Anwendung fertiggestellt.
Zusammenfassung
Die Anwendung hat nun den entsprechenden Stand, den wir uns wünschen. Auf der Object Page wird nun ein ordentlicher Titel angezeigt, auch für die Adresse. Grundsätzlich könnten noch Kleinigkeiten angepasst werden, wie zum Beispiel das Ausblenden der Kontakt ID oder des Namens für die Adresse. Im ersten Schritt würden wir die App aber so lassen und in der nächsten Folge mit der Konfiguration beginnen.
Bis dahin, danke fürs Zuschauen und bis zum nächsten Mal.
YouTube
Video