Webinar – ABAP® Managed Database Procedures – 31. Jänner 2020

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Unterlagen/Links zum Webinar „ABAP Managed Database Procedures“

Bücher

  • SQLScript for SAP HANA , SAPPress, 2018, ISBN 978-3-8362-6208-8, Jörg Brandeis

Andere Blogs/Links zu dem Thema

Unser nächtes Webinar

Wir freuen uns schon auf die kommenden Webinare!

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.

 

Webinar – ABAP® Development Tools vom 27. September 2019

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Unterlagen/Links zum Webinar „ABAP Development Tools

Umfrageergebnisse

Interessante Social Media Accounts

Wenn man sich für aktuelle Informationen rund um ADT interessiert, sollte man unbedingt diesen beiden Kollegen der SAP folgen.

Bücher

  • ABAP-Entwicklung in Eclipse, SAPPress, 2015, ISBN 978-3-8362-3040-7, Daniel Schön
  • ABAP to the Future, SAPPress 2019, ISBN 978-1-4932-1161-6, Paul Hardy
  • SAP-Schnelleinstieg: ABAP-Entwicklung in Eclipse, Espresso Tutorials, ISBN 9783960126652, Christoph Lordieck
  • Refactoring: Improving the Design of Existing Code, ISBN 978-0-13-475759-9, 2019, Martin Fowler

Andere Blogs zu dem Thema

Unser nächtes Webinar

Aufgrund der vielen anderen Termine im Herbst, findet unser nächstes Webinar erst im Jänner 2020 statt. Das Thema wird noch vor Weihnachten fixiert, aber natürlich kann man sich jederzeit registrieren.

Webinar – Entwurfsmuster in ABAP®

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Unterlagen/Links zum Webinar „Entwurfsmuster in ABAP

Links

Interessante Twitter Accounts

Bücher

Unsere nächtes Webinar

Webinar – Modern ABAP®

Vielen Dank für Ihre Teilnahme an unserem Webinar!

Unterlagen/Links zum Webinar „Modern ABAP

Links

ABAP in the Cloud

ABAP CodeRetreat

ABAP Development Tools

ABAP News

ABAP OO

ABAP Obsolete Sprachelemente

ABAPGit

ABAP Open Source Projects

  • https://dotabap.org/

ABAP CDS Views

ABAP Open Checks

ABAP Analyse Tools

ABAP Unit Tests

Unsere nächtes Webinar

Vergangene Webinare mit ähnlichem Thema

 

Webinar – ABAP® 7.51 Releaseabhängige Änderungen

Vielen Dank für Ihre Teilnahme an unserem Webinar!

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

Umfrageergebnisse (in %)

Auf welchem ABAP Release arbeiten Sie hauptsächlich?

Verwenden Sie bereits SAP HANA als Primäre Datenbank?

Links

Blogs

Unsere nächtes Webinar

Vergangene Webinare mit ähnlichem Thema

 

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

 

CONTINUE, CHECK, EXIT und RETURN

Vor kurzem musste ich wieder einmal ein ABAP Klasse korrigieren, in der die Bedeutung von CONTINUE und RETURN offensichtlich verwechselt wurde. Eigentlich sollte innerhalb eines Schleifendurchlaufs an einer Stelle der aktuelle Durchlauf beendet werden und mit dem nächsten Tabelleneintrag weitergemacht werden. Aber leider wurde dies mit RETURN Anweisung implementiert. RETURN verlässt sofort die komplette Methode.

Daraufhin habe ich mit einigen Kollegen über die Aufgabenstellung diskutiert und es hat sich herausgestellt, dass manchmal Unklarheit bei der Verwendung von CONTINUE, RETURN, STOP, EXIT, CHECK … herrscht.

Daher versuche ich hier kurz Klarheit in die vielen Kommandos zu bringen. Bitte beachtet, dass ich nicht auf die Ausnahmen (klassisch und klassenbasierte) eingehe, das ist ein gänzlich anderes Thema. Aber natürlich wird auch durch Ausnahmen eine Prozedur verlassen.

Schleifen abbrechen

