RAP & Illegal Statements

Webinar – RAP & Illegal Statements

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Vielen Dank an alle Teilnehmer unseres Webinars zum Thema ABAP RAP & Illegal Statements

Unterlagen/Links zum Webinar „ABAP RAP & Illegal Statements“

Links

Twitteraccounts

Unser nächstes Webinar

Das Thema steht noch nicht fest, aber der Termin steht schon einmal: 30. September 2022 – Und registrieren kann man sich auch schon: https://www.eventbrite.com/e/abap-webinar-tbd-tickets-374641582057

Aber es wird sicher wieder ein spannendes Thema!

Low_NoCode Header

Low-Code / No-Code – Die Lösung für die S/4HANA® Migration?

Wer mich kennt weiß, dass ich Low-Code/No-Code Lösungen mit einer gewissen Skepsis betrachte. Nicht weil es sich dabei um schwache Lösungen handelt. Low-Code / No-Code Anwendungen können durchaus den Flaschenhals des „Fachkräftemangel“ lindern.

SAP® und Low-Code/No-Code – Eine Reise durch die Zeit

Als ich mich mit dem Blogbeitrag erstmals auseinandergesetzt hab, ist mir schnell bewusst geworden, dass ich eigentlich vor 30 Jahren als Low-Code ABAP Entwickler angefangen habe. Ich habe damals im R/2 Reports erstellt. Diese wurden mit Hilfe von logischen Datenbanken realisiert. Ein Entwickler musste lediglich ein paar wenige Kommandos wie GET, CHECK oder WRITE verwenden.

Eigentlich sehr genial, denn damals konnten wir Business-Anforderungen teilweise noch in wenigen Stunden umsetzen. Für Transaktionen konnten wir einen einfachen Screen Painter verwenden und mit PBO und PAI wurde eine sehr simple Dynprologik implementiert.

Schnittstellen wurden mit Hilfe von Batch-Input Mappen auf die Transaktionen realisiert. Eine einheitliche Schnittstellentechnologie für alle – wirklich alle – SAP-Transaktion. Genial!

Am Anfang von R/3 gab es erstmals modulspezifische Berichtsfunktionen (z.B. Report Writer/Report Painter), welche bald durch SAP Query bzw. Quick Viewer ergänzt wurden. Nur zur Verdeutlichung, wir reden hier von einer Zeit vor der 2000er Wende. GuiXT sollte man auch nicht unerwähnt lassen. Ein Tool, mit dem man SAP Gui Screens einfach adaptieren/optimieren konnte.

Und Mitte der 2000er Jahre hat SAP mit dem Visual Composer bzw. dem Composite Application Framework erstmals einen (meiner Meinung nach erfolglosen) Versuch in Richtung Low-Code/No-Code Applikation gestartet.

Aktuelle Low-Code/No-Code Tools der SAP®

Derzeit zählen Tools wie Screen Personas, Fiori Elements oder ganz aktuell SAP AppGyver zu den Low-Code/No-Code Tools der SAP. Im nachfolgenden Teil gehe ich ganz kurz auf diese Anwendungen ein und stelle wie immer weiterführende Links zur Verfügung.

Screen Personas

Ziel von Screen Personas ist es bestehende SAP Gui Transaktionen – auch Kundenentwicklungen – in ein modernes, zeitgemäßes Erscheinungsbild zu bringen. Diese können auch ganz einfach in ein Fiori Launchpad integriert werden. Die Möglichkeiten von Screen Personas sind überschaubar, können aber durch Scripts erweitert werden.

Fiori Elements

Fiori Elements kann man auch zu den Low-Code Tools zählen. Die Darstellung und das Verhalten von Fiori Elements Anwendungen wird rein durch Metadaten (lokal oder vom Backend) gesteuert. Die Daten werden mittels OData (z.B. ABAP RAP oder CAP) prozessiert. SAP selber liefert viele ihrer Fiori Anwendungen in Form von Fiori Elements aus.

Fiori Elements werden mit dem Business Application Studio oder Visual Studio Code erstellt und können bei Bedarf mit Hilfe von den Fiori Tools auch relativ einfach erweitert werden.

SAP® AppGyver

Das ist der jüngste Zukauf der SAP aus dem Jahre 2021. Der finnische Anbieter ist ein weltweit bekannter Anbieter von No-Code Tools und wird derzeit von der SAP sehr gepusht. Auf den ersten Blick sieht das Tool interessant aus. Aber da die Erweiterungsmöglichkeiten sehr, sehr eingeschränkt sind, bin ich nicht sicher ob sich dieses Tool zum Erstellen von Apps für S/4HANA eigenen kann.

Low-Code Plattformen anderer Hersteller

