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!

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.

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.

Webinar – SAP® Gateway

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Unterlagen/Links zum Webinar „SAP Gateway“

Webinar Video

 

Nützliche Links

Beispiele und andere Themen

Büchertipps

Unsere vergangenen Webinare

 

SAP® Entwickler 2.0

Lange Zeit hat sich die Welt eines ABAP Entwicklers nicht wesentlich geändert. Da wurde mal ein Report erstellt, dort ein Funktionsbaustein. Manchmal wurde ein Userexit implementiert und selten auch einmal eine ganze Dynpro Transaktion. Ja es war sogar lange Zeit möglich die objektorientierte Welt mit geringem Aufwand zu umschiffen.

Die Zeiten sind nun definitiv vorbei!

Gerade in den letzten Jahren hat die Programmiersprache ABAP eine enorme Weiterentwicklung erlebt. Insbesondere mit ABAP 7.40 und ABAP 7.50 wurden eine ganze Reihe moderner Konzepte aus anderen Programmiersprachen in ABAP übernommen. Ergänzend dazu stehen neue Tools, Frameworks und Entwicklungsumgebungen einem SAP Entwickler zur Verfügung.

S/4 HANA Programmiermodell

Bei der SAP TechEd 2016 in Las Vegas wurde erstmals vom neuen S/4 HANA Programmiermodell gesprochen. Das Programmiermodell besteht aus mehren Schichten und vereint die gängigen Technologien eines SAP Entwicklers:

Modernes ABAP

Wie weiter oben erwähnt, wurde und wird ABAP durch die SAP kontinuierlich weiterentwickelt. Es gibt eine große Anzahl von Büchern, Kursen, Blogeinträgen, … die sich mit modernen ABAP Themen beschäftigen, deshalb erspare ich mir hier eine exakte Aufzählung. Nachfolgend eine Auflistung von Themen die für mich unter modernes ABAP fallen und jeder Entwickler im SAP kennen sollte:

  • Objektorientiertes Design
  • Open SQL Expressions
  • String Expressions
  • Table Expressions
  • Regular Expressions
  • Class Based Exceptions
  • Enhancement Framework
  • CDS Views
  • ABAP Shared Objects
  • ABAP Push Channels, ABAP Message Channels

Unabhängig von ABAP selber sollte sich ein Entwickler zumindest noch mit folgenden Themen beschäftigen:

  • Clean Code
  • Unit Tests & TDD
  • Design Patterns

Weiterführende Informationen

Title Bereich Details
ABAP 7.50 Releasenotes Cadaxo Webinar http://www.cadaxo.com/high-class-development/webinar-abap-7-50-releaseabhaengige-aenderungen/
Clean Code in ABAP Cadaxo Webinar http://www.cadaxo.com/high-class-development/webinar-clean-code-abap/
Boost Your ABAP Cadaxo Webinar http://www.cadaxo.com/high-class-development/webinar-boost-abap/
SDN Community ABAP SDN http://www.sap.com/community/topic/abap.html
SAP Press SAP Press Bücher https://www.sap-press.com/programming

ABAP Development Tools (ADT) & SAP Web IDE

ADT (=ABAP for Eclipse) ist SAP’s state-of-the-art IDE für ABAP. Obwohl das ADT nicht wirklich neu ist, entwickelt die überwiegende Mehrheit der ABAP Entwickler nach wie vor ausschließlich in der SE80.

Und das, obwohl Entwicklungen mit ADT meist einfacher und schneller umgesetzt werden können. ADT bietet in der Handhabung generell viele Vorteile, aber ein wichtiges Featureset sind die Refactoring Funktionen, welche gerade im Bereich der agilen Software Entwicklung wesentlicher Bestandteil sind.

Einzelne Entwicklungsobjekte wie z.B. die CDS Views können bisher ausschließlich mit ADT bearbeitet werden. Andere Objekte wie z.B. BOPF Objekte bieten in ADT wesentlich intuitivere Modellierungsmöglichkeiten.

Ein professioneller ABAP Entwickler sollte sowohl in der ABAP Workbench (SE80) als auch im ADT zu Hause sein, um je nach Aufgabenstellung das passende Entwicklungstool zu wählen.