SAP kennt die folgenden Schleifenarten: LOOP / ENDLOOP, DO / ENDDO, WHILE / ENDWHILE und nicht zu vergessen SELECT / ENDSELECT – Wobei, eigentlich kann man SELECT/ENDSELECT gerne vergessen …

  • Mit CONTINUE kann man den aktuellen Schleifendurchlauf ohne Bedingung abbrechen. Nach der Anweisung werden die übrigen Anweisungen übersprungen und der nächste Schleifendurchlauf beginnt.
  • Mit CHECK <bedingung> kann man ebenfalls den aktuellen Schleifendurchlauf mit Bedingung abbrechen. Wenn die Bedingung nicht erfüllt ist, wird gleich wie bei CONTINUE die weitere Verarbeitung übersprungen und der nächste Durchlauf beginnt.
  • Verwendet man hingegen EXIT, wird die aktuelle Schleife vollständig beendet und der Programmablauf nach dem schließenden Teil (ENDLOOP, ENDDO, ENDWHILE, ENDSELECT) fortgesetzt. Wenn es sich um verschachtelte Schleifen handelt, wird hier nur die aktuelle Schleife beendet.

Ganz schlimm finde ich ein DO 1 TIMES/ENDDO. Dies wird manchmal verwendet um aus diesem Bereich DO/ENDDO an einer beliebigen Stelle mit EXIT auszusteigen.

Prozeduren verlassen

Prozeduren verlassen

Wenn man Prozeduren vor der END… – Anweisung verlassen möchte, so stehen ans ich in ABAP die Kommandos RETURN, EXIT und CHECK <bedingung> zur Verfügung. Diese Anweisungen beenden eine Prozedur ordnungsgemäß, dadurch werden auch Ausgabe- bzw. Rückgabewerte an die aufrufende Stelle übergeben.

Im Sinne der Lesbarkeit gibt auch SAP die Empfehlung aus, Prozeduren nur mit RETURN zu verlassen.

Prozeduren können weiters wie folgt verlassen werden:

  • Aufruf einer Einheit ohne Rückkehr (SUBMIT, CALL TRANSACTION, … )
  • Auslösen einer Ausnahme
  • Senden einer Dialognachricht (MESSAGE)

Ereignisblöcke verlassen

Der Vollständigkeit halber sind hier noch die Anweisungen REJECT und STOP zu erwähnen. Damit können Ereignisblöcke von Dialogmodulen und Reports (AT, … ) verlassen werden. Da es jedoch schon lange die Regel gibt, in klassischen Ereignisblöcken nur noch Methodenaufrufe von Klassen zu implementieren, sollten diese Fälle in neuen Programmen nicht mehr auftreten. Siehe auch https://help.sap.com/doc/abapdocu_750_index_htm/7.50/de-DE/abenabap_obj_progr_model_guidl.htm

Leider können RETURN, EXIT und CHECK auch zum Beenden von Ereignisblöcken eingesetzt werden und REJECT und STOP können auch bei Prozeduren eingesetzt werden. Dies sollte jedoch unbedingt vermieden werden.

Zusammenfassend

  • Schleifendurchlauf mit CONTINUE oder CHECK beenden
  • Schleife mit EXIT beenden
  • Prozeduren mit RETURN verlassen

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

R/2 bzw. ABAP® /4 Programmierer gesucht? Echt jetzt?

Wie die vielen anderen U-Bahn Fahrgäste starre ich während dem morgendlichen Weg in die Arbeit auf mein Handy und scrolle Facebook, Instagram und Twitter durch. Vor ein paar Tagen wurde ich plötzlich auf Twitter bei einem Jobinserat stutzig:

Da sucht doch tatsächlich eine Firma aus Berlin einen ABAP /4 Entwickler. Echt? Gibt’s ja nicht! Zumal ich mich erinnere, dass ABAP als ABAP /4 nur in der R/2 und den ganz frühen R/3 Zeiten bezeichnet wurde. Sucht da tatsächlich jemand einen R/2 Entwickler? Oder einen R/3 Entwickler der nicht objektorientiert entwickeln kann? Oder meinen die vielleicht einen S/4HANA Entwickler? Der Zusatz /4 wurde jedenfalls noch vor dem Jahrtausendwechsel mit dem Einzug der objektorientierten Welt in ABAP entfernt. Da der Bewerber auch noch ABAP-OO kennen soll war mir dann doch schnell klar, dass ich leider nicht mehr als R/2 Entwickler einsteigen kann.

 

ABAP – ABAP /4 – ABAP Objects/ABAP OO – modernes ABAP

Vermutlich weiß jeder, dass ABAP für Allgmeiner Berichts Aufbereitungs Prozessor oder in der englischen Form für Advanced Business Application Programming steht.

ABAP /4 wurde die Programmiersprache bereits unter R/2 bezeichnet und in den frühen R/3 Zeiten wieder entfernt. /4 sollte zeigen, dass es sich bei ABAP um eine Programmiersprache der 4. Generation (4GL) handelt.

