ABAPConf 2024

Am 6. Juni 2024 erlebte die 4. ABAPConf ihre mit Spannung erwartete Premiere als Live-Event in St. Leon-Rot! Rund 350 Entwickler:innen aus aller Welt kamen nach Deutschland, während zusätzlich 500 Personen das Event über YouTube live verfolgten.

Organisiert von Johann Fößleitner, Domi Bigl, Tobias Hofmann und Sören Schlegel, bot die ABAPConf unter dem Leitspruch „by developers for developers“ eine exklusive Gelegenheit für intensiven Wissensaustausch, Networking und praxisnahe ABAP-Erfahrungen. Diese großartige Idee entstand bei einem Treffen am SAP Stammtisch und nahm von dort ihren erfolgreichen Lauf. Dank der Unterstützung durch die SAP fand die Veranstaltung im beeindruckenden Gebäude ROT03 in St. Leon-Rot statt, was die Konferenz zu einem besonderen Erlebnis machte.

Als Teil der dreitägigen CodeConnect-Veranstaltung, die auch ReCAP und UI5Con umfasste, bildete die ABAPConf den krönenden Abschluss und das absolute Highlight für alle ABAP-Enthusiast:innen.

Anlässlich der ABAPConf widmeten Frank Engert und Michael Keller eine besondere Folge ihres „We Love Formulare“-Podcasts der Veranstaltung. Johann Fößleitner gibt darin spannende Einblicke in die Planung und Entwicklung der ABAPConf. Jetzt reinhören auf Spotify, Deezer oder Apple Podcast!

Bereit, die Highlights und Erkenntnisse der ABAPConf 2024 zu entdecken? Los geht’s!

Let’s Recap!

Wer die ABAPConf vor Ort erleben wollte, konnte sich etwa zwei Monate vor dem Event ganz einfach über die Webseite für ein kostenloses Ticket registrieren. Bereits nach der ersten Stunde waren über 250 Tickets vergeben! Ein kleiner Tipp für das nächste Jahr: Wenn Sie bei der ABAPConf 2025 dabei sein möchten, sollten Sie schnell handeln! 😉

Programm und Ablauf

Die Veranstaltung nutzte das Audimax sowie zwei zusätzliche Räume (W1/2 und W3), in denen parallel verschiedene Sessions stattfanden. Diese Struktur ermöglichte es den Teilnehmer:innen, aus einer Vielzahl von Vorträgen und Workshops zu wählen und somit ein individuell zugeschnittenes Konferenzerlebnis zu genießen.

Die ABAPConf 2024 bot ein vielfältiges Programm, welches 4 Sessions auf Deutsch und 14 Vorträge auf Englisch beinhaltete. Die Themen erstreckten sich über ein breites Spektrum rund um ABAP und wurden von SAP-Mitarbeiter:innen sowie von erfahrenen SAP-Freelancer:innen präsentiert. Die Vorträge deckten sowohl tiefgehende ABAP-Themen, Programmierstrategien und ABAP Cloud ab, als auch aktuelle Trends wie generative KI und Community-Themen. Mehr zur Agenda hier.

Für diejenigen, die nicht vor Ort teilnehmen konnten, boten unsere Live-Streams die Möglichkeit, die Konferenzinhalte bequem von Zuhause oder aus dem Büro zu verfolgen. Für alle, die während der Veranstaltung etwas verpasst haben oder die Vorträge erneut durchsehen möchten, sind die Inhalte jetzt online verfügbar. Auch die Slides der Präsentationen stehen Ihnen ab sofort als PDF zur Verfügung.

Audimax Aufnahme

Themen

Außerdem bot die SAP in W3 die SAP Inside Experience – eine Kombination aus Vorträgen und Diskussionen über die aktuellsten Themen der Branche, vorgetragen von hervorragenden Mitarbeiter:innen der SAP.