Für die Erstellung von SAPUI5 bzw. Fiori Anwendungen hat SAP ergänzend zu den ABAP Development Tools die cloudbasierte SAP Web IDE zur Verfügung gestellt.

Weiterführende Informationen

Title Bereich Details
Webinar – ABAP Entwicklung in Eclipse & SAP Web IDE Einführung Cadaxo Webinar http://www.cadaxo.com/uncategorized/webinar-abap-entwicklung-eclipse-sap-web-ide-einfuehrung/
ABAP Development User Guide help.sap.com http://help.sap.com/saphelp_nw75/helpdata/en/4e/c0ca886e391014adc9fffe4e204223/frameset.htm
ABAP Development Tools Eclipse help.sap.com http://help.sap.com/saphelp_nw74/helpdata/en/a3/314a7fd9384ce8a40eff2d3b144628/frameset.htm
ABAP Development Tools Tutorials SDN Blog https://blogs.sap.com/2012/09/18/abap-development-tools-tutorials-learn-how-to-use-abap-in-eclipse/
Get Started with the ABAP Development Tools SDN Blog https://blogs.sap.com/2012/06/19/get-started-with-the-abap-development-tools-for-sap-netweaver/
What is SAP Web IDE developer.sap.com http://www.sap.com/developer/topics/sap-webide.html
ABAP to the Future SAP Press Book ISBN 978-1-4932-1411-2
ABAP-Entwicklung in Eclipse SAP Press Book ISBN 978-3-8362-3040-7

ABAP Units & Test Driven Development

Als Entwickler ist es uns natürlich ein Anliegen, fehlerfreie Software zu erstellen. Traditionell geschehen Unit Tests in SAP oft mit eigens erstellten Testprogrammen oder einer Testausführung von Klassen/Methoden bzw. Funktionsbausteinen. Also völlig unstrukturiert, undokumentiert und schwer reproduzierbar.

Mit den ABAP Units steht jedoch auch im ABAP ein Test-Framework zur automatisierten Ausführung und Analyse von Unit Tests zur Verfügung.

Der Einsatz von ABAP Unit Tests reduziert die Hemmschwelle eines Entwicklers produktives Coding zu optimieren. Eine Testausführung würde ihm sofort direktes Feedback geben ob trotz der Optimierung das Coding weiterhin einwandfrei funktioniert.

ABAP Units verfügen über eine enge Integration in andere Tools wie z.B. dem Code Inspector bzw. ATC.

Die Steigerungsform von Unit Tests wäre Test Driven Development. Vom Ansatz her ist TDD genial, in der ABAP Community wird darüber kontrovers diskutiert.

Weiterführende Informationen

Title Bereich Details
TDD mit ABAP Units Cadaxo Webinar http://www.cadaxo.com/high-class-development/webinar-tdd-mit-abap-units/
ABAP Unit help.sap.com http://help.sap.com/abapdocu_750/de/index.htm?file=ABENabap_unit.htm

Business Object Processing Framework (SAP BOPF)

Aktuell (noch) relativ unbekannt ist das sogenannte SAP Business Object Processing Framework. SAP BOPF ist ein auf ABAP basierendes Framework zum Modellieren und Entwickeln von Geschäftsobjekten. Bisher gab es in SAP Systemen (Ausnahme SAP CRM mit BOL/GENIL) nichts Ähnliches, alles musste „zu Fuß“ ausprogrammiert werden.

SAP BOPF nimmt einem Entwickler zeitraubende und meist auch langweilige Implementierungsaufgaben ab und ermöglicht einem Entwickler sich auf die wesentlichen Businessanforderungen zu konzentrieren.

Die größten Vorteile von SAP BOPF wären:

  • Klare Trennung von UI und Business Logik
  • Ermöglicht verteilte Entwicklung durch mehrere Entwickler
  • Beschleunigt den Entwicklungsprozess enorm
  • Bereits viele Verwender (Gateway, FPM, BRFplus, … ) vorhanden
  • Einfache Integration in Eigentwicklungen

