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:

ABAP 756_757

ABAP Webinar – ABAP 7.56/7.57 Releaseabhängige Änderungen

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Vielen Dank an alle Teilnehmer unseres Webinars zum Thema ABAP 7.56/7.57 Releaseabhängige Änderungen.

Unterlagen/Links zum Webinar

Links

Twitteraccounts

ABAPConf 2023

Findet heuer am 7. Dezember von 09:00 – 18:00 Uhr statt. Registrieren, um keine Updates zu verpassen:

Unser nächstes Webinar

  • 29. September 10:00 – 11:00 Uhr. Einladung folgt noch rechtzeitig
Webinar - ABAP RAP in Action

Webinar – ABAP® RAP in Action

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Vielen Dank an alle Teilnehmer unseres Webinars zum Thema ABAP RAP in Action. Bei dem Webinar ging es um Aktionen bzw. Funktionen und wie man diese in RAP implementiert.

Unterlagen/Links zum Webinar „ABAP® RAP in Action“

Links

Twitteraccounts

Unser nächstes Webinar

Steht noch nicht fest, wird aber natürlich noch rechtzeitig bekannt gegeben.

ABAP CDS

Webinar – ABAP® CDS

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Vielen Dank an alle Teilnehmer unseres Webinars zum Thema ABAP CDS. Ohne ABAP CDS geht in Zukunft in der ABAP Entwicklung nichts mehr. Dass diese aber gar nicht so kompliziert sind, haben wir in diesem Webinar gezeigt.

Unterlagen/Links zum Webinar „ABAP® CDS“

Twitteraccounts

Unser nächstes Webinar

Das Thema und der Termin stehen noch nicht fest werden wir aber Zeitnah bekannt geben. Unser Fokus liegt nun ganz auf die ABAPConf 2022 die am 7. Dezember über die Bühne gehen wird.

https://www.abapconf.org

Wer nochmals die vielen Vorträge vom letzten Jahr sehen will, findet die Aufzeichnungen ebenfalls auf der ABAPConf Homepage.

Status & Farben in CDS basierten Fiori Elements Anwendungen

Status & Farben in CDS basierten Fiori® Elements Anwendungen

In Fiori Elements Anwendungen können Statusicons/Statusfarben durch Annotations gesetzt werden. Natürlich auch im CDS View. Dadurch können positive, negative oder neutrale Informationen besonders hervorgehoben werden. Im nachfolgenden Beispiel wird eine textuelle Statusinformation sowohl durch die entsprechende Farbe als auch das passende Symbol hervorgehoben.

 

Umsetzung mit CDS View Annotations

Die Statusinformation muss in einem eigenen CDS Feld vorhanden sein und kann folgende Werte enthalten:

  • 0 Grau
  • 1 Rot
  • 2 Gelb/Orange
  • 3 Grün

Beispielsweise könnte ein Feld StatusColor im CDS View (meist der Interface View) wie folgt gesetzt werden:

Hier wird einfach anhand des Statustextes im Feld _status.Description ein neues Feld StatusColor mit dem entsprechenden Wert gesetzt.

Im Consumption View bzw. In der Metadata Extension ist die Verwendung dann denkbar einfach und durch die UI.lineItem Annotation criticality definierbar:

Durch die zusätzliche Annotation criticalityRepresentation: #WITHOUT_ICON kann die Ausgabe des Icons unterdrückt werden:

Das Ergebnis sieht dann wie folgt aus:

Eine ähnliche Vorgehensweis ist bei vielen anderen Fiori Elements Annotations möglich und z.B. gut über die Codecompletion auffindbar. Beispielsweise bei den Facets oder Feldgruppen.

Ich habe die Farben z.B. in einer Anwendung zur Darstellung von Datenbank Differenzen eingesetzt. Dadurch konnten kritische Abweichungen besonders gekennzeichnet werden.

Rückblick 2019: Webinare, CodeRetreats und CodeJams

Wir waren 2019 wieder ziemlich aktiv. Wir haben mehrere Webinare gehalten, eine ABAP CodeRetreat gehalten und 2 SAP CodeJams mitorganisiert. Nachfolgend ein kurzer Überblick.

 

Cadaxo ABAP Webinare

