
ABAP in der Praxis - News App verwenden
In diesem Praxisbeispiel schauen wir uns an, wie wir die neue News App im ABAP Environment mit Informationen bestücken können. Dabei analysieren wir die aktuelle ABAP Auslieferung der Anwendung und des Services, um das korrekte Format zu finden.
Inhaltsverzeichnis
In diesem praktischen Beispiel führen wir über die verschiedenen Tools eine analyse einer bestehenden App durch und versuchen die neue News App mit Informationen auszustatten.
Einleitung
Im Release 2602 wurde im ABAP Environment die My Home Startseite ausgeliefert, die bereits auch in Public Cloud, Private Cloud und On-Prem existiert. Das Feature soll das Launchpad etwas ansehnlicher machen und wichtige Informationen auf einen Blick zeigen.
Aufgabe
Die eigentliche Aufgabe besteht darin die News in der Anwendung zu pflegen und mit neuen Informationen zu befüllen. Dabei kannst du alle Informationen dazu verwenden, die du findest. Grundsätzlich kannst du auf deiner Suche bei den Release Notes zum ABAP Environment starten.
Hinweis: Im nächsten Abschnitt werden wir auf die Lösung eingehen, wenn du die Aufgabe erst einmal selbstständig machen möchtest, solltest du hier pausieren.
Lösung
In diesem Kapitel gehen wir auf die Lösung und die verschiedenen Schritte ein, die wir für die Analyse verwenden können.
Offizielle Quelle
Wie bereits in dem oben erwähnten Artikel beschrieben, verwenden wir für die initiale Recherche den offiziellen Blogbeitrag in der SAP Community. Dort wird auf die offizielle SAP-Hilfedokumentation verwiesen, um weitere Informationen über „My Home“ zu erhalten. Gehen wir dort auf die Unterseite, finden wir eine Kategorie News. Dort werden wir allerdings für die Verwaltung auf die Administrator Settings weitergeleitet, wenn wir mehr Einstellungen vornehmen wollen. Im unteren Teil finden wir weitere Informationen, wie wir eigentlich eine Anpassung vornehmen können. Dabei wird auf die "Adapt UI" Funktion der Key User Extensibility verwiesen. Dort stehen uns dann verschiedene Möglichkeiten zur Verfügung, die in der Dokumentation beschrieben sind, wie ein RSS-Feed oder das RASD-Tool (Release Assessment and Scope Dependency). Dieses Tool generiert eine Excel-Datei, die wir dann später hochladen können. Allerdings erhalten wir keine Informationen darüber, welches Format der RSS-Feed haben soll oder wie die Excel-Datei für das RASD-Tool genau aufgebaut ist.
Keyuser Extensibility
Wechseln wir in den Adapt UI Modus, um die "My Home" Seite anpassen zu können. Hier klicken wir auf die Kachel für die News und erhalten eine Auswahl zur Personalisierung der Kachel.
Im nächsten Popup sehen wir das Customizing für alle Objekte und können hier den News Bereich zum Customizing wählen.
Im nächsten Abschnitt wählen wir dann den News Feed, um hier weitere Einstellungen machen zu können.
Hier stehen uns verschiedene Optionen zur Verfügung, die "Manage News App", die URL zum Feed oder eine Excel Datei zum Upload.
Pflege der Daten
Da wir nun die Daten pflegen wollen, gehen wir auf die Suche nach der News App, die auch im Standard definiert ist. Den Eintrag zur App finden wir in der SAP Fiori Apps Reference Library unter dem Eintrag Manage News (F8438). Prüfen wir die Versionen, steht die App allerdings auch nur in der Public Cloud seit Release 2508 und im 2025er Release für On-Prem und Private Cloud zur Verfügung. Auch die Suche im ABAP Environment bringt kein Ergebnis, die entsprechende App ist nicht verfügbar.
Da wir aktuell kein passendes Release im Zugriff haben und das Format für den Feed ebenfalls unbekannt ist, schauen wir uns das RASD Tool an. Dazu finden wir auch recht schnell einen veralteten Artikel in der SAP Community und die neue Version verlinkt. Allerdings wird hier auch schnell klar, dass das Tool nur für Public Cloud Kunden zur Verfügung steht und wir es damit ebenfalls nicht nutzen können. Allerdings hindert uns nichts daran eine Excel Datei im Service hochzuladen. Daher erstellen wir ein einfaches XLSX Format für unseren Test.
Allerdings erhalten wir beim Upload direkt einen Fehler vom Service und können hier nicht weiterarbeiten. Grundsätzlich kein Problem, scheinbar hat das System unsere Datei trotzdem verarbeitet und uns zum fehlerhaften Format eine Information zukommen lassen. Daher können wir nun in die weitere Analyse des Formats und der Inhalte gehen.
Format
Um nun das richtige Format zu finden, müssen wir uns den Service und die Validierung genauer anschauen. Dazu öffnen wir im Browser die Entwicklertools mit F12, um in die Details des Netzwerks zu schauen. Dort sehen wir alle Services, die wir aufgerufen haben und welche Antwort von dort gekommen ist. Laden wir also noch einmal die Datei erneut hoch und schauen uns den Request an.
Im Request finden wir die URL und den Service, der aufgerufen wird. In der eigentlichen Antwort wird auf den Feed Reader verwiesen, scheinbar haben wir hier eine fehlerhafte Datei übergeben, die nun zu einem Fehler im Backend führt. In der URL finden wir den Service /UI2/INSIGHTS_SRV, welcher sich als Service Binding im System finden lässt. Wobei es sich um das erste Service Binding handelt, wo wir auch einmal zwei Service-Namen in der Definition finden. Dahinter steht eine API zum Lesen (READ) und eine mit weiteren Aktionen (REPO).
Da wir gerade eine Datei hochladen wollen, sind wir im REPO Context unterwegs. Wir finden aber auch den Pfad in der Aufruf-URL, falls du dir nicht sicher bist. Da in der Service Definition mehrere Entitäten nach außen freigegeben werden, finden wir auch wieder in der URL unseren Endpunkt NEWS_FEED.
Prüfen wir also im System, was sich hinter /UI2/INSIGHTS_NEWS_FEED verbirgt. Hier finden wir einen Core Data Service und eine Verhaltensdefinition. Das heißt wir haben es mit einem Business Object im RAP zu tun.
Das eigentliche RAP Objekt ist recht einfach aufgebaut. Es handelt sich um ein Unmanaged RAP Objekt ohne weitere Aktionen. Da wir hier im Unmanaged unterwegs sind und oben im Request ein POST Request verwendet wurde, befinden wir uns im CREATE Fall. Für UPDATE und DELETE würden andere HTTP Request Methoden verwendet werden.
unmanaged implementation in class /ui2/bp_insights_news_feed unique;
strict ( 2 );
define behavior for /UI2/INSIGHTS_NEWS_FEED alias News_Feed
lock master
authorization master ( global, instance )
{
field( mandatory :create, readonly :update) changeId;
create;
update;
delete;
}
Daher können wir im nächsten Schritt in der Implementierung für die CREATE Methode vorbeischauen, da dort die Validierung und der Upload stattfinden sollte. Die Methode ist mit 500 Zeilen nicht wirklich Clean ABAP konform, was nun die Analyse etwas schwieriger macht. Allerdings können wir hier einen Code Explain durchführen und das eigentliche LLM ist nicht unbedingt wichtig. Da wir im Moment sehr viel Gemini testen, verwenden wir das Modell, um uns den Code einmal näher erklären zu lassen.
So erhalten wir Informationen, dass die Logik mit CSV und XSLX Dateien arbeiten kann, aber auch Informationen, welche Felder von Relevanz für die Überprüfung ist. So werden drei Felder als Pflichtfelder definiert. Noch einmal nachfragen müssen wir bei der eigentlichen Zielstruktur bzw. sogar die Tabelle "/UI2/INSIGHTS_NF", da diese die Möglichen Felder und Varianten der Daten definiert, die wir über die Excel Datei mitgeben können. Weiterhin sagt uns die Analyse, dass die Spaltennamen für die Zuweisung der Daten verwendet werden. Mit diesen Informationen können wir eine erste Excel Datei aufbauen.
Die Daten wurden erfolgreich in der Datei hochgeladen und wir erhalten eine Erfolgsmeldung. Nun können wir die Anpassung als neue Variante der Seite speichern (über Key User Extensibility) und im aktuellen System veröffentlichen.
Anzeige
Die News Kachel hat sich nun verändert und zeigt uns eine neue Ansicht. Hier müssen wir zuerst den Filter anpassen, damit wir die Neuerungen im System sehen.
Wenn wir auf den Button klicken, gelangen wir in die Einstellungen und können hier aus verschiedenen Line of Business (LOB) wählen, die wir zuvor in der Excel Datei definiert haben. Setzen wir die Haken im UI und bestätigen die Einstellungen.
Klicken wir auf die News Kachel, wenn zum Beispiel "System" sichtbar ist, dann erhalten wir eine Übersicht der hochgeladenen Artikel. Die Überschrift und der Langtext sind sichtbar. Über den "Read More" Link öffnet sich ein neuer Tab und der Link, den wir in der Excel angegeben hatten, wird geöffnet. Damit wissen wir nun, wie wir die Anwendung mit Daten bestücken.
Application
Die Erstellung könnten wir aber auch etwas erleichtern und lassen uns dazu eine RAP App im System generieren.
Generierung
Als Vorlage verwenden wir die Felder der Tabelle "/UI2/INSIGHTS_NF" und erzeugen uns eine eigene Tabelle. Dazu ergänzen wir noch die benötigten Adminfelder und setzen die passenden Attribute für den Generator. Hier verwenden wir die einfache Form des Generators.
@EndUserText.label : 'News'
@AbapCatalog.enhancement.category : #NOT_EXTENSIBLE
@AbapCatalog.tableCategory : #TRANSPARENT
@AbapCatalog.deliveryClass : #C
@AbapCatalog.dataMaintenance : #ALLOWED
define table zbs_nf_news {
key client : abap.clnt not null;
key changeid : abap.char(32) not null;
key line_no : abap.int8 not null;
lineofbusiness : abap.char(255);
solutionarea : abap.char(1333);
solutioncapability : abap.char(1332);
title : abap.char(1332);
description : abap.string(0);
category : abap.char(1332);
type : abap.char(1332);
scopeitems : abap.char(1332);
validasof : abap.char(1332);
functionallocalization : abap.char(1332);
preparationrequired : abap_boolean;
contentupgraderelevant : abap_boolean;
impactedartifacts : abap.string(0);
customobjects : abap.char(1332);
whatsnewdocument : abap.string(0);
local_created_by : abp_creation_user;
local_created_at : abp_creation_tstmpl;
local_last_changed_by : abp_locinst_lastchange_user;
local_last_changed_at : abp_locinst_lastchange_tstmpl;
last_changed_at : abp_lastchange_tstmpl;
}
Damit lassen wir uns eine Fiori App generieren, die uns die nötigen Felder für die Pflege zur Verfügung stellt. Bei der Generierung wirst du vielleicht einige Fehler erhalten, weil das Feld LINE_NO in LINENO umgewandelt wird, was zu Problemen mit bestehenden Feldern führt. Weiterhin müssen wir für den Excel Export die Felder bzw. die Überschriften konvertieren, da die Excel Datei ein gewisses Format benötigt.
Upload
Über den Standard Excel Export der Anwendung können wir uns dann die Daten herunterladen und direkt in der New Anzeige wieder hochladen. Grundsätzlich nicht die beste Integration, aber leider sind die Objekte von SAP nicht für die interne Verwendung freigegeben. Daher gehen wir im Moment den Weg über die Excel Datei.
Repository
Die fertige App findest du in diesem GitHub Repository, damit du dir das fertige Ergebnis anschauen kannst, aber auch um dir Zeit bei der Anlage der Anwendung zu sparen. Grundsätzlich ist die App funktionsfähig, aber vom UI und der Implementierung nicht besonders schön. Weitere Anpassungen und Verbesserungen kannst du dann bei dir durchführen.
Fazit
In dem heutigen Artikel hast du vor allem gelernt, wie du eine Fiori Anwendung und einen Service analysierst und die Implementierung verstehst, um die eigentliche Quelle zu erstellen (Reverse Engineering). Dabei haben wir am Ende das passende Format gefunden, um die News App mit neuen Daten auszustatten.

