Weiterführende Informationen

Title Bereich Details
SAP BOPF Cadaxo Webinar http://www.cadaxo.com/high-class-development/webinar-sap-bopf/
BOPF Modelling in ADT SDN Blog https://blogs.sap.com/2014/05/09/bopf-modelling-in-eclipse
ABAP to the Future SAP Press Book ISBN 978-1-4932-1411-2

Fiori/SAPUI5 & Floorplan Manager/Web Dynpro for ABAP

User Interfaces haben bei der SAP historisch einen schlechten Ruf. Lange Zeit mussten sich Anwender mit veralteten SAP Gui Anwendungen abmühen. Längst bietet SAP alternative Technologien für die Realisierung moderner User Interfaces.

SAPUI5 basiert technisch auf etablierten Webstandards (Javascript, HTML5, …) und liefert die technische Grundlage für moderne Fiori Anwendungen. SAPUI5 / Fiori ist DIE UI Strategie der SAP, sprich zukünftige Oberflächen in den SAP Systemen (OnPremise oder Cloud) werden – Stand Jänner 2017 – in Form von SAPUI5 / Fiori realisiert.

Web Dynpro for ABAP (WDA) ist (zumindest war) bereits seit vielen Jahren quasi der Standard für die Erstellung von transaktionalen Anwendungen in einem SAP System. Um die Realisierung von Web Dynpro Anwendungen zu beschleunigen und zu standardisieren wurde der darauf aufbauende Floorplan Manager (FPM) entwickelt. Web Dynpro for ABAP bzw. der Floorplan Manager richten sich eher an Power User, an interne Mitarbeiter eines Unternehmens.

Ein professioneller ABAP Entwickler sollte in jedem Fall beide Technologien kennen und einsetzen können.

Weiterführende Informationen

Title Bereich Details
What is SAPUI5 developer.sap.com http://www.sap.com/developer/topics/ui5.html
User Interface Developer developer.sap.com http://www.sap.com/developer/topics/ui-development.html
Web Dynpro ABAP and Floorplan Manager Community developer.sap.com http://www.sap.com/community/topic/web-dynpro-abap-and-floorplan-manager.html
ABAP to the Future SAP Press Book ISBN 978-1-4932-1411-2
SAPUI5 Das umfassende Handbuch SAP Press Book ISBN 978-3-8362-4456-5

SAP Gateway (OData)

Im Jahr 2011 hat SAP SAP Gateway auf den Markt gebracht. SAP Gateway öffnet ABAP Systeme um eine standardisierte und zentralisierte Schnittstelle mit der Außenwelt.

Technisch setzt SAP Gateway auf verbreitete Standards wie REST, Atom und OData wodurch die Kommunikation mit anderen Systemen die ebenfalls diese Standards nutzen denkbar einfach realisiert werden kann. SAPUI5 bzw. Fiori Anwendungen nutzen ebenfalls SAP Gateway für die Kommunikation mit den Backendsystemen.

Weiterführende Informationen

Title Bereich Details
SAP Gateway Community developer.sap.com http://www.sap.com/community/topic/gateway.html
SAP Gateway Developer Guide help.sap.com https://help.sap.com/saphelp_gateway20sp10/helpdata/en/56/d0cc05b564411e841141f68294e29f/content.htm
SAP Gateway und OData SAP Press Book ISBN 978-3-8362-4019-2

CDS Views

Die CDS Views zählen für mich zu den innovativsten ABAP Neuheiten der letzten Jahre. Durch die regelmäßigen Funktionserweiterungen handelt es sich hier nicht mehr nur um eine neue Form von Datenbank Views.

Durch Annotations können CDS Views um weitere technische und semantische Eigenschaften ergänzt werden. So können beispielsweise seit ABAP 7.50 Gateway oder BOPF Objekte generiert werden.

Ebenfalls ab 7.50 können implizite Berechtigungsprüfungen mit der sogenannten Data Control Language (DCL) abgebildet werden.

Weiterführende Informationen