Unter den vielen spannenden Vorträgen wollen wir „Role of ABAP CDS in the ABAP Cloud Development Model“ besonders hervorheben. Dieser Vortrag, gehalten im Rahmen der SAP Inside Experience, bot tiefgehende Einblicke in die Weiterentwicklung der ABAP Core Data Services (CDS) speziell für die Cloud.

Der Vortrag behandelte die neuesten CDS-Features für die ABAP Cloud und ermöglichte den Teilnehmer:innen, sich über zukünftige Technologien und Anwendungen zu informieren. Es wurden drei neue CDS-Entity-Typen vorgestellt, die das ABAP-Cloud-Entwicklungsmodell bereichern:

  • CDS Simple Type: Ermöglicht die Definition neuer, elementarer Datentypen für ABAP CDS, die anstelle von DDIC-Elementen verwendet werden können.
  • CDS Enumerated Type: Ein neuer Datentyp, der es erlaubt, eine vordefinierte Menge von Werten zu spezifizieren – ähnlich wie Enums in anderen Programmiersprachen.
  • CDS Scalar Functions: Diese Funktionen bieten die Möglichkeit, Skalarwerte in SQL-Queries zu berechnen, und sind mit ABAP Managed Database Procedures (AMDP) verknüpft.

Besonders bemerkenswert war die intensive Fragerunde am Ende der Session, bei der die Teilnehmenden tief in die Materie einsteigen konnten.

Für detailliertere Informationen zu diesem Vortrag können Sie sich das PDF hier herunterladen.

Erholung und Netzwerken

Zwischen den Sessions hatten die Konferenzbesucher:innen jeweils 15 Minuten Pause, um sich mit anderen Entwickler:innen auszutauschen, am Buffet zu schlemmen oder sich bei einem Getränk zu erfrischen. Für das leibliche Wohl war bestens gesorgt: Von einem großzügigen Frühstück über ein abwechslungsreiches Mittagessen bis hin zu einem leckeren Abendessen standen den Gästen kostenlose Buffets zur Verfügung, die sowohl Fleischgerichte als auch vegane Optionen boten.

Das Gebäude war mit gemütlichen Rückzugsorten für Telefonate und Co. ausgestattet, die Steckdosen und eine Leinwand für den Live-Stream aus dem Audimax boten, um keine wichtigen Inhalte zu verpassen.

Das schöne Wetter mit 23 Grad ermöglichte es den Teilnehmer:innen, ihre Pausen im malerischen Garten des SAP-Gebäudes zu verbringen.

Ein herzliches Danke!

Ein besonderer Dank gilt unseren Sponsoren, ohne deren Unterstützung die Konferenz nicht möglich gewesen wäre:

Ein ebenso großer Dank gilt der SAP für die großzügige Bereitstellung des beeindruckenden Gebäudes sowie der Unterstützung vor Ort durch Personen wie Karl Kessler.

Wer auch abseits der Konferenz noch profitieren wollte, konnte an 3 Ständen Infos zu brandneuen SAP Eigenprodukt-Entwicklungen sowie Workshops einholen.

Vertreten waren hier…

Neptune, die effiziente no-code/low-code Lösungen für SAP Fiori Apps anbieten:

dox42, die Lösungen zum automatischen Erstellen von SAP Formularen anbieten:

CADAXO (wir), die zusammen mit Brandeis Consulting Workshops rund um die S/4 Migration, Modern ABAP und Clean Code anbieten, sowie das SQL Cockpit – ein Tool zur effizienten Datenbankabfrage, -vergleich und -modifikation auf allen SAP Systemen – entwickelt haben.

Abschluss

Zum krönenden Abschluss der Veranstaltung fand im Audimax die feierliche Verleihung der Medaillen für den ABAPConf Legends club statt, bei der die herausragenden Beiträge der Speaker gewürdigt wurden. Mit den abschließenden Worten, die einen ersten Blick auf die nächste ABAPConf ermöglichten, wurde das Abendprogramm eröffnet. Um auf dem Laufenden zu bleiben und wichtige Neuigkeiten wie den Call for Speakers nicht zu verpassen, empfiehlt es sich, der ABAPConf LinkedIn-Gruppe beizutreten.