Natürlich bietet nicht nur SAP Low-Code Tools (für SAP) an. Ich möchte hier drei bekannte Anbieter aufzählen, die ebenfalls im Low-Code Teich fischen. Alle Anbieter gehören eher zu den Low-Code Anbietern, sprich die erstellten Anwendungen können mehr oder weniger individuell erweitert werden. Wie genau, muss man sich von Hersteller zu Hersteller speziell ansehen. Und natürlich sind hier extra Lizenzen für die Hersteller zu entrichten.

Neptune

Neptune wurde bereits 2011 von zwei erfahrenen SAP-Beratern gegründet. Von Anfang an mit dem Fokus das Leben eines SAP Developers einfacher zu gestalten. Neptune ist in über 40 Ländern im Einsatz und verfügt über 600 Kunden.

Interessant ist Neptune deshalb, da es weder Gateway noch RAP für die Erstellung von SAPUI5 Anwendungen benötigt und direkt im SAP als Transaktion verfügbar ist.

Simplifier

Simplifier bzw. die Vorgängerfirm iTiZZiMO ist seit 2012 am Markt und verfügt laut eigenen Angaben über viele produktive Referenzen. Simplifier scheint auf den ersten Blick auch für eine Pro-Entwickler interessant zu sein, da es viele Erweiterungsmöglichkeiten gibt.

Mendix

Von Mendix habe ich zuerst vor 3 oder 4 Jahren bei einer TechEd erstmals im Zusammenhang mit SAP gehört. Laut eigenen Angaben zählt Mendix zu den Weltmarktführern im Low-Code Bereich und wurde 2018 von Siemens übernommen. In letzter Zeit habe ich jedoch nicht mehr so oft von SAP & Mendix gehört.

Low-Code/No-Code – Einbahn?

Generelles Risiko von Low-Code/No-Code ist die eingeschränkte oder überhaupt unmögliche Erweiterung durch individuelles Coding. Sobald man sich für einen Low-Code/No-Code Ansatz entscheidet muss man sich diesem Risiko bewusst sein.

Beispielsweise kann ich aus eigener Erfahrung bestätigen, dass man die Fiori Elements umfangreich erweitern kann. Bei AppGyver ist dies laut meinem Kenntnisstand derzeit nicht oder nur in sehr geringem Ausmaß möglich.

ABAP RAP - Tipps & Tricks

Webinar – ABAP® RAP Tipps & Tricks

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Vielen Dank an alle Teilnehmer unseres Webinars zum Thema ABAP RAP Tipps & Tricks aus der Praxis.

Unterlagen/Links zum Webinar „ABAP RAP Tipps & Tricks aus der Praxis“

Video Sprungmarken

Links

Cache Buster Dokumenation

App Index Calculate

SE11 Suchhilfe via Custom Entity

Twitter

Unser nächstes Webinar

Das Thema steht noch nicht fest, aber der Termin steht schon einmal: 24. Juni 2022 – Und registrieren kann man sich auch schon: https://www.eventbrite.at/e/abap-webinar-tbd-tickets-332256186197

Aber es wird sicher wieder ein spannendes Thema!

Rapid Report Generator – Sneak Preview

Wir haben die Abende im Lockdown genutzt und ein neues Produkt an den Start gebracht. Am Freitag dem 13. Mai werden wir eine Sneak Preview zum Rapid Report Generator liefern. Wer werden aber nicht nur das Produkt kurz vorstellen, sondern auch ein paar Hintergrundinformationen zur Entwicklung, Architektur (UI5, Gateway) und unseren „Learnings“ liefern.

Eventbrite Freitag 13. Mai 10:00 – 10:30

UI5 und der Cache

UI5/Fiori und der Cache!

Viele kennen die Situation. Man hat im Entwicklungssystem eine super coole UI5/Fiori App für ein S/4HANA System gebastelt, aber nach dem Import in das Produktivsystem (oder Q-System) geht erstmal gar nix. Target was not found, Type Error, Unknown Setting, Cannot read properties, …

Sehr oft liegen die Gründe der Probleme am Cache! Nicht nur am Browser Cache, auch im SAP Backend gibt es mehrere zu berücksichtigende Caches. Nachfolgend eine Auflistung der Cache Themen, die mir im Zuge meiner Arbeit untergekommen sind.

Eigentlich unglaublich, wie viele Caches man ggf. löschen / invalidieren muss.

Wichtiger Hinweis: Das sind meine persönlichen Erfahrungen, bitte verwendet die Reports oder Transaktionen nur nach vorheriger Prüfung. Es kann durchaus sein, dass der eine oder andere Report obsolet wird oder in gewissen System nicht verwendet werden darf! Ich übernehme keine Garantie, dass die Reports oder Transaktionen in euren Systemen einwandfrei und korrekt funktionieren.