Title Bereich Details
CDS Views help.sap.com http://help.sap.com/abapdocu_750/en/abencds.htm
CDS Annotations 7.50 help.sap.com http://help.sap.com/abapdocu_750/en/abencds_f1_view_entity_annotations.htm
CDS Annotations 7.51 help.sap.com http://help.sap.com/abapdocu_751/en/index.htm?file=abencds_annotations_abap.htm
CDS Views SDN Blog https://blogs.sap.com/2015/07/20/cds-one-model-two-flavors
ABAP to the Future SAP Press Book ISBN 978-1-4932-1411-2

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.

 

 

 

 

 

ABAP® – Das gibt’s ja nicht!

Ich wollte schon länger einmal über ein paar seltsame Dinge in ABAP schreiben. Es gibt nämlich ein paar Sachen in ABAP bei denen man sich einfach nur wundert. Na dann, fangen wir mal an:

BSEG, MARA oder DMBTR

Wer kennt sie nicht, die berühmten SAP ECC Tabellen BSEG oder MARA. Auch die Felder DMBTR oder GSBER sind sicher jedem bekannt.

Aber warum gibt es eigentlich solche komischen Kürzel, haben die Entwickler hier einfach ein paar Buchstabenwürfel verwendet? Natürlich nicht, das sind ganz einfach Relikte
aus R/2. Übrigens, DMBTR steht für „Deutsche Mark Betrag“!dmbtr

In R/2 waren nur 4stellige Tabellennamen und 5stellige Feldnamen erlaubt. SAP hat zwar damals mit R/3 eine völlig neue Technologie geliefert, aber viele ABAP Codes, Tabellen und Prozesse wurden einfach 1:1 übernommen. Und bis dato hat sich bei SAP offensichtlich niemand getraut hier einzugreifen.

Das älteste Programm das ich in einem aktuellen ECC gefunden habe, weißt Kommentare aus dem Jahr 1989 auf!

Bin schon jetzt gespannt, ob wir die Tabellen in S/4 HANA wiederfinden.

 

FOR ALL ENTRIES

Manche ABAP Entwickler schwören auf den FOR ALL ENTRIES Zusatz, manche verteufeln ihn. Ich bin da gespalten denn eigentlich mag ich das Zeug überhaupt nicht, aber andererseits komme auch ich manchmal nicht darum herum.

Aber was ich wirklich – sagen wir mal bescheiden – finde ist, wie ein SELECT mit FOR ALL ENTRIES reagiert, wenn die FOR ALL ENTRIES-Tabelle leer ist. Es werden einfach alle sonstigen Selektionsbedingungen komplett ignoriert und ein kompletter Tablescan durchgeführt. Ohne ersichtlichen Grund.

Hier ein Auszug aus der SAP Online Original Dokumentation:

Before using an internal table itab after FOR ALL ENTRIES, always check that the internal table is not initial. In an initial internal tables, all rows are read from the database regardless of any further conditions specified after WHERE. This is not usually the required behavior.

Nicht zu vergessen ist, dass FOR ALL ENTRIES auf unterschiedlichen Datenbanken teilweise ganz unterschiedlich performant ist. Es gäbe noch viele weitere Argumente (Bufferung, .. ) FOR ALL ENTRIES nicht zu verwenden, aber belassen wir es erst einmal dabei.

Man merke sich jedenfalls: Immer die Größe der FOR ALL ENTRIES Tabelle vor dem SELECT überprüfen – oder noch besser, über Alternativen wie JOINs oder Subselects nachdenken.

 

POOL/Cluster Tabellen

Oh, wie ich diese POOL und CLUSTER Tabellen liebe. Von der Technologie her betrachtet meiner Meinung nach einfach ein ziemlicher Schwachsinn. – Aber auch für diese Technologie gibt es einen triftigen Grund: Wie oben erwähnt waren in R/2 Tabellen nur max. 4stellig. Irgendwann ist SAP dann mit der 4stellen Limitierung einfach an Grenzen gestoßen und hat daher versucht hinter einer Tabelle mehrere Tabellen abzubilden. Das war die Geburt der POOL/CLUSTER Tabellen!