Die Teilnehmer:innen wurden in den Garten des SAP-Gebäudes eingeladen, um bei einem Buffet und entspannter Musik vom DJ den Abend ausklingen zu lassen.

Dieser gesellige Abschluss rundete die Veranstaltung perfekt ab und bot allen Anwesenden die Gelegenheit, in lockerer Runde noch einmal die Eindrücke der ABAPConf 2024 Revue passieren zu lassen.

Vielen Dank fürs Lesen und wir freuen uns schon darauf, die nächste ABAPConf wieder zu organisieren!

Weiterführende Links:

Cadaxo UI5 Snippet 2

Cadaxo UI5 Snippets #2 – i18n with parameters in XML View

Internationalization in UI5 – using i18n properties files – is the way to translate text into other languages. In this blog post I will share you the way, how to use i18n text with parameters in XML Views.

Define i18n File

/webapp/i18n/i18n.properties

Using in XML View

To display defined text with parameters you can use following snippet

Set parameters in Controller

Define JSON Model in manifest.json file

Do not forget to define ‚myModel‘ as it is not possible to input the parameter as a hard-coded strings. Either in the View or in manifest.json file

Let me know how you work with i18n parameters in Frontend or leave a comment if you found this blog post useful!

Constants

Cadaxo UI5 Snippets #1 – How to define constants

During the work on some Freestyle UI5 Apps I always look for a way how to save constants in Frontend. I would like to share following practice with you, which I use currently.

Define JSON File with Constants

I am going to create a new File in my project root folder. In this file all constant and values will be stored as a JSON Object.

/webapp/model/constants.json

   

Define JSON Model in manifest.json file

I my project manifest.json, I am going to define a new JSON Model with created JSON file in URI

Using Constants in View

From now on it is possible to use the constant model in View:

Using Constants in Controller

And of course also in Controllers. For example like this:

Let me know how you save constants in Frontend or leave a comment if you found this blog post useful!

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.

Typische Support Anfragen in SAP Systemen

Typische Support Anfragen in SAP® Systemen

und wie das SQL Cockpit uns das Leben vereinfachen kann

Wer kennt das nicht. Die Systeme sind aufgesetzt und eingestellt, die Erweiterungen programmiert und die Schnittstellen laufen. Die Tests waren erfolgreich und das SAP System wurde produktiv gesetzt. Dennoch kommen immer wieder Supportanfragen herein. 

Das kann natürlich verschiedenste Gründe haben. Nehmen wir mal an, dass die Entwicklungen sehr sauber waren, das System gründlich getestet wurde und wenig es kaum neue Anforderungen gibt, die umgesetzt werden, gibt. Unrealistisch? Wahrscheinlich! Aber das es in einem agilen Umfeld mit laufenden Erweiterungen an den Systemen zu Fehlern kommt, ist irgendwie nachvollziehbar. Da ist ja immer alles in Bewegung. 

Aber was sind die häufigsten Gründe für Fehlertickets abseits vom typischen Projektgeschäft? Mir fallen da spontan 2 Gründe ein. 

  1. Verständnisfragen. Gerade, wenn User Transaktionen selten aufrufen, kann es zu Fragen wie „Was muss ich hier eingeben? Warum bekomme ich da einen Fehler?“ . Das kann man meist mit guten Schulungsunterlagen in den Griff bekommen.
  2. seltene Datenkonstellationen. Da kommt auf einmal ein Kunde vom Typ X, aus dem Land Y und der VKORG Z daher. Und da funktioniert dann die Partnerfindung im Beleg plötzlich nicht. Der Grund kann sein, dass diese seltene Kombination beim Test nie abgefragt wurde. Solche Datenkonstellationen können entweder durch Benutzer eingegeben worden sein, aber auch durch Programme verursacht worden sein (zB durch eine Migration oder Schnittstelle)

Wie löst man nun diese Fälle von Datenproblemen?