Als ABAP Objects/ABAP OO wird der Bestandteil von ABAP bezeichnet, der die objektorientierte Programmierung auf Basis von Klassen und Interfaces erlaubt. ABAP Objects wurde mit SAP R/3 4.6 verfügbar und sollte in der Zwischenzeit jeder ABAP Entwickler beherrschen.

Zuletzt taucht auch immer öfter der Begriff modernes ABAP. ABAP ist eine sehr lebendige Programmiersprache welche laufend weiterentwickelt. Als ABAP Entwickler sollten wir danach trachten immer den aktuellesten, möglichen ABAP Syntax – modernes ABAP – einzusetzen.

Modernes ABAP

Im Laufe der Jahre wurden viele Weiterentwicklungen an vorhandenen Spracheigenschaften vorgenommen oder gänzlich neue Funktionen hinzugefügt. ABAP Objects war sicherlich die mächtigste Erweiterung von ABAP, aber auch kleinere Erweiterungen wie z.B. die Regular Expressions (REGEX) oder zuletzt die impliziten Datendefinitionen können hier genannt werden.

SAP verfolgt im ABAP seit den ersten Anfängen die strikte Abwärtskompatibilität. Ein nicht unbedeutender Teil der nach wie vor laufenden Entwicklungen wurden vor 10, 20 Jahren oder gar noch zu R/2 Zeiten erstellt. Nachfolgend ein Beispiel aus einem ABAP 7.50 System:

Diese strikte Abwärtskompatibilität birgt aber für die ABAP Entwickler große Gefahren:

  • Ein arrivierter ABAP Entwickler kann auch mit einem etwas angegrauten Wissen nach wie vor ABAP Programme erstellen. In einem R/3 System kann er sogar ohne ABAP Objects tarnen und täuschen. Es besteht oft keine zwingende Notwendigkeit neue Konzepte einzusetzen.
  • Ein neuer ABAP Entwickler wird wegen der vielen Möglichkeiten verwirrt sein. Sehr oft werden bestehende Programme angepasst oder kopiert wodurch die alten Konzepte fortgesetzt werden.

Um dieses Verrotten der Entwicklungen zu verhindern muss man im Hinblick auf den ABAP Syntax nur zwei Regeln beachten:

Verwenden Sie keine obsoleten Sprachelemente

Informieren Sie sich regelmäßig über Neuheiten und die ABAP Releasenotes

 

Obsolte Sprachelemente

Bei ABAP Objects ist ein Großteil der obsoleten Anweisungen bereits verboten. Allein schon deshalb sollte man unbedingt ABAP Objects einsetzen. Obsolete Sprachelemente sollten in jedem Fall vermieden werden. Es gibt für alle diese Sprachelemente neuer Formen mit wesentlich mehr Möglichkeiten.

Betrachten wir das einfache Beispiel MOVE

MOVE ist schon seit einigen Jahren obsolet und wird aber nach wie vor in vielen Programmen eingesetzt. Mit MOVE kann man z.B. weder Konstrukturausdrücke oder Tabellenaustrücke verwenden noch eine Inline-Deklaration einsetzten. Statt MOVE sollte nur mehr einheitlich mit = oder ?= gearbeitet werden:

 

Übersicht über die obsoleten ABAP Sprachelemente

 

ABAP Releasenotes

Mit jedem neuen ABAP Release, aktualisiert SAP auch die ABAP Releasenotes. Ja, es gibt tatsächlich ABAP Releasenotes und ein regelmäßiger Blick lohnt sich. Meistens findet man bei neuen ABAP Releases auch unzählige Blogs auf sdn.sap.com. Hier zwei Blogs zum aktuellen ABAP Release welche einen optimalen Überblick liefern:

Links zu den ABAP Releasenotes

Unter dem nachfolgenden Link findet man alle ABAP Releasenotes seit der Version 3.0 bis zum jetzt aktuellesten System ABAP 7.52:

 

Fazit

Wir ABAP Entwickler sind dafür verantwortlich gute und wartungsfreundliche Entwicklungen vorzunehmen. Die Vermeidung von obsoleten Kommandos oder Verfahren ist ein wichtiger Bestandteil von wartungsfreundlichen Entwicklungen. Wir selbst gehen ja auch davon aus, dass sich Ärzte, Automechaniker oder sogar Politiker regelmäßig weiterbilden und „obsolete“ Verfahren nicht mehr einsetzen.