Aber es gibt Hilfe! Wenn wir dann einmal alle auf SAP Hana umstellen bekommen die POOL/CLUSTER Tabellen nach so vielen Jahren endlich ihren verdienten Ruhestand.

Es wäre aber nicht SAP wenn sie für den Vorgang nicht auch einen Namen gefunden hätte: „Depooling/Declustering“.

 

ABAP Open SQL und SQL92

SAP hat mit den aktuellen NetWeaver Releases 7.40 SP5, SP8 und SP12 bzw. NetWeaver 7.50 ein paar wichtige Erweiterungen in das ABAP Open SQL aufgenommen und nähert sich so nach und nach dem Standard SQL92. Manche ABAP Entwickler sind deswegen (SQL Expressions, CDS Views, … ) in heller „Juhu!“ Aufregung!

Liebe Entwickler, bitte vergesst nicht – das 92 hinter SQL Steht für das Jahr! Im Jahr 1992 wurde der Standard definiert. Diese jetzt aufgenommenen Erweiterungen werden von allen namhaften Datenbanken bereits seit Jahrzehnten unterstützt.

Ich meine, eine Erweiterung von ABAP Open SQL war seit Jahren längst überfällig!

 

TCURX

In der TCURX ist gecustomized, wie die Dezimalstelle von Währungen in einem SAP zu interpretieren sind. Wieso das?

Geboren wurde die Tabelle noch im R/2, als auch noch Währungen wie die italienische Lira existiert haben. Die Lira waren teilweise so „groß“ dass die Betragsfelder im R/2 nicht mehr ausgereicht hätten. Also hat man kurzerhand die Kommastellen laut Datenbank außer Kraft gesetzt und dafür die Tabelle TCURX erschaffen. Erst wenn eine Währung nicht in der TCURX enthalten ist, gelten für die Währung die 2 Nachkommastellen.

Im Bereich von Schnittstellen ist das immer wieder ein extra Aufwand – nur um die Betragfelder hin und her zu konvertieren. Beispielswiese für YEN.

Ob man hier nicht irgendwann einmal eine besser Lösung hätte finden können?

 

Jetzt also doch, CODE PUSH DOWN

Jahrelang hat SAP ihren Kunden und uns Entwickler gesagt, DB Nahe Operationen (EXEC SQL, DB Hints, … ) nur in begründeten Fällen und mit Vorsicht zu verwenden. Man verliere so die Unabhängigkeit zur Datenbank oder hat natürlich einen Adaptierungsaufwand wenn gleiches Coding mit verschiedenen Backend-Datenbanken laufen soll.

Nun, da SAP jetzt mit SAP Hana ja eine eigene tolle Datenbank hat, sieht die Sache natürlich etwas anders aus. Jetzt empfiehlt SAP sogar direkter auf der Datenbank „operieren“ um deren Vorteile auch wirklich nutzen zu können. Das Modewort dafür ist „Code Push Down“. Aus ABAP Sicht werden darunter die CDS Views, die AMDB Prozeduren und die SQL Expressions verstanden. Auf der SAP Hana ist darunter z.B. SQL Script zu verstehen.

Nicht falsch verstehen, ich bin ein großer Fan von SAP Hana. Die ist einfach – sorry für den Ausdruck – Sauschnell!

Ich find es halt einfach nur interessant.

 

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

Einbinden einer eigenen CSS Styleklasse in SAPUI5® Controls

Die visuelle Darstellung eines SAP UI5 Controls kann mit mehreren Möglichkeiten angepasst werden. Eine Möglichkeit besteht darin, eine eigene CSS Style Klasse zu definieren und an das SAP UI5 Control anzuhängen.

Erweiterung der SAP UI5 INDEX Datei

In der index.html Datei wird die neue Style Klasse hinzugefügt:

democssclass1

Anpassung im SAP UI5 View

Im SAPUI5 View kann die neue CSS Style Klasse nun mit der Methode addStyleClass an ein SAPUI5 Control angehängt werden:

democssclass2

Darstellung des SAP UI5 Controls

Wie erwartet sieht dann das gewünschte Ergebnis (weißer Text, kursiv auf schwarzem Hintergrund) wie folgt aus:

democssclass3