Im ersten Schritt schaut man sich wohl den Beleg, die Stammdaten des Partners und dann vielleicht auch das Customizing an. Über die regulären Transaktionen im SAP System. Wann man dann gleich draufkommt, super! Fall gelöst.

Aber meistens kommt man da nicht weiter. Vor allem im Second und Third Level Support ist man eher im Programm Code und auf der Datenbank unterwegs um Fehler zu finden und auch um abzuprüfen, ob es auch mehrere ähnlich gelagerte Fälle gibt. Und genau da lässt einen das SAP System meist ordentlich im Stich.

Der übliche Weg führt einen dann in die SE16 (wer den Transaktionscode nicht kennt: da geht es zur Einzeltabellenansicht). Dort sucht man dann nach dem entsprechenden Datensatz und hantelt sich dann langsam von Tabelle zu Tabelle. Mit dem Umweg über das Notepad oder Excel, in dem man die Daten copy&paste zwischen lagert. Das ist mühsam und aufwendig. Aber noch schlimmer: ich muss beim nächsten Mal die gleichen Schritte nochmal machen. Und ganz ehrlich, bei SAP geht es um Daten. Daten, die in einer Datenbank abgelegt sind. Und seit Anbeginn (das sind auf R/2 bezogen 42 und auf R/3 gerechnet 30 Jahre) gibt es keine vernünftige Lösung, damit diese Daten schnell, flexibel und vA auch sicher durchforstet werden können.

Ein klassisches Beispiel sind wohl Inkonsistenzen bei Adressen. Wohl auch, weil die meisten SAP Berater und Kollegen den Teil der SAP Welt auch gut kennen. Geschäftspartner werden fast überall verwendet. Um Adressen zu Geschäftspartnern zu analysieren muss man zuerst vom BP Stamm (BUT000) über den Adresslink (BUT020) zu den Adressen (ADRC) springen.

Also Tabelle – Excel – Selektionsschirm – Tabelle – Excel – Selektionsschirm – Tabelle. Schon ist man am Ziel. Aber dann kommt man drauf, dass es um Personen geht und dort auch das Feld PERSNR mitspielt. Also wieder alles von vorne…

Und jetzt kommt das SQL Cockpit ins Spiel. Hier kann ich mir die Tabellen alle gleichzeitig anschauen und verknüpfen. Da sehe ich das Problem dann auch einen Blick. Und was noch besser ist, einmal ausgeführt, bleibt die Abfrage in meiner Historie bestehen und ich kann sie jederzeit wieder ausführen. Beim ersten Problem bin ich mit dem SQL Cockpit vielleicht nur geringfügig schneller als „von Hand“, aber beim zweiten Mal spar ich schon 90% der Zeit. Und wenn es dann doch öfters auftritt, dann speichere ich diese Abfragen zusätzlich ab und stelle sie sogar meinen Kollegen zur Verfügung.

Am nächsten Tag einfach das Statement von gestern genommen:

und irgendwann nach dem 3,4 Mal (ok, bei mir wahrscheinlich nach dem 20. Mal – ich bewundere die Kollegen die so strukturiert sind) wird das ganze abgespeichert damit es auch die Kollegen nutzen können:

Ich nutze das SQL Cockpit seit 10 Jahren bei meinen Kunden. Und es ist aus meiner täglichen Arbeit nicht mehr weg zu denken. Manche Kunden nutzen es noch nicht, da muss ich dann auch immer über die SE16 arbeiten 🙁

Zählt doch mal, wie oft ihr täglich die SE16 nutzt. Wenn ihr in eurem Unternehmen auf weniger als 10 Abfragen pro Tag kommt (wohlgemerkt im gesamten Unternehmen, nicht pro User!), dann ist das SQL Cockpit für euch wahrscheinlich nicht geeignet. Sobald ihr mehr Abfragen macht, dann wird es sehr nützlich sein!.

Ist SAPUI5® wirklich der große Wurf?

