Mussfeldprüfung im ABAP Programmiermodell für SAP Fiori

Mussfeldprüfung im ABAP® Programmiermodell für SAP Fiori® ( CDS, BOPF, Fiori Elements)

Das ABAP Programmiermodell für SAP Fiori, also ABAP CDS Views, Business Object Processing Framework und als UI Fiori/Fiori Elements/SAPUI5, bietet die Möglichkeit, einzelne Felder als Mussfelder zu definieren.
Und das ganz einfach über eine Annotation im ABAP CDS View bzw. der Metadata Extension:

@ObjectModel.mandatory: true

Fiori Elements ist dann auch so nett und zeigt im Änderungsmodus die Mussfeld-Sternchen:

Das ist aber – außer für Key-Felder – leider nur eine Information.
Weder im UI (Browser) noch im SAP Backend erfolgt irgendeine weitere Prüfung auf mandatory Fields!

Ohne Büro sichern?

Klar, kein Problem…

Um die Mussfelder zu prüfen, braucht man eine Validate-Methode im BOPF Objekt und verwenden die Standardklasse /BOBF/CL_LIB_V_MANDATORY_ATTR als Implementation Class.

Damit werden alle Felder gegen die Metadaten geprüft und eine passenden Fehlermeldungen erstellt.

Und das geht natürlich auch für mehrere Felder

Blogs/Links
Cadaxo Webinar zum Thema BOPF

ABAP CDS Views – 6 Schritte zum Verständnis

Webinar_RAP Teil 3

Webinar – ABAP® RESTful Application Programming Model (RAP) – Teil 3

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Das spannende Thema RAP wird uns alle noch viele Jahre beschäftigen. In unseren nächsten Webinaren werden wir uns erst einmal wieder anderen ABAP Themen beschäftigen. Wir sind noch nicht sicher, ob unser nächstes Webinare im November stattfinden wird. Unsere ganze Aufmerksamkeit gilt nämlich nun der ABAPConf welche am 9. Dezember 2021 über die Bühne gehen wird. Ein Tag an dem sich alles um ABAP dreht! Einfach hier auf Eventbrite registrieren, damit ihr in der Sache am Laufenden bleibt! Für das Event selber ist keine Registrierung notwendig.

Unterlagen/Links zum Webinar „ABAP RESTful Application Programming Model (RAP) – 3. Teil“

Links

Im Laufe des Webinars haben wir über folgende Sites gesprochen:

Teilnehmer

  • Deutschland 44%
  • Österreich 41%
  • Schweiz  3.5 %
  • Rest 11.5 % (Tschechien, Ungarn, Türkei, Weißrussland, UK)

Twitter

Unsere nächtes Webinar

Findet vielleicht im noch im November oder erst im nächsten Jahr statt. Aber dafür gibt es mit der ABAPconf einen perfekten Ersatz! Wir würden uns freuen, wenn wir Euch bei der ABAPConf wieder sehen würden.

Webinar_RAP Teil 2

Webinar – ABAP® RESTful Application Programming Model (RAP) – Teil 2

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Auch das nächste Webinar im September wird zum Thema RAP sein. Es gibt genug Themen. – Anmeldelink befindet sich ganz unten in diesem Blog.

Unterlagen/Links zum Webinar „ABAP RESTful Application Programming Model (RAP) – 2. Teil“

Teilnehmer

  • Deutschland 52%
  • Österreich 38%
  • Schweiz  5 %
  • Rest 5 % (Belgien, Frankreich, Polen, USA)

Twitter

Unsere nächtes Webinar

Webinar_RAP Teil 1

Webinar – ABAP® RESTful Application Programming Model (RAP)

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Wie angekündigt, werden wir uns auch im nächsten Webinar mit RAP beschäftigen. Dann etwas mehr im Detail. – Anmeldelink befindet sich ganz unten in diesem Blog.

Unterlagen/Links zum Webinar „ABAP RESTful Application Programming Model (RAP)“

Blogs/Links

FAQ