Auch 2019 haben wir unsere gewohnten ABAP Webinare gehalten. Wie immer mit kleineren technischen Problemen aber das macht die Sache ja erst spannend.

Begonnen haben wir im Jänner mit den wichtigsten Releaseinformationen zu ABAP 7.51. Im März ging es dann mit dem sehr umfangreiche Thema Modern ABAP weiter und mit den Entwurfsmuster folgte dann im Mai ein eher trockenes Thema. Nach der Sommerpause folgte nach 2016 erneut ein Webinar zum Thema ADT.

Hier nochmals die Links zu allen Unterlagen, Videos, …

Selbstverständlich machen wir auch 2020 weiter. Erstes Thema: AMDP am 31. Jänner.

 

ABAP CodeRetreat 26. Oktober

Trotz des Umstandes, dass in Österreich am 26. Oktober der Staatsfeiertag stattfindet, fanden sich 15 interessierte Entwickler an diesem Samstag in Wien zusammen um gemeinsam mehr über ABAP, über moderne ABAP Entwicklung zu erlernen. Gemeinsam mit der SCC EDV-Beratung AG haben wir die Veranstaltung organisiert.

Als Retreat bezeichnet man eine spirituelle Ruhepause bzw. Rückzug von der gewohnten Umgebung. Und genau darum geht es bei einer ABAP CodeRetreat: Herauszukommen aus unserer ABAP Komfortzone.

Eine ABAP CodeRetreat kann jeder ausrichten. Alles was man dazu wissen muss, findet man unter https://wiki.scn.sap.com/wiki/display/events/ABAP+CodeRetreat

SAP CodeJams 24. Juni und 23. November

Dieses Jahr haben wir 2 SAP CodeJams organisiert. Am 24. Juni fand eine CodeJam zum Thema „Custom Code Migration to S/4 HANA“ statt. Ingo Bräuninger hat uns wie gewohnt mit hohem Expertenwissen viel Engagement beeindruckt. Es war erneut eine gemeinsame Veranstaltung mit der SCC.

Eine für uns ungewohnte CodeJam fand am 23. November statt. Ein Tag komplett ohne ABAP bzw. SAP Gui. An dem Tag stand das SAP Cloud Programming Model (CAP) am Programm. Mit Marius Obert hat uns SAP einen ausgewiesenen Experten zu dem Thema nach Wien geschickt. Dies war eine Co-Produktion von SCC, Ecosio und Cadaxo.

 

Cadaxo SQL Cockpit 3.3 – Releaseinfos

In der Cadaxo SQL Cockpits Version 3.3 haben wir neben kleinern Korrekturen und Anpassungen auch einiges an Kundenwünschen eingebaut.

Typisierte Symbole und Multi Value Symbole

Ein Symbol kann ab jetzt nicht nur einen einzeln Wert enthalten!

Multivalue-Symbole speichern mehrere Werten von gleichen Type, die in der WHERE Klausel – derzeit- nur hinter IN vorkommen dürfen.

Beispiel der Verwendung:

Der Cockpit SELECT

wird als folgender openSQL SELECT ausgeführt:

Konvertierungsexits für Symbolwerte

Für einwertige Symbole kann jetzt ein Datenelement definiert werden. Wenn möglich, wird der eingegebene Wert mittels Konvertierungsexit in den internen Wert geändert. Dies ist für vollständige Literale und Werte möglich.

Die 3 Partner-Symbole haben über das Datenelement BU_PARTNER (bzw. dessen Domäne BU_PARTNER) eine Länge von 10 Zeichen und die Konvertierungsroutine ALPHA zugewiesen. Bevor der SELECT ausgeführt wird, werden die Symbolwerte entsprechend angepasst:

  • ‚112‘ => ‚0000000112‘
  • 113 => 0000000113
  • 1234567890123 => 1234567890

Filtern nach Benutzern in der Rollenpfelge

Die Benutzer in der Cockpit Rollen Pflege (Admin-Funktion) können jetzt über die Benutzer-ID und den Benutzernamen gefiltert werden:

Filtern nach Benutzer

Filter aufrufen

Suche nach ID

Filtern nach Benutzer-ID

Gefilterte Liste und Zurücksetzten des Filters