Ende der 90er, am Höhepunkt der ersten dot.com Blase, wurde SAP scharf ob ihrer nicht vorhandenen Webfähigkeiten kritisiert. Seitdem ist viel passiert und viele verschiedene Webtechnologien sind gekommen und auch wieder gegangen. Ich hatte immer das Gefühl, das SAP stets auf der Suche nach der richtigen Technologie, dem richtigen Vorgehen war.

 

Bei dieser Suche gab es für mich gab es drei Meilensteine. Der Internet Transaktion Server (ITS), der es ermöglicht hat jede beliebige SAP GUI Transaktion im Web darzustellen. Die Usability war natürlich grausam, aber noch heute ist es die schnellste und einfachste Methode bestehende Applikationen im Web verfügbar zu machen. Die meisten Kunden verwenden es zum Glück nur für selten genutzte Applikationen.

 

Business Server Pages (BSP). Entstanden als Freizeitprojekt einiger Walldorfer Entwickler, legte diese Technologie die Grundlage für den Web Application Server wie wir ihn heute kennen. Und viele andere SAP Webtechnologien rendern zu guter Letzt mittels BSP deren User Interface.

 

Für mich ist SAPUI5 jetzt der dritte große Meilenstein. Was bringt mich dazu, das zu glauben? Um das zu begründen sollten wir zuerst schauen, was SAP aus den vergangenen User Interfaces gelernt hat. Mit BSP war SAP am Puls der Zeit. Man hatte eine ähnliche Technolgie wie Microsoft mit ASP (Application Server Pages) und Java mit JSP (Java Server Pages). Bei den Technologien und Ansätzen, die sich daraus entwickelt haben, sind vor allem Webdynpro und WebUI zu nennen. Dies sind keine Webrendering Technologien, sondern Konzepte und Frameworks, die Entwicklern die Programmierung von strukturierten Anwendungen erleichtern sollten. Leider hat SAP damals immer mehr sein eigenes Süppchen begonnen zu kochen, sodass man sich von den großen Strömungen entfernt hat. Insbesondere im Bereich der Usability und der Nutzbarkeit in verschiedensten Browsern und auf unterschiedlichsten Endgeräten, wurde der Anschluss verpasst.

 

Dann kam HTML5 und damit nicht nur eine neue Webtechnologie (mit HTML wie man es aus den Neunzigern kennt, hat HTML5 herzlich wenig zu tun) sondern auch ein neues Designparadigma, wie man am Besten für unterschiedlichste Endgeräte entwickeln sollte.

 

Es hat wohl ein Umdenken innerhalb der SAP stattgefunden, denn jetzt hat SAP plötzlich bekommen, alles richtig zu machen. Anstelle der Entwicklung einer ähnlichen Technologie setzt SAP nun genau auf HTML5 auf. Somit profitiert SAP sofort von allen Weiterentwicklungen des weltweiten Standards HTML5. Und SAPUI5 ist ja keine eigenständige Technologie, sondern eine zusätzliche API, die die Darstellung von Geschäftsprozessen und Daten im Web vereinfachen und verbessern soll.  Davon hat SAP sogar eine Open Source Version (OpenUI5) veröffentlicht.

 

Die richtige UI Strategie zu haben reicht aber nicht aus um festzustellen, ob diese sich auch durchsetzen wird. Denn oft waren die besten Produkte nicht die, die sich dann am Ende durchgesetzt haben. Was lässt mich also glauben, das SAPUI5 sich jetzt hier durchsetzen wird?

 

Es sind die vielen neuen Produkte, der SAP, die jetzt bereits auf diese Technologie setzen. SAP Fiori verwendet UI5 als Technologie um Prozesse aus den bestehenden Systemen einfach und übersichtlich web fähig zu machen. Es gibt schon über 400 verschiedene Apps der SAP und es ist kein Ende in Sicht.

 

SAP Cloud Systeme. Egal ob es die HANA Cloud Platform ist, auf welcher Entwickler mit SAPUI5 neue Applikationen bauen können, auch viele Cloud Standardlösungen der SAP (zB Cloud for Customer) setzen bereits auf der UI5 Technologie auf.

 