Es gab einige Fragen im Verlauf des Webinars:

  • Frage: Ist das ABAP RESTful Programming Model, zu dem es ja auch Literatur von SAP Press gibt, das selbe wie RAP?
    • Antwort: Ja genau RAP = RESTful Applicatino Programming Model
  • Frage: Wie kann ich verhindern, dass bei Projections auf einen Root-View, die Compositionen verlorenen gehen?
    • Antwort: Bei der Projection muss man die Composition umbiegen auf die Projection des „Kindes“
  • Frage: OData V4 geht auf onPrem mit 2020 SPS01.
    • Antwort: Jop!
  • Frage: Die neuen, nicht mehr DDIC basierten, View-Entities kann man leider nicht mit den SE16* Transaktionen auswerten. Wisst ihr da einen Workaround? Ist gerade für Troubleshooting auf Nicht-Entwicklungssystemen und Mandanten immer ganz praktisch, da man dort oft keinen ADT Zugriff hat. Zudem ist es für Nicht-Entwickler auch nützlich im die Views, bzw. die Daten zu validieren.
  • Frage: Welche Eclipse Version habt Ihr im Einsatz?
    • Antwort: Eclipse 2020-12 mit ABAP 3.16 -> immer the Latest and greatest! – Ergänzung Föß: Ich aktualisiere Eclipse immer alle 3 Monate, sobald eine neue Version rauskommt. ADT Update checke und update ich ggf. täglich.
  • Frage: Was ist der unterschied von define root view und definde root view entity?
    • Antwort: ROOT VIEW ist noch DDIC basiert (DDIC View)
  • Frage: Gibt es hier ein Thema Locking auf den DB-Tabellen?
    • Antwort: Locking geht natürlich auch: Sperrobjekte, Optimistisches Locking im eTag (das kommt beim nächsten Mal ganz sicher), Draft
  • Frage: Domi hat das managed Szenario oder?
    • Antwort: Domi verwendet das Managed Szenario, aber dem EML ist es egal was drunter läuft – ob managed oder un-managed
  • Frage: Starkes Webinar. Vielen Dank für den Vortrag. Macht das ganze viel sympatischer wenn es live (coding) durchgeführt wird!
    • Antwort: Danke dir!
  • Frage: Danke. Wollte nur wissen, ob man die neueste Version nutzen kann, nicht das es Probleme gibt.
    • Antwort: Immer die neueste von ADT und Eclipse – man sollte aber 1 bis 2 Wochen warten mit dem Eclipse update, bis auch die SAP 100%ig nachgezogen hat 🙂
  • Frage: Eine Verständnisfrage, in den Beispielen der SAP sieht man immer die Implementierung auf Basis „selbst“ erstellter Tabellen. Aber wie funktioniert das ganze Model, wenn ich auf APIs (OneOrder, BP usw) zugreifen muss. Ich will ja nicht unbedingt Daten lesen und schreiben mit direktem Tabellen Zugriff.
    • Antwort: Dieses Thema versuchen wir beim nächsten oder übernächsten Webinar aufzugreifen.

CDS View Entities / CDS Root View Entities

Wir haben im Webinar immer mit CDS ROOT VIEW ENTITIES gearbeitet. CDS View Entites sind ab aber erst ABAP 7.55 verfügbar und es handelt sich dabei um eine verbesserte / erweiterte Möglichkeit der CDS DDIC-based Views. CDS View Entities sind sozusagen der Nachfolger der CDS DDIC-based Views.

Unterschiede:

  • Keine zusätzlicher DB View notwendig (@AbapCatalog.sqlViewName … ) – daher aber auch kein SE16 …
  • Schnellere Aktivierung
  • Vereinfachte Syntax
  • Verbesserter / strikterer Syntaxcheck um potentielle Fehler bereits bei der Aktivierung zu erkennen

Teilnehmer

  • Deutschland 50%
  • Österreich 41%
  • Rest 9 % (Schweiz, Russland, Rumänien, Indien, Frankreich)

Twitter

Unsere nächtes Webinar

ABAP 7.54 - Neuer Timestamp UTCLONG

ABAP® 7.54 – Neuer Timestamp UTCLONG

Bisher wurden für Zeitstempel-Felder die Datenelemente TIMESTAMP und TIMESTAMPL verwendet. Hinter diesen Datenelementen verbergen sich gewöhnliche ABAP Typen. Mit 7.54 enthält ABAP nun den eingebauten ABAP-Typ utclong. Ein auf 100 Nanosekunden genauer UTC Zeitstempel.

Es sind Werte von 0001-01-01T00:00:00,0000000 bis 9999-12-31T23:59:59,9999999 möglich. Die interne Darstellung der gültigen Werte ist 1 – 3.155.380.704.000.000.000, was uns aber eher nicht interessieren sollte.

ABAP Zeitstempelfunktionen