Gefilterte Liste und zurücksetzten des Filters

Cockpit-Rollen für Referenzuser

Auch Referenzbenutzer können jetzt Cockpit-Rollen zugewiesen werden. Die Rollen sind auch für alle Benutzer gültig, die auf dem Referenzbenutzer basieren.

Benutzer mit Referenzbenutzer

Listvergleich

Eine Checkbox in der Legende des Tabellenvergleichs gibt Aufschluss darüber, ob es sich um eine gespeicherte List handelt.

Mapping im Tabellenvergleich

Mapping im Tabellenvergleich

Saved List Kennzeichnung im Vergleich

Saved List Kennzeichnung im Vergleich

Editorbereich teilen

Das SQL Cockpit wurde in diesem Release für eine API vorbereitet, um Daten (SQL SELECTS, Listen, Symbolwerte,…) aus verschiedenen Quellen in das Cockpit schicken zu können.

Vorerst wird darauf aber nur innerhalb des Cockpits zugegriffen: „Editor teilen“ und „Meine Queue“: 

Mit Hilfe des ersten Buttons kann der User seinen derzeitigen Inhalt des SQL Bereich mit einem anderen User teilen: Ich möchte über einen SELECT mit einem Kollegen diskutieren oder Feedback dazu einholen.

SELECT (Editorbereich) teilen

SELECT (Editorbereich) teilen

Der zweite Button zeigt den „Posteingang“ des des Benutzers an.

Posteingang des Benutzers

Per Doppelklick wird der geschickte Inhalt in den Editorbereich übernommen.

Wird eine Eintrag nicht mehr benötigt, kann er gelöscht werden.

Premium Version – PDF Attachments Erweiterung

Ab jetzt kann ein Administrator eine maximale Größe von PDF-Dokument SQL Cockpit – Admin Bereich festlegen. Wird diese Größe überschritten, wird das PDF Dokument auf mehrere aufgeteilt und als separate Mail verschickt.

Der Änderunglog kann jetzt auch als Attachment an das Solution Manager Ticket gehängt werden. Entweder als Textdokument oder als PDF-Dokumente mit der entsprechenden Maximalgröße.

Premium Edition - Admin Bereich

Premium Edition – Admin Bereich

Zwei verschiedene Formulare stehen ab jetzt zur Verfügung:

  • /CADAXO/SQLC_UPDATE_LOG_FORM – Bisheriges Formular
  • /CADAXO/SQLC_UPDATE_LOG_SMALL – Neues, speicheroptimiertes Formular

Webinar – ABAP® CDS Views

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Unterlagen/Links zum Webinar „ABAP CDS Views“

Umfrageergebnisse:

Welches Webinar sollen wir im September wiederholen?

Da als einziger Vorschlag ebenfalls BOPF gewählt wurde, steht das Ergebnis wohl fest.

Wir werden das berücksichtigen, behalten uns aber vor, doch die Würfel zu befragen 😉

Nützliche Links

 

Interessante Blogs

Domi Bigl – ABAP CDS Views – 6 Schritte zum Verständnis – die Beispiele der LiveDemos im Webinar

Johann Fößleitner – ABAP CDS Access Control mit DCL

Jerry Wang – My CDS view self study tutorial

SDN Sammlung – CDS – Core Data Services

Horst Keller – CDS – One Concept, Two Flavors

Horst Keller – ABAP News for Release 7.50 – ABAP CDS Access Control

Horst Keller – ABAP News for Release 7.50 – Environment Information in ABAP CDS

Horst Keller – ABAP News for Release 7.50 – Annotations in ABAP CDS

Horst Keller – From Open SQL Joins to CDS Associations

Bilder

Es war noch nicht allzu heiß und der Ton ging noch 😉

 

Unsere nächsten Webinare

  • Freitag 29.09.2017 10:00 Uhr – voraussichtlich BOPF – Anmeldung
  • Freitag 24.11.2017 10:00 Uhr – SAP NetWeaver Gateway – Anmeldung

ABAP® CDS Views – 6 Schritte zum Verständnis

Einführung

Core Data Service Views – CDS Views – sind die neue Form der DDIC (SE11)-Datenbankview – aber absolut nicht vergleichbar!