Das sind schon viele Zeichen, die die Wichtigkeit dieser UI Strategie erahnen lassen. Aber das größte Argument kommt noch. S4 HANA, DIE Zukunft der SAP, das System, das das erfolgreichste und am weitesten verbreitete Produkt der SAP Familie ablösen soll, das in die Fußstapfen von R/3 (Entschuldigung: SAP ERP) treten soll. Dieses Produkt setzt komplett auf SAPUI5 als Oberflächentechnologie.

 

Und damit ist für mich klar. Das ist keine weitere zusätzliche Oberfläche, die in bestimmten Szenarien und einigen Lösungen zum Einsatz kommt, sondern das wird alle anderen Oberflächen ablösen oder zu Nischenanwendungen degradieren. Und das finde ich gut. Es ist eine großartige Technologie, sie ist wunderbar mit Non-SAP Technologien kombinierbar. Egal ob es einmal sehr fancy sein soll, oder bestimmte Technologien in SAP Prozesse integriert werden können (zum Beispiel Image Recognition), als Entwickler kann man aus einem unendlichen Pool an Lösungen auswählen.

 

 

 

 

 

SAP® Overview Page – Example – List Card

Introduction

An overview page is a new type of SAP Fiori App since SAPUI5 1.32 which provides a quick overview of user important data at one screen.

SAP Overview Pages display the data in the form of Cards.

A card is a smart component that uses UI annotation and a single entity set from an OData service to display the data. As of today (SAPUI5 1.32) there are four card types available (List, Table, Stack, Analytic) and in this blog post I will give a description how to set up a List Card.

 

List Cards

There are two types of List Cards – Condensed and Extended.

  • Condensed List Cards – display up to 3 data items in one row.
  • Extended List Cards – display up to 6 data items in one row.

Each type can use two types of flavor – Standard and Bar.

  • Standard Flavor – design without bar = items are numbers and texts
  • Bar Flavor – design with bar = items are combination of numbers, texts + one bar

That means there are four possibilities how to display the List Cards. Take a look at following picture for better understanding of the List Cards concept.

Condensed List Card with Standard Flavor – Top 5 Invoices

Condensed List Card with Bar Flavor – Last Items In Storage

Extended List Card with Standard Flavor – Top 5 Long Working Employees

Extended List Card with Bar Flavor – Top 5 Reordered Products

overviewPage16

 

Prerequisities

I assume you already have an access to  (and are already a little bit familiar with) SAP WEB IDE on SAP HANA Cloud Platform Cockpit (HCP). If not, first of all I would refer you to this tutorial.

As a data source I am going to use Northwind OData service which is available for public and provides some simple data. To use this service we need to set it up in HCP Destinations.

Name: Northwind
Type: HTTP
Description: Northwind OData Service
URL: http://services.odata.org
Proxy Type: Internet
Authentication: NoAuthentication
Additional Properties
WebIDEEnabled true
WebIDESystem Northwind_Data
WebIDEUsage odata_gen

SAP WEB IDE Part

Thanks to SAP WEB IDE wizards the creation of Overview Page project is pretty straightforward. We need to create a new project from Overview Page Application Template, write name of our project, select data source – Service URL – Northwind OData Service (since our destination already contains the services.odata.org domain, we can type „V3/Northwind/Northwind.svc/“ only as the URL Part).

After project creation we can add some cards to our Overview Page. There is also a wizard for this in SAP WEB IDE – simply right click on your created project and find New -> Card. There are some customization settings in the third step – all of them are later editable from Manifest.json file.

The only tricky part about Overview Page is the creation of annotation files and Manifest. json settings (Card customization settings).

The Overview Page project in SAP WEB IDE is executed as SAP Fiori Component on Sandbox.

Condensed List Card with Standard Flavor

overviewPage19