Damit wir diese neuen Zeitstempelfelder sinnvoll verwenden können, hat SAP zum Glück auch ein paar neue Funktionen zur Verfügung gestellt:

  • utclong_current( ) erzeugt einen aktuellen Zeitstempel
  • utclong_add( … ) addiert Tage, Stunden, Minuten oder Sekunden zu einem Zeitstempel
  • utclong_diff( … ) berechnet die Differenz von zwei Zeitstempel

ABAP SQL Zeitstempelfunktionen ab 7.55

Auch bei ABAP SQL SELECT Abfragen können die utclong Zeitstempel verwendet werden. Folgende SQL Funktionen stehen zusätzlich zur Verfügung:

  • utcl_current( ) erzeugt einen aktuellen Zeitstempel
  • utcl_add_seconds( … ) addiert x Sekunden zu einem Zeitstempel
  • utcl_seconds_between( … ) berechnet die Differenz von zwei Zeitstempel in Sekunden

ABAP Zeitstempelkonvertierungsfunktionen ab 7.55

Für die Konvertierungen zwischen einem ABAP Dictionary Type TIMESTAMPL und den neuen utclong Zeitstempel, wurden folgende Funktionen zur Verfügung gestellt:

  • tstmpl_to_utcl( … ) konvertiert einen ABAP Dictionary Type TIMESTAMPL in einen utclong Zeitstempel
  • tstmpl_from_utcl( … ) konvertiert einen utclong Zeitstempel in einen ABAP Dictionary Type TIMESTAMPL

Systemklasse CL_ABAP_UTCLONG

Diese Systemklasse bietet ein paar weitere hilfreiche Funktionen und Konstanten. In den Konstanten CL_ABAP_UTCLONG=>MIN und CL_ABAP_UTCLONG=>MAX sind die jeweiligen Minimal und Maximalwerte für ein utclong Feld definiert.

Die Klasse verfügt über folgende Methoden:

  • diff ermittelt die Differenz von zwei Zeitstempel – ähnlich wie Funktion utclong_diff
  • read_iso_format Konvertiert einen ISO 8601 Zeitstempel in einen utclong Zeitstempel
  • write_iso_format_with_offset Konvertiert einen utclong Zeitstempel in einen ISO 8601 Zeitstempel
  • from_system_timestamp Konveriert ein Datum und Uhrzeit in einen utclong Zeitstempel
  • to_system_timestamp Konvertiert einen utclong Zeitstempel in ein Datum und Uhrzeit

Webinar – ABAP® 7.55 Releaseabhängige Änderungen

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Unterlagen/Links zum Webinar „ABAP 7.55 Releaseabhängige Änderungen

Links

Blogs/Links

Unsere nächtes Webinar

SAP Community Call

SAP® Community Call – Was muss ein ABAP® Entwickler wissen um in S/4 bestehen zu können

Am 15. Dezember 2020 haben wir in einem von der SAP organisierten Community Call über ABAP und was ein Entwickler unbedingt wissen sollte um in S/4 bestehen zu können gesprochen. Natürlich gäbe es viel mehr Themen und mancher Teilnehmer sieht den einen oder anderen Punkt vielleicht anders. Jedenfalls haben wir im Call über die aus unserer Sicht wichtigsten Punkte gesprochen:

  • ABAP Syntax: ABAP Objects, Expressions
  • Code Pushdown: SQL Expressions, CTEs, CDS Views, AMDP
  • IDEs: ADT, BAS, Visual Studio Code
  • Tools in ABAP: Statische Codechecks, Analysetools in ABAP
  • Programmiermodelle: BOPF, RAP, OData, Fiori Elements, Gateway
  • Erweiterbarkeit: OnPrem, In-App, Side-by-Side
  • ABAP Steampunk
  • ABAP Open Source: dotabap.org, abapgit
  • Clean Code: Clean ABAP, Refactoring, Unit Tests

Der Community Call wurde aufgezeichnet und steht via https://www.youtube.com/watch?v=MdHwS_C7mHE&feature=youtu.be zur Verfügung.

PDF Slides mit Links: SAP Community Call S4ABAP Link

Zuordnung von Marketing-Attribute-Sets zu Geschäftspartnern

Marketing-Attribute-Sets sind eine Sammlung von einzelnen (1..n) Marketing-Attributen.

Sie können Geschäftspartnern zugeordnet werden, wodurch die Attribute des Set beim Partner bewertet werden können.

Attribute werden mit der Transaktion CRMD_PROF_CHAR Merkmale bearbeiten gepflegt. Die Set mit CRMD_PROF_TEMPL Merkmalsgruppen bearbeiten.

 