CDS Views werden mit der Data Definition Language – DDL – in den Abap Development Tools definiert und können mit der Data Control Language – DCL – um Berechtigungen bzw. Zugriffsbeschränkungen erweitert werden.

Sie sind eine Möglichkeit des Code Push-Down im ABAP und zentraler Bestandteil des S/4 HANA ABAP-Programmiermodels (mehr Details gibt’s in den Folien zum Webinar).

Die hier gezeigten Beispiele wurden in unserem Webinar ABAP CDS Views verwendet und basieren auf Geschäftspartner-Beziehungen. Als System diente SAP NETWEAVER 750 SP1, bei niedrigeren Releases (ab 740 SP5/SP8) stehen manche Funktionen noch nicht zu Verfügung!

Die verwendeten Tabellen sind:

  • BUT000 GP: Allgemeine Daten I
  • BUT050 GP-Beziehungen/GP-Rollenfindungen: Allgemeine Daten
  • TBZ9A GP-Beziehungstypen: Texte
  • BUT100 GP: Rollen

Und hier noch die Datenbasis aus der Geschäftspartnerpflege:

 Schritt 1 – Ein erster CDS View mit JOIN

Definition eines CDS Views mittels DDL

Wir haben hier einem LEFT OUTER JOIN der BUT050 mit TBZ9A (Alias cattx) und den Viewfeldern Partner1, Partner1, Date_to, Reltyp, Date_from aus der Tabelle BUT050 und Spras, Bez50 und Bez50_2 aus der Tabelle TBZ9A. Als Ergebnis erhalten wir alle Beziehungen aus der BUT050 und den entsprechenden Texten zum Beziehungstyp aus der TBZ9A.

Das ist jetzt noch nicht wirklich aufregend und, abgesehen vom Syntax, auch nicht neu. Das schafft man auch mittels SE11-Datenbankview.

Wir wollen dieses einfache Beispiel aber nutzen, um die verschiedenen Bereiche, Befehle und Tools genauer zu beschreiben.

DDL Bereiche

Objekte und Namen

CDS Entity Name (Datenquellenobjekt ): Die CDS Entity wird als Datenquelle z.B. im ABAP Open SQL Statement verwendet.
CDS Datenbank View (generierter SE11 Datenbankview): Für jede Entity wird ein SE11 Datenbankview mit entsprechendem Namen generiert.
CDS Viewname (Sourcecode): Name des DDL Sourcecode Objekt.

Generierter DDL View in der SE11:

Generierter SE11 DDL View

Annotiations

Annotations bieten die Möglichkeit Eigenschaften, Einstellungen und Metadaten für einem CDS View zu definieren. Diese Werte werden z.B. von der ABAP Runtime oder diversen Frameworks (u.a. Gateway/OData Service, BOPF,…) ausgelesen und steuern deren Verhalten bzw. die Ausgabe.

Annotations gelten entweder für den gesamten View – View Annotations:

Oder für einzelne Elemente/Felder – Element Annotations:

Natürlich gibt’s auch Code Completion:

Annotations zu CDS Entitäten bzw. deren Feldern können mit der API Klasse CL_DD_DDL_ANNOTATION_SERVICE ausgelesen werden. Es wird auch die Möglichkeit kundeneigener Annotations geben (derzeit noch nicht offiziell unterstützt).

Weitere Details gibt’s hier:

https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/index.htm?file=abencds_f1_view_entity_annotations.htm

https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/index.htm?file=abencds_f1_element_annotation.htm

https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/index.htm?file=abencds_f1_parameter_annotations.htm

SELECT Liste

Die Select Liste (Datenbankfelder, Literale, Parameter, Funktionen, Systemfelder,…) kann entweder VOR oder NACH den Datenquelle angegeben werden:

Datenquellen

Als Datenquellen können Datenbanktabellen, SE11-Datenbankviews und andere CDS Entitäten angegeben werden. Für ON-Bedingungen von Joins gelten ähnliche Regeln, wie im Open SQL. Vor allem ist auch hier noch kein CAST möglich.

Details findet man hier: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/index.htm?file=abencds_f1_joined_data_source.htm

Datenvorschau