NameTypErläuterungBereich
/UI5/APP_INDEX_CALCULATEReportAb UI Add-On 2.0+ Sollte periodisch eingeplant seinUI / App
/UI2/DELETE_CACHEReportLöscht UI2 Services & Target Mapping CachesUI / App / Lpd
/IWFND/CACHE_CLEANUPTransaktionClean Frontend OData CacheGW
/IWBEP/CACHE_CLEANUPTransaktionClean Backend OData CacheGW
ICM Server CacheGlobal InvalidierenUI / App / GW
/UI2/INVALIDATE_CLIENT_CACHESReportClient Cache Invalidation Fiori Launchpad / Cache BusterUI / App
/UI2/INVALIDATE_GLOBAL_CACHESReportInvalidiert alle UI2 Caches (Alle Services mit /UI2/*, SHMM, … )UI / App
/UI5/UPD_ODATA_METADATA_CACHEReportOData Cache – Cache Buster TokensUI / App
/UI5/UPDATE_CACHEBUSTERReportNur für UI Add-On 1.0UI / APP
CL_SADL_LOAD_AREAShared MemoryShared Memory invalidierenUI / APP
/UI2/FLP_DEL_PERSONALIZATIONReportSAP Fiori Launchpad PersonalisierungenUI / APP
Browser CacheIE, Chrome, … Cache UI / APP

/UI5/APP_INDEX_CALCULATE

Das ist mein Lieblingsreport in dem Zusammenhang, da er mir in den meisten Fällen immer die Probleme löst. Es gibt einen Applikationsindex und Caching für Apps, Komponenten und Libraries. Dieser Report löscht bzw. invalidiert diese Caches / Indextabellen und ist im Normalfall automatisch eingeplant.

Ich habe jedoch die Erfahrung gemacht, dass nach einem Transport von Änderungen einer UI5 Anwendung, ein explizites Ausführen des Reports für die jeweilige Anwendung notwendig ist.

Weiter Informationen zu dem Report können hier entnommen werden:

/UI2/DELETE_CACHE

Hier geht es um das Löschen des UI2 Cache. Dieser kann für einen User oder generell gelöscht werden.

/IWFND/CACHE_CLEANUP und /IWBEP/CACHE_CLEANUP

Invalidiert / Löscht das oData Model (SEGW oder RAP) am Frontend- und Backend-Server.

/UI2/INVALIDATE_CLIENT_CACHES

Dieser Report sollte überhaupt nur in Ausnahmefällen notwendig sein – wenn der UI5 Cache Buster im Einsatz ist. Eine Erklärung zum Report gibt es unter help.sap.com.

/UI2/INVALIDATE_GLOBAL_CACHES

Invalidiert alle globalen UI2 Caches. Bitte die Dokumentation des Reports im System beachten.

/UI5/UPD_ODATA_METADATA_CACHE

Der Report löscht die OData Caches Tokens. Bitte auch hier die Dokumentation des Reports beachten.

/UI5/UPDATE_CACHEBUSTER

Der sorgt dafür, dass der Cache Buster mit dem aktuellsten UI5 Metadaten arbeitet. Der Report ist jedoch nur bei Systemen mit UI Add-On 1.0 einzusetzen. Bei Systemen mit einem höheren UI Add-On Release ist hingegen /UI5/APP_INDEX_CALCULATE zu verwenden.

/UI2/FLP_DEL_PERSONALIZATION

Fiori Launchpad Homepages können normalerweise durch den Anwender personalisiert werden. Es können neue Gruppen angelegt werden, Apps entfernt oder hinzugefügt werden. Manchmal ist es notwendig, solche Personalisierungen zurückzusetzen. Beispielsweise nach Änderungen im Fiori Katalog oder einer Fiori Gruppe. Ein Erklärung zu der Funktion ist hier beschrieben.

Sonstiges

Änderungen an Service-Definitionen müssen manchmal manuell in Transportaufträgen aufgenommen und transportiert werden.

Fazit

Es vergeht fast kein Transport wo nicht irgendein Cache ein Problem bereitet. Aber mit dem /UI5/APP_INDEX_CALCULATE bekommt man das meist in den Griff.

Ich werden diesen Blogpost nach und nach um weitere Erkenntnisse in dem Zusammenhang ergänzen.

header_charts_sagen_mehr_als_1000_worte

Charts sagen mehr als 1000 Worte!

Ein Bild sagt bekanntlich mehr als 1000 Worte. Ein Chart kann zur Verdeutlichung von Trends oder Besonderheiten, die sonst nur schwer ersichtlich wären, beitragen. Mit dem Rapid Report Generator kann jeder Report zusätzlich oder ausschließlich einen Chart ausgeben.

Wir wollen nun den Report aus dem Blogpost RRG – Neuer Report in 3:30 Minuten um die Ausgabe eines Charts erweitern. Ich verzichte hier auf eine Stoppuhr da wir in weniger als einer Minute zu einem Ergebnis kommen werden. Versprochen!

Aktivieren der Chartausgabe

Wir starten wieder in der Rapid Report Administration. Die Ausgabe eines Charts wird ganz einfach durch das Setzen der entsprechenden Checkbox aktiviert:

Ein paar Detailerklärungen:

  • Output Chart – Damit wird die Ausgabe eines Charts für den Report generell aktiviert
  • Default Chart Type – Das ist der initiale Chart Type bei der Ausgabe. In diesem Beispiel haben wir uns für Bar entschieden.
  • Chart Selection – Wenn diese Einstellung aktiviert ist, kann der Anwender den Chart Type zur Laufzeit wechseln.
  • Details Button – Bei dieser Einstellung kann zur Laufzeit ein Details Button zur Detailanzeige von selektierten Chartelementen verwendet werden.
  • Breadcrumbs for Dimension – Dadurch wird die Dimension in Form von Breadcrumbs anstatt eines DropDown Feldes ausgegeben.

Initiale Spalten für Dimension und Measure

Ein Chart benötigt immer zumindest jeweils eine Spalte für die Dimension und einen Messwert. Diese Spalten können bereits in den Reporteinstellungen eingestellt werden. Wenn diese Einstellungen nicht vorbelegt werden, muss der Anwender zur Laufzeit die Spalten selektieren.

Alle Spalten des Reports stehen automatisch abhängig vom Typ als Dimension oder Measure Felder zur Verfügung. Im konkreten Fall haben wir die CARRID als Dimension und das Feld SEATSMAX als Measure aktiviert. Schauen wir uns mal das Ergebnis des Reports an.

Wie eingangs versprochen haben wir in unter einer Minute ein ansprechendes Ergebnis. Der Anwender kann nun noch einige Anpassungen in der Ausgabe vornehmen.

Ändern von Measure oder Dimension

Die Messwerte bzw. Dimensionen können im Chart über die Einstellungsfunktionen jederzeit geändert werden. So können auch mehrere Dimensionen oder Messwerte in einem Chart verwendet werden. Im nachfolgenden Beispiel wurden z.B. Airline und Plane Type als Dimension und 3 Spalten als Messwert verwendet.

Ändern des Chart Types

Wenn die Änderung des Charts erlaubt wurde, stehen dem Anwender eine Fülle weiterer Charttypen zur Verfügung.

Layout Liste & Chart

Wenn eine Liste gemeinsam mit einem Chart ausgegeben wird, können im oberen Bereich 6 Darstellungslayouts selektiert werden.

Die Buttonleiste hat folgende Bedeutung:

  • Table only – Es wird nur die Ergebnisliste ausgegeben
  • Chart only – Es wird nur der Chart ausgegeben
  • Chart/Table vertical – Ausgabe in Form von Chart oben, Tabelle unten
  • Table/Chart vertical – Ausgabe in Form von Tabelle oben, Chart unten
  • Table/Chart horizontal – Ausgabe in Form von Tabelle links, Chart rechts
  • Chart/Table horizontal – Ausgabe in Form von Chat links, Tabelle rechts

Nachfolgend Beispiele für alle genannten Darstellungsvarianten:

Sichern als PNG

Charts können mit der Funktion Download Chart jederzeit als PNG Datei gesichert werden. Es wird nur der sichtbare Teil in die PNG Datei exportiert. Es sollte daher darauf geachtet werden, dass der gesamte Chart sichtbar ist.

RRG – Neuer Report in 3:30 Minuten

In den nächsten 3:30 Minuten werden wir einen neuen Report für den Rapid Report Generator anlegen. Mit Filter. – Wir werden uns die wirklich notwendigen Schritte und Einstellungen ansehen.

Also dann, Stoppuhr stellen – und los gehts!

00:00 – Aufruf Rapid Report Administration /CADAXO/UI38_ADMIN

Die Rapid Report Administration wird mit der Transaktion /CADAXO/UI38_ADMIN aufgerufen. Das ist zugleich auch die einzige Transaktion, die man sich merken sollte – alle anderen Einstellungen erreicht man über diese zentrale Stelle. Für die Interessierten unter uns – UI38 ist unser interner Projektname. In Anlehnung an SE38 bzw. TM38.

00:10 – Anlegen eines neuen Reports

Aktuell können bereits Reports mit 4 verschiedenen Datenquellen angelegt werden: SELECT, STDALV, SAPQUERY und ABPACLASS. In unserem Beispiel legen wir einen SELECT Report auf die berühmt (berüchtigte) SFLIGHT an:

1 Anlegen eines neuen Reports über das Kontextmenü Reports oder über den Button Report.
2 Als Reportname wählen wir hier Z_DEMO_SFLIGHT und als Report Type selektieren wir SELECT.
3 Im Detailscreen des neuen Reports müssen zumindest die GOLD markierten Einstellungen vorgenommen werden.
3.1 Die Ergebnisstruktur in Result Structure kann (muss aber nicht) gleich wie die Struktur in Data Type sein. Die Übertragung erfolgt via CORRESPONDING (=Namensgleiche Felder).
Nur aktive Reports können in der Fiori App verwendet werden.
3.2 Die Ergebnislisten können in 3 verschiedenen Ausgabeformen dargestellt werden (Responsive, Grid, Analytical).
Wir wählen RESPONSIVE, da diese auf allen Devices optimal gerendert wird.
3.3 Reportname vergeben – Jeder Report benötigt einen Titel. Titel können natürlich auch mehrsprachig gepflegt werden.
3.4 Wichtig – Sichern nicht vergessen

01:00 – Test des Reports im RRG-Launchpad

Sofern man als Anwender genügend Berechtigungen besitzt, sollte der neue Report bereits im RRG-Launchpad zur Verfügung stehen. Mit F5 machen wir einen Refresh im Browser.

Wir können den Report bereits auswählen und sogar starten.

Nicht schlecht. Gerade einmal eine Minute und wir haben schon einen RRG Report im Launchpad. Jetzt wollen wir noch ein paar wichtige Ergänzungen vornehmen.

01:30 – Filterbare Felder definieren

Mit Hilfe der Feldeinstellungen können viele verschiedene Anpassungen für den Report und speziell für die Ergebnisliste vorgenommen werden. An dieser Stelle beschränken wir uns auf ein paar filterrelevante Einstellungen. Zwei Felder sollen filterbar werden.

1Feld CARRID
1. Filterable aktivieren
2. Mandatory aktivieren
3. Filter Position auf 1
2Feld CONNID
1. Filterable aktivieren
2. Filter Position auf 2
3. Filter Exclude aktivieren
3Sichern nicht vergessen

Durch diese Einstellungen sollten für die Felder Airline (CARRID) und Flight Number (CONNID) nun ein Filter zur Verfügung stehen. Airline ist wie gewünscht ein Pflichtfeld und Flight Number ist initial ausgeblendet, kann aber zur Laufzeit durch den Anwender eingeblendet werden. Mal sehen ob das Ergebnis passt, also zurück in den RRG Report. Refresh mit F5 nicht vergessen.

02:30 – Test der Filter im RRG-Launchpad

Oha – siehe da, es kann schon nach Airline gefiltert werden. Und wie eingestellt ist es ein Pflichtfeld. Zum Test geben wir AA (American Airlines) ein und starten den Report mit Start bzw. Go – falls der Report in Englisch aufgerufen wurde.

Perfekt! Der initial ausgeblendet Filter für die Flight Number kann über Filter anpassen bzw. Adapt Filter eingeblendet und verwendet werden.

03:00 – Zurücklehnen und staunen

Es sind jetzt ca. 3:00 Minuten vergangen und wir haben einen fix fertigen Report welcher ungeschaut produktiv gesetzt werden kann. Anstatt der SFLIGHT kann hier jede beliebige Tabelle, DB View, CDS View oder AMDP Tablefunktion verwendet werden.

03:30 – Zusätzliche Einstellungsmöglichkeiten

Das Grundgerüst ist geschafft. Jetzt kann der Report durch die verschiedensten Einstellungsmöglichkeiten an die gewünschten Bedürfnisse angepasst werden:

Webinar – Modernize your ABAP®

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Wir sind ja mit Selbstlob sehr zurückhaltend – aber die Erklärung von Domi zu Table Expressions & Table Functions zählt mit zu den besten Erklärungen die ich bisher zu dem Thema gesehen habe!

Natürlich sind auch Sörens Erklärungen zu Field Symbols bzw. Reference hervorzuheben und mein Part zu CORRESPONDING ist bis auf ein paar Versprecher auch ganz gut.

Unterlagen/Links zum Webinar „Modernize your ABAP“

Video Sprungmarken

Twitter

Unser nächstes Webinar

Das Thema steht noch nicht fest, aber der Termin steht schon einmal: 29. April 2022 – Und registrieren kann man sich auch schon: https://www.eventbrite.at/e/webinar-cooler-inhalt-folgt-tickets-305097915077

Klassischen SE38 ABAP im Fiori Launchpad verwenden

Klassischen SE38 ABAP® im Fiori® Launchpad verwenden – via SAPGui for HTML

Ein SAP-System besteht traditionell aus einer sehr, sehr großen Anzahl von SAPGui basierten Reports. Die Bandbreite reicht hier von einfachen List-Reports bis hin zu komplexen interaktiven Reports, quer über alle SAP-Module hinweg. Diese Reports sind entweder durch die SAP zur Verfügung gestellt oder wurden durch SAP-Kunden ergänzt.

Es gibt mehrere Ideen und Möglichkeiten diese traditionellen Reports im SAP Fiori Launchpad zu verwenden. In diesem Blog zeige ich, wie wir das mit Hilfe einer SAP-Transaktion via SAPGui for HTML realisieren können.

Ich beschränke mich hier auf die notwendigen Schritte und Einstellungen. Gute Beschreibungstexte, schöne Icons und auch spezielle Launchpad/Rollen Einstellungen überlasse ich eurer Fantasie.

In diesem Bespiel wollen wir den Demo Report BCALV_FULLSCREEN_DEMO im Launchpad anzeigen, daher verwende ich fast durchwegs auch diesen Namen in IDs oder sonstigen Bezeichnungen. So sieht der Report im SAP Gui aus:

Anlage Transaktionscode

Wenn noch nicht vorhanden, legen wir zuerst einmal einen Transaktionscode für den Report an:

Anlage semantisches Objekt

Für das spätere Mapping im Fiori Catalog verwenden wir ein semantisches Objekt. Die Anlage solcher semantischen Objekte erfolgt mit der Transaktion /UI2/SEMOBJ.

Das semantische Objekt sollte mit Z oder Y beginnen, die restlichen Angaben können frei gewählt werden.

Anlage des neuen Fiori Katalogs

Ich verzichte in dieser Demo auf die Erstellung einer Fiori Gruppe da dies für das Beispiel nicht notwendig oder hilfreich ist. Aber wir benötigen zumindest einen Katalog. Es kann natürlich auch ein bestehender Katalog verwendet werden.

Falls jemand fragt, ob diese umständliche Anwendung tatsächlich das zentrale Tool für diese Definitionen ist – ja, leider!

Im Launchpad Customizing erstellen wir nun in der Katalogübersicht einen neuen Katalog:

Anlegen Target Mapping

Für die zuvor angelegte Transaktion legen wir nun das Targetmapping an. Wir verknüpfen hier nun die Transaktion mit dem semantischen Objekt. Folgende Angaben sind zu machen:

Semantic Object: Z_BCALV_FULLSCREEN_DEMO

Action: display (z.B. es kann auch eine andere Action gewählt werden)

Application Type: Transaction

Transaction: Z_BCALV_FULLS_DEMO

Anlegen Tile

Jetzt folgt der letzte Schritt im Launchpad Customizing. Die Anlage eines Tiles mit der Verknüpfung zum semantischen Objekt. Notwendige Angaben sind:

Title: sinnvoller Name

Use semantic object navgation: true

Semantic Object: Z_BCALV_FULLSCREEN_DEMO

Action: display (bzw. die gewählte action)

Rollenpflege (PFCG)

Der Katalog muss einer Rolle und die Rolle dem User zugeordnet werden. Diese Einstellungen sind auch nicht Ziel dieses Blogs. Der Part wird normalerweise durch einen Basis- bzw. Berechtigungsadministrator vorgenommen werden. In wenigen Worten:

  • Anlage/Pflege Rolle
  • Anlage Transaction SAP Fiori Tile Catalog
  • Catalog wählen
  • User zuordnen. Ggf. Gruppe zuordnen.

Report aufrufen

Wenn der Report nur via Katalog dem User zugeordnet wurde, sollte dieser über den App Finder auffindbar sein. Wenn auch eine Gruppe verwendet wurde, sollte der Report beim User bereits beim Einstieg ins Launchpad sichtbar sein.

Report Ergebnigs im Launchpad

Wenn alles korrekt vorgenommen wurde, sollte der Report nun erfolgreich gestartet werden können und das Ergebnis sollte wie folgt aussehen:

Fazit

Eine SAP-Transaktion und somit auch ein Report kann relativ einfach ins SAP Fiori Launchpad eingebunden werden. Der Aufwand ist überschaubar und das Ergebnis kann sich sehen lassen.

Natürlich unterliegt diese Lösung einigen Einschränkungen, die bedacht werden sollten:

– Darstellung in neuem Browser Tab, keine „saubere“ Integration im Launchpad

– Kein Fiori Design

– Key User Extensibility wird nicht unterstützt

– Nicht Responsive – Nicht optimierte Darstellung für Tablets oder Mobile Phones

Alternative – Rapid Report Generator

Wir haben mit dem Rapid Report Generator ein Tool entwickelt, welches bei der Integration von klassischen SAP Reports im SAP Fiori Launchpad bzw. im SAP Fiori Design behilflich ist. Der Rapid Report Generator verwendet ebenfalls den Original Report, rendert die Inhalte jedoch via SAP Fiori Smart Controls zu 100% im SAP Fiori Design und bietet alle SAP Fiori Vorteile.

Integration von SE11 Suchhilfen in SAP Fiori Elements Anwendungen

Integration von SE11 Suchhilfen in SAP Fiori® Elements Anwendungen

In diesem Blogbeitrag beschreibe ich, wie man eine SE11 Standard Suchhilfe in eine SAP Fiori Elements Anwendung auf Basis von Custom Entitys einbinden kann. SE11 Suchhilfen gibt es schon ewig und sind aus einem SAP-System nicht wegzudenken. In einem aktuellen S/4 System sind nach wie vor über 30.000 SE11 Suchhilfen vorhanden. Zudem wurden im Laufe der Jahre durch die SAP-Kunden viele Suchhilfen dazu entwickelt. Und daher macht es durchaus Sinn, diese auch in SAP Fiori Elements oder UI5 Anwendungen zu verwenden.

Zum Zeitpunkt dieses Blogs ist mir keine Möglichkeit im SAP Standard bekannt (abgesehen vom Ansatz mit dem SAP Gateway), die SE11 Original-Suchhilfen einfach und schnell in vorhandene SAP Fiori Elements Anwendungen zu integrieren. Aber ehrlich gesagt rechne ich damit, dass dies irgendwann in Zukunft durch spezielle Annotations möglich sein wird. Sollte sich daran was ändern, werde ich diesen Blog natürlich erweitern. Aber bis es so weit ist, müssen wir uns mit ein paar Workarounds helfen.

Wie gesagt, ich beschreibe eine Lösungsmöglichkeit via Custom Entitys. Diese sind erst ab einem S/4 1909 System verfügbar. Es gibt, wie oben erwähnt, auch den Ansatz die Suchhilfe mit Hilfe von SAP Gateway zu implementieren. Lutz Rosenpflanzer beschreibt dies in seinem Blog Custom data selection for a Fiori list report application using DDIC Search help sehr gut.

Allgemeines

Prinzipiell müssen wir einmal Sammelsuchhilfen und elementare Suchhilfen unterschieden. Sammelsuchhilfen bestehen aus einer oder mehreren elementaren Suchhilfen. Der hier gezeigte Ansatz verfolgt nur die Integration von elementaren Suchhilfen. Aber natürlich können einzelne Suchhilfen wieder über Annotations zu Sammelsuchhilfen zusammengefügt werden. An dieser Stelle verweise ich auf den Blog Fiori Element: Collective / Multiple value help on selection field von Mohit Bansal. Er zeigt in seinem Blog, wie man mehrere CDS Views als Suchhilfen einbinden kann.

Elementare Suchhilfen welche als Selektionsmethode eine Datenbanktabelle oder einen DB-View verwenden und keinen speziellen Suchhilfe-Exit implementiert haben, können auch mit Hilfe eines klassischen CDS View nachgebildet werden. Dann erspart man sich die zusätzliche ABAP Implementierung. Eine gute Beschreibung dazu findet man in in diesem Blog Fiori Elements-Value help on a selection field within a value help dialog ebenfalls von Mohit Bansal.

Elementare Suchhilfen verwenden jedoch sehr oft Suchhilfe-Exits, dann reicht der Ansatz über klassische CDS Views nicht aus. Mit Hilfe der Custom Entitys können wir unser Vorhaben umsetzen. In dem nachfolgenden Beispiel wird die Suchilfe BUPAP des SAP Business Partners verwendet. Die Suchhilfe besteht lediglich aus einem Suchhilfe Exit.

Step 1 – ABAP Klasse

Zuerst brauchen wir eine ABAP Klasse, welche dann später in der Custom Entity verwendet wird. Die ABAP Klasse muss das Interface if_rap_query_provider implementieren.

Step 2 – Custom Entity

Nun legen wir noch die Custom Entity ZCE_VALUE_HELP_BUPAP an.

Mit der Annotation ObjectModel.Query.implementedBy wird die zuvor angelegte ABAP Klasse hinterlegt. Nun müssen wir noch auf Basis der Parameter der Suchhilfe, die Custom Entity aufbauen. Die SE11 Suchhilfe sieht wie folgt aus:

Exakt diesen Aufbau bilden wir nun auch in der Custom Entity ab.

Eine Custom Entity benötigt zwingend ein KEY-Feld. In dem Fall verwenden wir natürlich PARTNER welches auch der Value ist, welcher durch die Suchhilfe zurückgeliefert wird.

Step 3 – Implementierung der Query-Methode

Jetzt wird es spannend, wir implementieren die Suche in der ABAP Query Methode. Glücklicherweise gibt es die Klasse cl_dsh_type_ahead_processor, die uns hier enorm weiterhilft und vieles abnimmt. Mit Hilfe der Klasse prozessieren wir die Suchhilfe.

Alle restlichen Entwicklungen (Sort, Skip, Top, … ) haben nichts mehr speziell mit der Suchhilfe zu tun, sind aber notwendig damit die Custom Entity korrekt funktioniert und SADL keine Fehler liefert. Andre Fischer beschreibt in seinem Blog How to implement a custom entity in the ABAP RESTful Programming Model using remote function modules, wie die Search Methode einer Custom Entity zu implementieren ist.

Am Ende sollte die Query Implementierung in etwa wie folgt aussehen:

Step 4 – Service Definition & Service Bindung

Dieser Schritt ist jetzt nicht zwingend notwendig. Hier geht es nur darum, dass wir die neue Custom Entity testen wollen.

Service Definition

Service Bindung

Sobald die Service Bindung angelegt ist, können wir die Custom Entity und die Implementierung der Suche mit der Preview-Funktion testen.

Die Filter- und Result-Felder müssen vorerst noch manuell ausgewählt werden, aber dann sollte bereits ein Ergebnis sichtbar sein.

Wenn alles korrekt implementiert wurde, sollten auch die Filter und die Sortierung funktionieren.

Step 5 – Verwendung der Custom Entity in einem CDS View

Jetzt verknüpfen wir die neue Custom Entity Value Help mit einer bestehenden SAP Fiori Elements Anwendung. Angenommen wir haben eine auf RAP basierende Anwendung zur Darstellung von Business Partner.

Folgende Annotation ist nun beim Feld mit der Partnernummer anzugeben.

Danach sollte bei der Anwendung für das Feld PartnerID folgende Suchhilfe zur Verfügung stehen.

Fazit

Es ist vielleicht keine perfekte Lösung, wie gesagt, ich warte auf eine Lösung im SAP Standard. Aber mit Hilfe der Custom Entitys kann man SE11 Suchhilfen einfach und rasch in Fiori Elements oder UI5 Smart Controls verwenden.

Fiori Launchpad - App to App Navigation in UI5 und CDS

Fiori® Launchpad – App to App Navigation in UI5 und CDS

Um einem Anwender eine nahtlose Integration zwischen verschiedenen Fiori Anwendungen im Launchpad zu bieten, ist eine App to App Navigation zwischen den Fiori Anwendungen sehr wichtig. Wie ihr gleich sehen werdet, ist das bei neu erstellten UI5 Fiori Anwendungen oder mit Hilfe von CDS  gar nicht so schwierig.

Semantisches Objekt, Aktion und Parameter

Ein semantisches Objekt ist in der Regel ein Business Objekt wie z.B. BusinessPartner oder PurchaseOrder. Die Action ist das, was man mit dem Objekt machen kann. Z.B. Approve, Change oder Change. Optional könne Parameter angegeben werden welche eine Objektinstanz (Partner ID oder Product-ID) spezifizieren. Je nach Anwendung wird dann direkt die gewünschte Objektinstanz aufgemacht. Soweit die notwendige Theorie.

UI5 – Service CrossApplicationNavigation

Grundsätzlich wird dafür das Service CrossApplicationNavigation verwendet. Einen Zugriff auf das Service bekommt man wie folgt:

UI5 – Direkte Navigation mit semantischem Objekt, Aktion und Parameter

Mit der Methode toExternal wird die Navigation direkt ausgelöst. In target sind das semantische Objekt und optional die Aktion anzugeben. Und in params kann man ebenfalls optional eine Objektinstanz angeben.

Im Nachfolgenden Beispiel wird das semantische Objekt EPMPurchaseOrder mit der Aktion approve und dem optionalen Parameter PurchaseOrder = 300001993 verwendet.

Wenn zu einem semantischen Objekt mehrere Anwendungen definiert sind und keine Aktion mitgegeben wurde, bekommt der Anwender ein Popup mit einer Auswahlmöglichkeit der Target-Anwendungen.

Nachfolgendes Beispiel zeigt, wie man zur Launchpad Startpage navigiert.

UI5 – Erzeugung Link ohne direkte Navigation

Es kann auch die Methode hrefForExternal verwendet werden. Prinzipiell hat die Methode die gleichen Eigenschaften wie toExternal – jedoch wird nicht direkt in die Anwendung navigiert. Stattdessen erhält man einen generierten Link.

UI5 – Erzeugung Link mit einem shell hash

Möglicherweise bekommt man die Link-Informationen von einem Backend-System. In dem Fall kann man die Navigations-Informationen auch wie folgt angeben.

CDS Annotations

Eine App to App Navigation kann auch durch CDS Annotation @Consumption.semanticObject definiert werden. Dadurch wird dann in Fiori Elements Anwendungen oder in UI5 Anwendungen welche Smart Controls einsetzen automatisch die App to App Navigation angeboten.