Um Geschäftspartner mit einem bestimmten Set zu finden, braucht man folgende Tabellen:

  • KLAH        Klassenkopf Daten
  • KSSK         Zuordnungstabelle: Objekt zu Klasse
  • INOB         Zuordnung einer internen Nummer zu einem bel. Objekt
  • BUT000    GP: Allgemeine Daten I

Mit diesem Select werden alle Partnernummern und Guids ermittelt, die das Attribut-Set ZCDX_DEMO_ATTR_SET zugewiesen haben

 

Und noch das Ergebnis – Nummer und GUID der relevanten BPs:

Information zum SQL Cockpit 3.6 – Releaseinfos

Webinar – SAP Fiori® Elements

Vielen Dank für Ihre Teilnahme an unserem Webinar!

 

Mit den SAP Fiori Elements hat uns SAP ein ziemlich cooles Werkzeug in die Hand gegeben, welches die Erstellung von Fiori Anwendungen extrem beschleunigt und vereinfacht. Als ABAP Entwickler kann man sich auf das Wesentliche konzentrieren, während sich das SAP Fiori Elements Framework darum kümmert, dass ein schönes, einheitliches Fiori Userinterface generiert werden.

In diesem Webinar haben wir einen Überblick über die SAP Fiori Elements vermittelt. Angereichert um ein paar live Demos.

Diesmal hat uns erneut Sören Schlegel von der Consilio unterstützt. Vielen Dank dafür!

Da wir wesentlich mehr Demos vorbereitet hätten, werden wir das nächste Webinar auch zum Thema „SAP Fiori Elements“ machen. Diesmal aber – No Slides, Just Code! Weitere Details weiter unten in diesem Blog bzw. direkter Link zur Anmeldung hier: SAP Fiori Elements Part 2 – Just Code.

Slides & Video

Links

Übersicht

SAP Blogs

Videos

Developer Tutorials

Buchtipp

Nicht vergessen, als DSAG Mitglied bekommt man bei SAP Press einen Preisnachlass. https://www.rheinwerk-verlag.de/dsag

Sonstige Links

Unser nächstes Webinar

Heuer findet noch ein weiteres Webinar statt. Da wir viel umfangreichere Live Demos vorbereitet hätten, wollen wir einen 2. Teil zum Thema SAP Fiori Elements machen. Diesmal jedoch NO SLIDES und gleich mal zur Sicherheit für 90 Minuten eingeplant. 60 Minuten Talk, 30 Minuten Q&A.

Common Table Expressions in ABAP®

Im Jahr 1999 wurde die vierte Überarbeitung von SQL unter dem Namen SQL:1999 bzw. SQL3 publiziert.  Unter anderem wurden mit SQL:1999 das WITH Konstrukt zur Verwendung von Common Table Expression eingeführt.

Eine Common Table Expression (CTE) erzeugt eine tabellarische Ergebnisliste welche nur temporär innerhalb einer SQL-Operation zur Verfügung steht.

Die Verwendung ist dann sinnvoll, wenn man z.B. Zwischenergebnisse benötigt, eine komplexe SQL-Anweisung übersichtlicher strukturieren will oder wenn die Zwischenergebnisse mehrfach benötigt werden.

Gerade wenn man sich um Clean Code bemüht, sollten auch CTE zur besseren Lesbarkeit eingesetzt werden.

Ab dem ABAP Release 7.51 stehen die Common Table Expressions nun auch für uns ABAP Entwickler zur Verfüfung.

Syntax

Die Syntax ist recht einfach. Eingeleitet  werden CTEs mit WITH:

  • Durch die optionale Angabe der Spaltennamen mit ( name1, name2, … ) direkt im Anschluss an den CTE Namen, können die Spaltennamen in der CTE Ergebnisliste überschrieben werden
  • Die CTEs müssen in der Hauptabfrage verwendet werden

Beispiele

Im nachfolgenden Beispiel werden Personen und Unternehmen mit CTEs gelesen. Im SELECT werden diese beiden CTEs mit der Relationstabelle BUT050 verknüpft.

In diesem Beispiel wird das Ergebnis der CTE als Subselect im SELECT verwendet.

Ergänzende Hinweise

  • Mit dem WITH Kommando wird die SAP-Pufferung umgangen
  • Sobald man WITH verwendet, wird die Syntaxprüfung mit strikten Modus 7.51 ausgeführt
  • ENDWITH ist ggf. gleich einzusetzen wie ENDSELECT
  • In der SAP Dokumentation sind die CTEs als „allgemeine Tabellenausrücke“ übersetzt

Links