Annotation File for Top 5 Invoices Example

  • Attribute Namespace in tag Schema must match Datasource Alias we enter during Overview Page creation
  • Attribute Target in tag Annotations must match EntityType of EntitySet we are going to use – check metadata.xml
  • Attribute Qualifier is used in Card customization settings – Manifest.json
  • We use 3 tags Record to display 3 items in one row
  • Each Record has attribute path to determine which value from Odata service are we going to display

Download XML File

Card customization settings – Manifest.json

  • last part of „annotationPath“ must match the attribute Qualifier from annotation file
  • „entitySet“ must match OData entity – check metadata.xml

Download JSON File

The other types of list cards can be created in simmilar way.

Condensed List Card with Bar Flavor

overviewPage20

Downolad Annotation File Example

Download Manifest.json Settings

Extended List Card with Standard Flavor

overviewPage18

Downolad Annotation File Example

Download Manifest.json Settings

Extended List Card with Bar Flavor

overviewPage21

Downolad Annotation File Example

Download Manifest.json Settings

 

Useful links

My Overview Page – Git Hub Project

SAP WEB IDE Tutorial

SAP Overview Page Official page

SAP Overview Page Official Video

help.sap.com about Cards

SAPUI5 Docu about Cards

 

 

SAP® CodeJam SAPUI5® hosted von Cadaxo

Am 5. November 2015 veranstalte die Firma Cadaxo gemeinsam mit der SAP die erste SAPUI5 CodeJam in Wien. Zweck dieser CodeJam war es Entwickler zusammenzubringen, um gemeinsam die neue SAP Technologie SAPUI5 kennenzulernen, gemeinsam auszuprobieren, praxisnah zu entwickeln und dabei Spaß haben.

Die SAP Expertin Denise Nepraunig führte diese Veranstaltung und stand den Teilnehmern mit Rat und Tat zur Seite. Nach einer kleinen Einführung in die Materie, dem Kennenlernen des WebIDE, der Entwicklungsumgebung für SAPUI5 Apps, ging es gleich ran an die Tasten.
Sowohl Erfahrene SAPUI5 Entwickler, als auch Beginner befassten sich intensiv mit dem Thema und konnten am Ende des Tages beachtliche, eigens-programmierte SAPUI5 Apps vorweisen.

IMG_0172 IMG_0173

 

Trotz der anstrengenden Arbeit, kam der Spaß nicht zu kurz:

IMG_0189 IMG_0117IMG_0151

Dieses hervorragende Mittagessen haben wir uns redlich verdient:

IMG_0250 IMG_0236 IMG_0248

Nach getaner Arbeit haben wir den Abend bei dem einen oder anderen Glas Bier und Wein, gemütlich ausklingen lassen…

IMG_0264

Wem die Fotos nicht genügen, hier noch ein kurzes Video über die SAPUI5 CodeJam: SAP CodeJam SAPUI5 Wien

Nach so viel positives Feedback, können wir beruhigt sagen, dass es ein gelungenes Event war, bei dem für jeden was dabei war. Ich freue mich schon auf die nächste SAP CodeJam in Wien.

Ich möchte mich auch bei allen Teilnehmern bedanken und natürlich aus bei Denise! CodeJam rocks!

 

Einbinden von sap.m.page als Content in sap.m.IconTabBar funktioniert nicht

In das Control sap.m.IconTabBar können über die Aggregation content bzw. über die entsprechenden Content-Methoden SAPUI5 Controls eingebunden werden. Zumindest bis zum SAPUI5 Release 1.24 funktioniert das Einbinden von Objekten vom Typ sap.m.Page nicht korrekt, sondern liefert teilweise fehlerhafte Ergebnisse.

Stattdessen sollte ein SAPUI5 Layout-Control (Flex Box, … ) oder eine „echtes“ UI Control verwendet werden.

Hier ein Javascript Beispiel in dem eine Tabelle im eingebundenen View zurückgeliefert wird:

addviewtoicontab1

SubView: „zui5_demo_acc.ListOpportunitites“

addviewtoicontab2