Die Ergebnisse eines CDS Views kann in den ADT über die Data Preview angezeigt werden. Der Aufruf erfolgt über das Kontextmenü im DDL Code oder im Project Explorer oder direkt mittels F8:

Die Ausgabe der Data Preview:

Über Add filter kann, ähnlich der SE16, auf einzelne Feldwerte eingeschränkt werden:

In der SQL Console kann der abgesetzte SQL SELECT Befehl angezeigt und angepasst werden:

Cadaxo SQL Cockpit

Um den ABAP Open SQL Aufruf bzw. Syntax zu zeigen, wird das Cadaxo SQL Cockpit verwendet. Die angeführten SELECT Statement können genauso in ABAP Coding verwendet werden. Einzig der Befehl

muss an den entsprechenden Stellen eingefügt werden.

Cadaxo SQL Cockpit

Das entspricht dem ABAP Befehl:

http://www.cadaxo.com/produkte/cadaxo-sql-cockpit/

Schritt 2 – Eingebaute Funktionen

Die CDS Views biete eine ganze Fülle von eingebauten Funktionen, mit denen z.B. mathematische Funktionen und Stringopperationen ausgeführt, Währungs- und Mengeneinheiten umgerechnet, Zeit- und Datumsangaben geprüft oder Datumsintervalle berechnet werden können.

Eine vollständige Liste gibt’s hier: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/index.htm?file=abencds_f1_builtin_functions.htm

Hier wird die eingebaute Funktion DATS_DAYS_BETWEEN verwendet, um die Gültigkeit jeder Beziehung in Tagen zu berechen, und als Viewfeld Period bereitzustellen:

Im Ergebnis sehen wir die unterschiedlich langen Gültigkeitsbereiche in der Spalte PERIOD.

Schritt 3 – Views mit Parametern

Für CDS Views können Parameter definiert werden, die beim SELECT übergeben bzw. befüllt werden müssen:

Der SELECT wurde um zwei JOINs auf die BUT000 erweitert, um Details zu den Partner zu ermitteln. Durch die beiden CASE Anweisungen werden auch Name_last bzw Name_org1 aus dem entsprechenden BUT000-Eintrag geliefert (natürlich sollte hier das Feld BUT000-TYPE zur Fallunterscheidung verwendet werden, zur Demonstration der Funktionalität reicht uns aber die Prüfung <> “).

Der interessante Teil ist aber die Definition des Parameters p_langu mit dem Datentype abap.lang (entspricht dem ABAP Dictionary Type LANG). Der Parameterwert wird in der ON-Bedingung des JOINs verwendnet, um die Einträge auf die gewünschte Sprache einzuschränken. Er kann aber genauso in die WHERE-Bedingung  geschrieben werden. Die beiden Schreibweisen $parameters.p_langu und :p_langu sind gleichwertig und austauschbar.

Beim Aufruf der Data Preview erscheint jetzt zuerst ein Popup für die Parametereingabe:

Die Ergebniszeilen werden entsprechend eingeschränkt und auch die CASE Anweisung arbeitet richtig:

Der Open SQL Aufruf erfolgt ähnliche einem Methodenaufruf:

Als Typen können DDIC-Datenelemente oder vordefinierte Datentypen verwendet werden: https://help.sap.com/doc/abapdocu_751_index_htm/7.51/en-US/index.htm?file=abencds_typing.htm

Die  Code Completion unterstützt auch hier:

Über spezielle Parameter Annotations, die Environment Annotationen, können Systemfelder (z.B. SY-UNAME) als Defaultwerte für Parameter definiert werden. Wird der SELECT im ABAP ausgeführt, kann der Parameter weggelassen werden und wird auf den aktuellen Systemwert gesetzt:

Derzeit ist das für diese SY-Felder möglich:

sy-mandt#CLIENT
sy-datum#SYSTEM_DATE
sy-uzeit#SYSTEM_TIME
sy-langu#SYSTEM_LANGUAGE
sy-uname#USER

Das ist zwar nett, kann aber auch über eine Where-Bedingung erreicht werden. Wirklich lustig werden Parameter aber, wenn man mit ihnen Logik in die CDS Views bring:

Wir legen einen weiteren Parameter p_name_first an und verwenden ihn in einer CASE Anweisung. Wird der Parameter mit dem Wert ‚F‘ übergeben, soll für Personen der Vorname (name_first) geliefert werden. Bei jedem anderen Wert kommt wie bisher der Nachname (name_last):

Die Ergebnislisten der beiden Select enthalten die erwarteten Namen:

Schritt 4 – Associations

Associations sind am einfachsten als „JOINs On Demand“ zu beschreiben. Durch Associations können Abhängigkeiten zwischen CDS View Entitäten (also Datenbanktabellen) abgebildet und damit komplexe Datenmodelle definiert werden. Datenbankseitig entsprechen sie JOINs. Die JOIN Bedingung wird aber nur ausgeführt, wenn wirklich Daten über die Associations gelesen werden müssen, also ein Feld aus der Association in der Select-Liste oder Where-Klausel verwendet wird.

Zunächst modellieren wir unsere JOINs als Associations und definieren die entsprechende Kardinalität. In unserem Fall [1..1] für die Partner Beziehung und [0..*] für die Text Beziehung. Die Kardinalität dient derzeit noch hauptsächlich rein zur Abbildung des Datenmodells und wird durch die Syntaxprüfung nur teilweise berücksichtigt. Eine Ausnahme ist die Verwendung in der WHERE-Klausel, wo als Kardinalität nur [0..1] oder [1..1] erlaubt ist.

Wir verwenden hier einige Felder aus der Association _cattx mit einem FILTER auf das Feld Spras. Damit werden nur Einträge geliefert, die auch dem Filter entsprechen („Where-Klausel“). Die Texte zum Beziehungstyp werden einerseits zu übergebenen Sprache im Parameter p_langu gelesen, aber zusätzlich auch für Deutsch. Wir sehen hier auch eine Warnung bezüglich der Kardinalität ([0..*] für TBZ9A), können den View aber trotzdem ausführen:

Auch im ABAP:

Interessanterweise erhalten wir aber mehr Zeilen als über die JOIN-Verknüpfung in Schritt 3!?!

Das liegt daran, dass Associations standardmäßig als LEFT OUTER JOIN gebildet werden. Das kann aber übersteuert werden:

Über die Angabe inner in den Filterwerten, mit dem Zusatz where, wird nun ein INNER JOIN generiert. Die ebenfalls neue Anweisung 1: setzt die Kardinalität für diese Verwendung auf [0..1]. Die Warnung wird nicht mehr angezeigt:

Das Ergebnis ist wieder gleich der JOIN Variante:

Associations veröffentlichen – Pfadzugriffe

Wer sich bisher gewundert hat, warum in der SELECT-Liste der Viewdefintion die beiden Associations _partner1 und _partner2 (Alisasnamen für Associations sollten mit ‚_‘ beginnen) angegeben sind, in der Ergebnisliste aber nicht wirklich aufscheinen: Damit wird Association nur veröffentlicht. Sie kann also „von außen“ durch einen Aufrufer verwendet werden. Der Zugriff auf Associations mittels Open SQL erfolgt über Pfade:

Hier wird über die Entität Zwb_But050_Txt_Asso_E selektiert, es werden aber nur Felder der Association _partner2 abgerufen, also Felder aus der Datenbanktabelle BUT000. Im SQL Trace (Transaktion ST05) ist der abgesetzte SELECT Befehl ersichtlich:

Es wird also zur Laufzeit ein JOIN mit der ON-Bedingung der Association gebildet.

Natürlich kann man auch nur einzelne Felder über Pfadausdrücke ansprechen:

Oder in der Where-Klausel verwenden:

Der Zugriff auf nicht veröffentlichte Associationen von außen ist nicht möglich:

Compare Filter

Wir haben bisher immer die View-Annotation

verwendet, diese aber noch nicht erklärt. Um zu verstehen, was diese macht, müssen wir uns den generierten, technischen SQL Befehl anschauen. Das ist über das Kontextmenü möglich:

Wir erkennen, dass für die Association _cattx (technischer Alias A0) nur eine JOIN Verknüpfung angelegt wird.

Setzen wir den Annotationwert auf false und betrachten den technischen SQL Befehl erneut:

Jetzt wird für jedes Association-Feld eine JOIN-Bedingung definiert!

Kardinalitätsfehler in der Where-Klausel

Für das Beispiel wurde auch die Assiocation _cattx nach außen veröffentlicht.

Schritt 5 – Viewerweiterungen

SAP bietet auch die Möglichkeit CDS Views modifikationsfrei zu erweitern. Dazu kann über einen Extend View eine Entität um zusätzliche Assiciations und Felder erweitert werden:

Die Entität Zwb_But050_Txt_Asso_E liefert jetzt auch das Feld Relnr der Tabelle BUT050 und es gibt die Association _roles:

Die Data Preview bietet auch die Möglichkeit auf Assiocaitions zuzugreifen:

Daten der hinzugefügten Association _roles für eine Ergebniszeile der Entität.

Und auch im ABAP:

Schritt 6 – einfach ausprobieren

 CDS Views erscheinen auf den ersten Blick vielleicht etwas fremd und komplex. Aber jeder ABAP Entwickler, der bereits über ein SELECT * FROM table hinausgekommen ist und etwas Erfahrung mit ADT hat, findet sich sehr schnell zurecht! Einfach mal ein paar Beispiele ausprobieren und die Templates zum Anlegen verwendet – dann wird man die CDS Views kennen und lieben lernen! Zumindest wars bei mir so 😉

Und spätestens mit S/4 HANA kommen wir an CDS Views nicht mehr vorbei…

ABAP® CDS Access Control mit DCL

Appendix

Mit dem Cadaxo SQL Coskpit ist es möglich die DDL Source auch im SAP GUI anzuzeigen, ohne Eclipse starten zu müssen:

ADT Templates

In den ADT können neue DDL Sourcen angelegt werden und es stehen einige Templates bereit:

<Screens skipped…>

Cadaxo SQL Cockpit 3.2 – Releaseinfos

Für die Version 3.2 unseres SQL Cockpits haben wir neben einigen kleineren Verbesserungen und Korrekturen ein paar sehr interessante Features eingebaut bzw. erweitert.

Vergleichen von Ergebnislisten

Der Vergleich von Ergebnislisten wurde komplett runderneuert. Nun können beliebige Ergebnislisten miteinander verglichen werden. Über eine komfortable Mappingoberfläche können die zu vergleichenden Felder verlinkt werden. Es spielt dabei keine Rolle, ob es sich dabei um neu erstellte Ergebnislisten oder um gespeicherte Listen handelt.

SQL Cockpit 3.2 - Comparing Result Lists

Tipp: Gespeicherte Listen können exportiert bzw. importiert werden. Dadurch ist ein systemübergreifender Ergebnislistenvergleich möglich!

Open SQL Features 7.50

SAP hat mit 7.40 SP5 / SP8 bzw. 7.50 umfangreiche Erweiterungen für den ABAP Open SQL Syntax aufgenommen. Das Cadaxo SQL Cockpit 3.2 unterstützt alle diese neuen SQL Features.

Nachfolgend eine Aufstellung der wichtigsten ABAP Open SQL Features:

  • Open SQL Expressions
  • Open SQL Functions
  • Host Expressions
  • Unions
  • Zugriff auf CDS Views
  • Pfadausdrücke für Assoziationen von CDS-Views
  • CDS-Views mit Eingabeparametern

Integration ADT

Über die Usersettings kann sich nun jeder Anwender einstellen, ob die Vorwärtsnavigation bei einem Doppelklick auf eine Tabelle wie bisher innerhalb des SAP Gui oder ob die Anzeige mit den ADT (ABAP Developer Tools = Eclipse!) erfolgen soll.

Beispielsweise können CDS Views nur mit den ABAP Developer Tools gepflegt werden. Innerhalb von SAP Gui ist lediglich eine Anzeige möglich.

Elementinfo für CDS Views

Die Anzeige der CDS Views wurde in die Elementinfo aufgenommen. Die Element Info sorgt für eine bessere Usability im SQL Cockpit. Notwendige Informationen zu einer DB-Tabelle werden einfach angezeigt, wenn man einen Moment mit dem Mauszeiger über einen Tabellen- oder CDS-View-Namen fährt.