SlideShare ist ein Scribd-Unternehmen logo
Modern ABAP
Modern ABAP
Webinar, 29.3.2019, 10:00 Uhr
Modern ABAPDomi
Domi Bigl
Senior Consultant at Cadaxo
eMail: dominik.bigl@cadaxo.com
Twitter: @DomiBiglSAP
Beratungsschwerpunkte
• Konzeption & Management von Entwicklungsprojekten
• Qualitymanagement & Performanceoptimierung
• ABAP Units
• SAP Fiori, SAP UI5
Modern ABAPFöß
Johann Fößleitner
Senior Consultant at Cadaxo
eMail: johann.foessleitner@cadaxo.com
Twitter: @foessleitnerj
Beratungsschwerpunkte
• Konzeption & Management von Entwicklungsprojekten
• Qualitymanagement & Performanceoptimierung
• Clean Code
• S/4HANA Custom Development
Modern ABAPAgenda
 ABAP Sprachversionen
 SAP Cloud Platform ABAP Environment
 ABAP Development Tools
 ABAP Sprachelemente und SQL Expressions
 OOP
 Obsolete Sprachelemente
 abapGit
 CDS Views
 ABAP RESTful Programming Model
 Code Checks in SAP
 Clean Code
 Refactoring
 ABAP Unit / Testseams
 Entwurfsmuster
Modern ABAP
ABAP
MODERN
Modern ABAP
 Warum Modern ABAP?
◦ Performance und Produktivität erhöhen
◦ Stabilere und wartbarere Entwicklungen
 Kürzere Entwicklungszeiten / Fehlerbehebungen
◦ Reduzierter & vereinfachter Code
Warum Modern ABAP
Modern ABAP
Syntax Toolset
Quality
Paradigmen
& Patterns
Modern ABAPABAP to the Future
ISBN 978-1-4932-1762-5
TS
Q P
Modern ABAP
ABAP Sprachversionen
S
Modern ABAP
 ABAP Sprachversionen
◦ X Standard ABAP
◦ 2 ABAP for Key Users
◦ 5 ABAP for SAP Cloud Platform (ab 7.53)
ABAP Sprachversionen
S
Modern ABAP
 Freigegebene Objekte
◦ CDS Views
◦ Dictionary Objekte
◦ Enhancements
◦ Messages Klassen
◦ Source Code Library
ABAP for Key Users (S/4HANA Extensibility)
S
Modern ABAPABAP for Key User – Kommandos & SY-Felder
S
SY
SY-DBCNT
SY-FDPOS
SY-INDEX
SY-SUBRC
SY-TABIX
ABAP Befehle
APPEND CONCATENATE ENDCASE FIND RAISE SPLIT
ASSIGN CONDENSE ENDDO GET READ TRANSLATE
CASE CONSTANTS ENDIF IF REPLACE TRY
CATCH CONTINUE ENDLOOP IMPORT RESUME TYPES
CHECK CONVERT ENDSELECT INSERT RETRY UNASSIGN
CLEANUP DATA ENDTRY LOOP RETURN WHEN
CLEAR DELETE ENDWHILE MESSAGE SELECT WHILE
COLLECT DO EXIT MODIFY SET
CONCATENATE ELSE EXPORT MOVE-CORRESP. SHIFT
CONDENSE ELSEIF FIELD-SYMBOLS OVERLAY SORT
Modern ABAP
 Syntaxprüfung für ABAP Versionen
◦ Report DEMO_ABAP_VERSIONS
 Paket enthält viele gute
Modern ABAP Beispiele
ABAP Sprachversionen - Syntaxprüfung Demo
S
Modern ABAP
SAP Cloud Platform ABAP Environment
S
Modern ABAP
 SAP Cloud Platform ABAP Environment
◦ Nicht unterstützte ABAP Funktionalität
 Nicht Cloud Ready ABAP Statements
◦ EXEC SQL, OPEN DATASET, CALL SCREEN, …
 Obsolete ABAP Statements
◦ MOVE, …
 Nicht unterstütze ABAP Technologien
◦ SAP Gui, Web Dynpro, BSP, …
ABAP in the Cloud
S
Modern ABAP
 SAP Cloud Platform ABAP Environment
◦ Whitelisted ABAP Objects und APIs
 400 ABAP Entwicklungsobjekte (Klassen, CDS Views, Data Elements, … )
 Liste wird mit jedem neuen Release erweitert
 Später werden auch Funktionalitäten wie Nummernkreise oder
Änderungsbelege hinzukommen
ABAP in the Cloud
S
Modern ABAPABAP in the Cloud
SAP Cloud Platform
ABAP Environment
• HTTP Services
• RESTful ABAP
• SAP Fiori
• Core Data Services
• Cloud optimized ABAP
Backend Systeme
• SAP S/4HANA Cloud
• SAP S/4HANA
• SAP ERP
• SAP NetWeaver AS
HTTP Systeme
Services
• Machine Learning
• IoT
• …
ADT
GIT
SAP HANA
S
Modern ABAPABAP in the Cloud – Links
https://blogs.sap.com/2018/09/04/sap-cloud-platform-abap-environment/
https://blogs.sap.com/2018/09/05/sap-cloud-platform-abap-environment-is-live/
https://sapinsider.wispubs.com/Assets/Articles/2018/September/SPI-Take-Your-ABAP-
Skills-to-the-Cloud
https://cloudplatform.sap.com/capabilities/product-info.SAP-Cloud-Platform-ABAP-
environment.4d0a6f95-42aa-4157-9932-d6014a68d825.html
S
Modern ABAP
ADT – ABAP Development Tools
Eclipse
T
Modern ABAPADT – ABAP Development Tools
 Moderne IDE
 Erweiterung zum SAP GUI
 native Editoren für Entwicklungsobjekte
 Inplace GUI – SE11
T
Modern ABAPADT – ABAP Development Tools
 Verschiede Views gleichzeitig
T
Modern ABAPADT – ABAP Development Tools
 Detach View – zB Editor auf 2. Monitor
T
Modern ABAPADT – ABAP Development Tools
 Qickfix – automatisierbare Codeanpassungen
T
Modern ABAPADT – Highlights
 CDS Views (DDL und DCL Sourcen)
 ABAP in the Cloud
 Flexible Anordnung von Views (zB Editoren,
Meldungen,…)
 Inplace GUI
 Quickfixes
 Refactoring / Renaming
 “Dark Theme”
 Plugins – ABAP Favorites, ABAP Continuous
Integration,…
T
Modern ABAPADT – Nachteile
 Noch nicht Standardsoftware in Unternehmen
(z.B.: lokaler Admin, Citrix, Softwarecenter,…)
 Debugger
 Batch Input Mappen sichtbare abspielen
(ja, das gibt´s noch!)
 Versionen und Updates Eclipse und ADT
T
Modern ABAPADT – Lessons Learned
 Java Version prüfen ( 32/64 )
 Eclipse IDE for Enterprise Java Developers – Java
EE
 Firewalls (Eclipse Proxy Settings)
 Java Version über eclipse.ini setzten
...
-vm
C:<..>JDK1.8binjavaw.exe
-vmargs
...
 IDE + JAVA auf USB Stick ;-)
T
Modern ABAPABAP CodeRetreat
 ABAP Code Retreat
◦ Founded & Supported by Damir Majer & Christian Drumm
• https://wiki.scn.sap.com/wiki/display/events/ABAP+CodeRetreat
T
Modern ABAPADT – Links
 https://wiki.scn.sap.com/wiki/display/events/ABAP+CodeRetreat
 https://tools.hana.ondemand.com/#abap
◦ ADT Info und Download
 https://marketplace.eclipse.org/category/free-tagging/abap
◦ Eclipse Plugins für ADT
T
Modern ABAP
Neu ABAP Sprachelemente und
Open SQL/ABAP SQL Erweiterungen
S
Modern ABAP
 ABAP Code
◦ Bessere Lesbarkeit
◦ Kompakt
◦ Einfach
◦ Intuitiver
◦ Modern
◦ Schöner
ABAP Sprachelemente
S
Modern ABAP
 NEW
 VALUE
 REF
 EXACT
 CONV
 CORRESPONDI
NG
 CAST
 REDUCE
 FILTER
 COND
 SWITCH
Befehle, Funktionen und Ausdrücke
 LINES
 LINE_EXISTS
 LINE_INDEX
 IS INSTANCE OF
 CONTAINS
 CONTAINS_ANY_OF
 CONTAINS_ANY_NOT_
OF
 MATCHES
 Table Expressions
◦ Chaining
◦ Default, Optional
 LOOP AT GROUP
 FOR GROUPS
 FILTER
 REDUCE
 SQL Expressions
 String Expressions
 Regular Expressions
S
Modern ABAPCode
Classical
Modern
S
Modern ABAP
 NEW
Debugging 
F6 executes: constructor
build_layout
set_table_for_first_display
Chaining im Debugger
Modern 
Modern 
F5 F7 F5 F7 F5 to enter
set_table_for_first_display
S
Modern ABAP
 Tabellenzugriff
Table Expressions
S
Modern ABAP
 Moderne SQL Syntax
◦ Komma getrennte Feldliste
◦ Hostvariablen mit @ escaped
◦ INTO Klausel am Ende vom SQL Kommando
◦ Expression enabled
◦ Strengere Syntaxprüfung
Open SQL / ABAP SQL
S
Modern ABAP
 Code Push Down
◦ Berechnungen
◦ Stringbearbeitung
◦ Konvertierungen
◦ Datum/Zeitberechnung
SQL Expressions
S
Modern ABAPnumerische Werte
SQL Funktion Beschreibung SQL CDS Buffer
ABS(arg) Absolutbetrag von arg. 7.50 7.40 
CEIL(arg) Kleinste ganzzahlige Zahl, die nicht kleiner als der Wert von arg ist. 7.50 7.40 
DIV(arg1, arg2) Ganzzahliger Anteil der Division von arg1 durch arg2. 7.50 7.40 
DIVISION(arg1, arg2, dec) Division von arg1 durch arg2. Das Ergebnis wird auf dec gerundet. 7.51 7.40
FLOOR(arg) Größte ganzzahlige Zahl, die nicht größer als der Wert von arg ist. 7.50 7.40 
MOD(arg1, arg2) Positiver oder negativer ganzzahliger Rest der Division von arg1 durch arg2. 7.50 7.40 
ROUND(arg, pos) Gerundeter Wert von arg. Falls pos größer 0 wird zur Position pos gerundet. 7.50 7.40
S
Modern ABAPZeichenketten
SQL Funktion Beschreibung SQL CDS Buffer
CONCAT( arg1, arg2 ) Verkettung der Zeichenketten in arg1 und arg2. Schließende Leerzeichen werden ignoriert. 7.50 7.40 
CONCAT_WITH_SPACE( arg1, arg2, spaces ) Verkettung der Zeichenketten in arg1 und arg2 wie mit CONCAT, jedoch getrennt mit spaces Leerzeichen. 7.51 7.50 
INSTR( arg, sub ) Position des ersten Vorkommens der Zeichenkette aus sub in arg. 7.51 7.50
LEFT( arg, len ) Zeichenkette der Länge len mit den len linken Zeichen von arg ohne Berücksichtigung der schließenden
Leerzeichen.
7.51 7.50
LENGTH( arg ) Anzahl der Zeichen in arg ohne Berücksichtigung möglicher schließender Leerzeichen. 7.50 7.50
LOWER( arg ) Zeichenkette der Länge arg, in der alle Groß- in Kleinbuchstaben konvertiert sind. 7.51 7.51
LPAD( arg, len, src ) Zeichenkette der Länge len mit dem rechtsbündigen Inhalt von arg ohne schließende Leerzeichen. 7.50 7.50
LTRIM( arg, char ) Zeichenkette mit dem Inhalt von arg, in dem alle schließenden Leerzeichen und führenden Zeichen
entfernt sind, die dem Zeichen in char entsprechen.
7.50 7.50
REPLACE( arg1, arg2, arg3 ) Zeichenkette arg1, in der unter Beachtung der Groß- und Kleinschreibung alle Vorkommen von arg2
durch den Inhalt von arg3 ersetzt sind.
7.50 7.40
RIGHT( arg, len ) Zeichenkette der Länge len mit den len rechten Zeichen von arg ohne Berücksichtigung der schließenden
Leerzeichen.
7.50 7.50
RPAD( arg, len, src ) Zeichenkette der Länge len mit dem linksbündigen Inhalt von arg ohne schließende Leerzeichen. 7.51 7.50
RTRIM( arg, char ) Zeichenkette mit dem Inhalt von arg, in dem alle schließenden Leerzeichen und schließenden Zeichen
entfernt sind, die dem Zeichen in char entsprechen.
7.50 7.50
SUBSTRING( arg, pos, len ) Teilfeld von arg ab der Position pos in der Länge len. 7.50 7.50 
UPPER( arg ) Zeichenkette der Länge arg, in der alle Klein- in Großbuchstaben konvertiert sind. 7.51 7.51
S
Modern ABAPKonvertierungsfunktionen & Coalesce
SQL Funktion Beschreibung SQL CDS
FLTP_TO_DEC( arg AS dtype ) Konvertierung von arg (Gleitpunktzahl) in eine gepackte Zahl. - 7.51
BINTOHEX( arg ) Konvertierung von arg (RAW) in eine Zeichenkette (CHAR). 7.52 7.50
HEXTOBIN( arg ) Konvertierung von arg (CHAR) in eine Bytekette (RAW). 7.52 7.50
UNIT_CONVERSION( p1 => a1, ... ) Konvertierung von Mengeneinheiten. - 7.40
CURRENCY_CONVERSION( p1 => a1, ... ) Konvertierung von Währungen. - 7.40
DECIMAL_SHIFT( p1 => a1, ... ) Dezimaltrennzeichen setzen. - 7.40
SQL Funktion Beschreibung SQL CDS Buffer
COALESCE( arg1, arg2, ... ) Wert des ersten Arguments, das nicht den Null-Wert hat.  7.40 
S
Modern ABAPDatums/Uhrzeitfunktionen
SQL Funktion Beschreibung SQL CDS
DATS_IS_VALID Stellt fest, ob ein Datum gültig ist 7.52 7.50
DATS_DAYS_BETWEEN Differenz zwischen zwei Datumsangaben 7.52 7.50
DATS_ADD_DAYS Addiert eine Anzahl von Tagen zu einem Datum 7.52 7.50
DATS_ADD_MONTHS Addiert eine Anzahl von Monaten zu einem Datum 7.52 7.50
TIMS_IS_VALID Stellt fest, ob eine Zeitangabe gültig ist 7.53 7.50
TSTMP_IS_VALID Stellt fest, ob ein Zeitstempel gültig ist (YYYYMMDDHHMMSS) 7.53 7.50
TSTMP_CURRENT_UTCTIMESTAMP Liefert einen aktuellen Zeitstempel 7.53 7.50
TSTMP_SECONDS_BETWEEN Berechnet die Differenz von zwei Zeitstempel 7.53 7.50
TSTMP_ADD_SECONDS Addiert eine Anzahl von Sekunden zu einem Zeitstempel 7.53 7.50
ABAP_SYSTEM_TIMEZONE Gibt die Systemzeitzone des ABAP Servers zurück 7.53 7.51
ABAP_USER_TIMEZONE Gibt die Benutzerzeitzone des Users vom ABAP Server zurück 7.53 7.51
TSTMP_TO_DATS Extrahiert aus einem Zeitstempel das Datum 7.53 7.51
TSTMP_TO_TIMS Extrahiert aus einem Zeitstempel die Uhrzeit 7.53 7.51
TSTMP_TO_DST Extrahier aus einem Zeitstempel die Sommerzeitmarkierung 7.53 7.51
DATS_TIMS_TO_TSTMP Erzeugt aus einem Datum und Uhrzeit einen Zeitstempel 7.53 7.51
S
Modern ABAP
 Concat
 CR/LF und Tab
String Expressions
S
Modern ABAP
 Embedded Expressions
String Expressions
S
Modern ABAP
 APLHA Konvertierung
String Expressions
S
Modern ABAP
 https://help.sap.com/doc/abapdocu_753_index_htm/7.53/en-US/index.htm?file=abennews.htm
ABAP und Open SQL/ABAP SQL
S
Modern ABAP
Object-Oriented Programming
P
Modern ABAP
 ABAP Objects – Aber richtig!
Nur statische Methoden IST NICHT ABAP Object/OOP
=> Wie eine FUNKTIONSGRUPPE mit FMs
Object-Oriented Programming
P
Modern ABAP
 ABAP Objects
◦ Instanzen - Datenkapselung
◦ Interfaces
◦ Abstrakten Klassen
◦ Vererbung
◦ Exceptions - Ausnahmeklassen
◦ Events
◦ => ADT Refactoring Support
Object-Oriented Programming
P
Modern ABAPABAP OO
 ABAP OO
◦ Videoaufzeichnung des Vortrags auf der
#sitVIE 2018 von Damir Majer
• https://youtu.be/UAe1EUYZZpw
Modern ABAPObject-Oriented Programming
https://open.sap.com/courses/java1
https://www.eventbrite.de/e/applied-abap-objects-mit-damir-majer-tickets-53966219415
https://help.sap.com/doc/abapdocu_753_index_htm/7.53/de-DE/index.htm?file=abenabap_objects_oview.htm
P
Modern ABAP
Obsolete ABAP Sprachelemente
S
Modern ABAP
 Modularisierungseinheiten
ON COMMIT / ON ROLLBACK
Obsolete ABAP Sprachelemente
FORM unterprogramm.
ENDFORM.
PERFORM unterprogramm.
FUNCTION <FM>
…
TABLES
S
Modern ABAP
 Systemfelder
Obsolete ABAP Sprachelemente
S
Modern ABAPObsolete ABAP Sprachelemente
LOOP AT SCREEN.
MODIFY SCREEN.
ENDLOOP.
* DATA screen TYPE screen.
LOOP AT SCREEN INTO DATA(screen).
MODIFY screen FROM screen.
ENDLOOP.
S
Modern ABAPObsolete ABAP Sprachelemente
IF e_parameter IS REQUESTED.
* ...
ENDIF.
IF e_parameter IS SUPPLIED.
* ...
ENDIF.
S
Modern ABAPObsolete ABAP Sprachelemente
CATCH SYSTEM-EXCEPTIONS exc1 = 1
exc2 = 2
OTHERS = 3.
...
ENDCATCH.
IF sy-subrc <> 0.
...
ENDIF.
S
Modern ABAPObsolete ABAP Sprachelemente
MOVE
REFRESH
RANGES
WITH HEADER LINE
OCCURS n
Tabellenoperationen mit impliziter Kopfzeile
LOOP AT itab.
READ/INSERT/APPEND/…
S
Modern ABAP
https://help.sap.com/doc/abapdocu_753_index_htm/7.53/de-DE/index.htm?file=abensyntax_obsolete.htm
Obsolete ABAP Sprachelemente
S
Modern ABAP
abapGit
und Open Source
T
Modern ABAP
 Git client for ABAP by Lars Hvam
◦ http://www.abapgit.org
◦ Paket <=> (online) Git Repository
 Erweitert SAP Versionierung
 Ermöglicht Austauch von SAP Entwicklungsobjekten
◦ Klassen, Tabellen, Strukturen, IDocs, …
 Aktuell DAS Transporttool für ABAP in the Cloud
◦ auch Migration
 Open Source!
abapGit und Open Source
T
Modern ABAP
 SAPlink
 abap2xlsx
 https://dotabap.org/
abapGit und Open Source
T
Modern ABAPabapGit BunKai
 abapGit BunKai
◦ Founded & Supported by 5 SAP Community Mitglieder
• https://wiki.scn.sap.com/wiki/display/events/abapGit+BunKai
T
Modern ABAP
https://github.com/larshp/abapGit
https://open.sap.com/courses/git1 - SAP Cloud Platform Version Control with Git
https://dotabap.org/
abapGit und Open Source
T
Modern ABAP
CDS Views
S
Modern ABAPABAP CDS Views
 ABAP CDS Views
◦ Next Generation zum Definieren von Views
◦ CDS beinhaltet
 DDL (Data Definition Language)
 DCL (Data Control Language)
◦ 100% in ABAP integriert
 ABAP Dictionary
 Transportmanagement
◦ Pflege ausschließlich über ABAP in Eclipse
◦ Zugriff via Open SQL
S
Modern ABAPABAP CDS Views
 ABAP CDS Views - Highlights
◦ View Hierarchien
◦ Eingebaute Funktionen
◦ Parameter
◦ Associations
◦ Annotations
◦ View Extensions
S
Modern ABAPCDS Views vs. Open SQL Expressions
• Re-Use Scenarien
• Views können verschachtelt werden
• CDS Features
• UNION, UNION ALL, Mengen bzw.
Währungs Umrechnungen
• Associations
• Berechtigungsprüfungen
• S/4HANA Programmiermodell
CDS Views Open SQL
• Einmalverwendungen
• FOR ALL ENTRIES
• Kein Eclipse
S
Modern ABAPABAP CDS Views
http://www.cadaxo.com/high-class-development/abap-cds-views-6-schritte-zum-verstaendnis/
http://www.cadaxo.com/high-class-development/webinar-abap-cds-views/
S
Modern ABAP
ABAP RESTful Programming Model
Modern ABAP
ABAP Platform ≥ 7.51ABAP Platform ≤ 7.50
SAP Cloud Platform ABAP
Environment 1808*
Klassische ABAP
Entwicklung
• Freestyle ABAP
Entwicklung
ABAP
Programmiermodell
für SAP FIORI
• Gateway Builder
• OData
• BOPF
• Core Data Services
ABAP Programmiermodelle
ABAP RESTful
Programmiermodell
(ABAP RPM)
• Business Service
• Core Data Services
• Verhaltensdefinition
*On-Premise kommt später
Modern ABAPABAP RESTful
 ABAP RESTful
◦ Für zukünftige Entwicklungen in S/4HANA, SAP Cloud ABAP
◦ CDS & ABAP
◦ Business Object
 Datenmodellierung mit CDS
 Verhaltensdefinition & Implementierung
 Managed / Unmanaged
S
Modern ABAP
Code Checks in SAP
Q
Modern ABAPSAP Code Inspector
 Statische Prüfungen mit dem Code Inspector
◦ Einzelne Objekte oder viele Objekte
◦ Namenskonventionen, Performancethemen, …
◦ Seit 7.52 auch Remote Checks möglich
Q
Modern ABAPabapOpenChecks
 Lars Hvam’s: abapOpenChecks
◦ Umfangreiche ergänzende Checks für den Code Inspector
 Aktuell bereits über 80 Checks
• https://blogs.sap.com/2015/03/08/abapopenchecks-open-source-checks-sap-code-inspector-atc
• https://github.com/larshp/abapOpenChecks
Q
Modern ABAPSQL Monitor
 Der SQL Monitor liefert Performance-Daten
◦ Welche SQL Operationen/Tabellenzugriffe treten am häufigsten
auf?
◦ Welche SQL Operationen/Tagellenzugriffe lesen oder schreiben
die meisten Einträge?
Q
Modern ABAPSQL Performance Tuning Workslist
 Die SQL Performance Tuning Worklist kombiniert
statische Checks (Code Inspector) mit Laufzeitdaten
(SQL Monitor)
◦ Liefert eine priorisierte Worklist für potentielle
Performanceverbesserungen
Q
Modern ABAPABAP Test Cockpit
 Das ABAP Test Cockpit verwendet u.a. CI Ergebnisse
◦ Kombiniert ABAP Code Inspector, ABAP Unit Tests, …
◦ Freigabeszenarien
Q
Modern ABAPABAP Call Monitor
 Der ABAP Call Monitor analysiert die Verwendungen
◦ Zeichnet die Aufrufe von Methoden, Funktionsbausteinen,
Unterprogrammen, Zeitpunkten, ...
◦ „Nachfolger“ von UPL (Solution Manager)
◦ Keine Performanceinformationen
• https://blogs.sap.com/2017/04/06/abap-call-monitor-scmon-analyze-usage-of-your-code/
Q
Modern ABAP
 Weitere Analysetools
◦ SQL Trace, Performance Trace
◦ Laufzeitanalyse
◦ Memory Inspector
Analysetools
• https://blogs.sap.com/2012/03/06/getting-started-with-abap-testing-and-troubleshooting
Q
Modern ABAP
Clean Code
P
Modern ABAP
“Any fool can write code that a computer can
understand. Good programmers write code that
humans can understand.”
Martin Fowler, Pionier der agilen Softwareentwicklung
Clean Code
P
Modern ABAPCode Qualität vs. Aufwand pro Feature
Code
Qualität
Aufwand pro Feature
P
Modern ABAP
 Verständlicher Code ist enorm wichtig
◦ Überwiegende Kosten für Software sind
Wartungskosten
◦ Code wird daher überwiegend gelesen
◦ Je unverständlicher der Code, desto größer die Gefahr,
dass er nicht ausreichend verstanden wird
Code wird meist gelesen
P
Modern ABAPDRY, KISS & YAGNI
 Die 3 wichtigsten Clean Code Prinzipien sind
◦ DRY - Dont‘ Repeat Yourself
◦ KISS - Keep it simple, stupid
◦ YAGNI - You Ain‘t Gonna Need it
P
Modern ABAP
DATA PARTNER_INVOICES TYPE TABLE OF …
DATA DAYS_SINCE_CREATION TYPE …
DELIVERY_DATE->ADDDAYSTO( 5 )
DELIVERY_DATE->INCREASEBYDAYS( 5 )
Zweckbeschreibende Namen verwenden
 Namen sollen den Zweck beschreiben
◦ Klingt einfacher, als es ist
◦ Gute Namen zu finden braucht Zeit, spart später aber Zeit
◦ Namenslängen ausnutzen
DATA D TYPE …
DATA LS_DATA TYPE …
DELIVERY_DATE->ADD( 5 ).
Solche Namen enthüllen nichts
Namen beschreiben den Zweck,
Code wird verständlicher
P
Modern ABAPErklärung durch Code
 Erklärung durch Coding
◦ Ein Beispiel, wie mittels Coding erklärt wird
* emplyoee is allowed?
IF EMPLOYEE->AGE > 65 AND
EMPLOYEE->FLAGS = ABAP_TRUE AND
EMPLOYEE->ISLOCKED <> ABAP_TRUE.
…
ENDIF.
IF EMPLOYEE->ISALLOWED( ) = ABAP_TRUE.
…
ENDIF.
P
Modern ABAPClean Code – von Robert C. Martin „Uncle Bob“
P
ISBN 978-3-8266-5548-7
Modern ABAP
Refactoring
T
Modern ABAPZiele von Refactoring
 Ziele von Refactoring
◦ Code wird verständlicher
◦ Fehlersuche wird beschleunigt
◦ Code wird leichter erweiterbar
◦ Design des Software-Systems wird verbessert
T
Modern ABAPRefactoring
“We are doing this, to be able to deliver more
functionality more quickly.”
Martin Fowler, Pionier der agilen Softwareentwicklung
T
Modern ABAPRefactoring Arten
 Refactoring Arten
◦ Litter-Pickup
◦ Comprehension Refactoring
◦ Preparatory Refactoring
◦ Planned Refactoring
◦ TDD Refactoring
◦ Long-Term Refactoring
T
Modern ABAPRefactoring SE80 vs. ADT
Refactoring SE80 Refactoring ADT
• Umbenennung von Objekten
(Klassen, Methoden, … )
• Methoden extrahieren
• Konstanten extrahieren
• Variablen extrahieren
• Sichtbarkeit von Attributen
ändern
• Attribute von Subklassen in
Superklassen verschieben
• …
T
Modern ABAP
Coole Refactoring Demo
T
Modern ABAP
ABAP Units
TEST-SEAM / TEST-INJECTION
Modern ABAPABAP Units – Test Seams
 Ziel von Unit Tests
◦ Probleme/Bugs im Developmentprozess so früh wie möglich
entdecken
◦ Probleme/Bugs nach Upgrades etc. rasch entdecken
◦ Reduktion langer Debugging Sessions
◦ Reduziert die „Hemmschwelle“ schlechtes Coding zu optmieren -
> Clean Code!
Modern ABAPABAP Units – Test Seams
 Refactoring ohne Unittests?
 Legacy Code testbar machen  Refactoring 
=> TEST-SEAM / TEST-INJECTION
Modern ABAPABAP Units – Test Seams
Produktiver Code
…
CLEAR partner_name.
TEST-SEAM but000_select.
SELECT SINGLE name_last
FROM but000
WHERE partner = @i_partner
INTO @partner_name.
END-TEST-SEAM.
IF partner_name…
…
Test Class
…
CLASS ltc_tests DEFINITION FOR
TESTING .
...
METHOD setup.
TEST-INJECTION but000_select.
partner_name = 'Bigl'.
END-TEST-INJECTION.
ENDMETHOD.
…
Modern ABAPABAP Units – Test Seams
Normale Ausführung
…
CLEAR partner_name.
SELECT SINGLE name_last
FROM but000
WHERE partner = @i_partner
INTO @partner_name.
IF partner_name…
…
ABAPUnit Test
…
CLEAR partner_name.
partner_name = 'Bigl’.
IF partner_name…
…
Modern ABAP
http://www.cadaxo.com/high-class-development/webinar-tdd-mit-abap-units/
https://help.sap.com/doc/abapdocu_750_index_htm/7.50/de-DE/abentest_seams.htm
https://help.sap.com/doc/abapdocu_750_index_htm/7.50/de-DE/abenabap_unit.htm
https://open.sap.com/courses/wtc1 - Writing Testable Code for ABAP
ABAP Units – Test Seams
Modern ABAPRefactoring – von Martin Fowler
ISBN 978-0134757599
T
• https://refactoring.com/
Modern ABAP
Entwurfsmuster
P
Modern ABAP
 Entwurfsmuster
◦ Sind bewährte Lösungen für wiederkehrende Aufgabenstellungen
in der Softwarearchitektur
◦ Bekannte Arten sind z.B.
 Erzeugungsmuster (Factory, Singleton, … )
 Strukturmuster (Facade)
 Verhaltensmuster
Entwurfsmuster
P
Modern ABAPEntwurfsmuster
• https://de.wikipedia.org/wiki/Entwurfsmuster
P
Modern ABAPDesign Patterns in ABAP – von Kerem Koseoglu
ISBN 978-1-4932-1465-5
P
Modern ABAP
Was noch nicht erwähnt wurde
Modern ABAP
 Weitere Themen zu Modern ABAP
◦ Logpoint/Checkpoints
◦ AMDB / SQL Script / CDS Table Function
◦ Dynamic Develpment
◦ ABAPDoc
◦ JSON, XML, Transformationen/XSLT
◦ Debugging
◦ Pakete
◦ ABAP Channel, ABAP Daemon
◦ bgRFC, qRFC
◦ Regular Expressions
◦ Gateway / oData
◦ Agil, Scrum, Kanban, eXtreme Programming
◦ …
Modern ABAP
31. Mai 2019 10:00 – Thema: TBD
Nächstes Webinar
Modern ABAPUnsere vergangenen Webinare
http://www.cadaxo.com/blog/
Modern ABAPIf you want to stay in touch …
https://twitter.com/domibiglsap
https://www.linkedin.com/in/dominik-bigl-9b98b68b
https://www.xing.com/profile/dominik_bigl
dominik.bigl@cadaxo.com
See you again!
Thank you for participating!
https://twitter.com/foessleitnerj
https://www.linkedin.com/in/johann-fößleitner-a9851b2a
https://www.xing.com/profile/johann_foessleitner
johann.foessleitner@cadaxo.com

Weitere ähnliche Inhalte

Was ist angesagt?

Webinar - SAP BOPF
Webinar - SAP BOPFWebinar - SAP BOPF
Webinar - SAP BOPF
Cadaxo GmbH
 
Webinar SAP/ABAP und Microsoft
Webinar  SAP/ABAP und MicrosoftWebinar  SAP/ABAP und Microsoft
Webinar SAP/ABAP und Microsoft
Cadaxo GmbH
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS Views
Cadaxo GmbH
 
Webinar - SAP Gateway
Webinar  - SAP GatewayWebinar  - SAP Gateway
Webinar - SAP Gateway
Cadaxo GmbH
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Cadaxo GmbH
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
Cadaxo GmbH
 
Clean code in ABAP
Clean code in ABAPClean code in ABAP
Clean code in ABAP
Cadaxo GmbH
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
Ulrich Gerkmann-Bartels
 
Zertifizierte SAP-Schnittstelle mit APICONNECT
Zertifizierte SAP-Schnittstelle mit APICONNECTZertifizierte SAP-Schnittstelle mit APICONNECT
Zertifizierte SAP-Schnittstelle mit APICONNECT
APICON GmbH
 
beas9.0 patch3 präsentation deutsch
beas9.0 patch3 präsentation deutschbeas9.0 patch3 präsentation deutsch
beas9.0 patch3 präsentation deutsch
beasgroup
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Railsgearwheeldotnet
 

Was ist angesagt? (13)

Webinar - SAP BOPF
Webinar - SAP BOPFWebinar - SAP BOPF
Webinar - SAP BOPF
 
Webinar SAP/ABAP und Microsoft
Webinar  SAP/ABAP und MicrosoftWebinar  SAP/ABAP und Microsoft
Webinar SAP/ABAP und Microsoft
 
Webinar - ABAP CDS Views
Webinar - ABAP CDS ViewsWebinar - ABAP CDS Views
Webinar - ABAP CDS Views
 
Webinar - SAP Gateway
Webinar  - SAP GatewayWebinar  - SAP Gateway
Webinar - SAP Gateway
 
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 ReleaseinformationenWebinar ABAP 7.40 sp5/sp8 Releaseinformationen
Webinar ABAP 7.40 sp5/sp8 Releaseinformationen
 
TDD mit ABAP Units
TDD mit ABAP UnitsTDD mit ABAP Units
TDD mit ABAP Units
 
Clean code in ABAP
Clean code in ABAPClean code in ABAP
Clean code in ABAP
 
SaadatLebenslauf
SaadatLebenslaufSaadatLebenslauf
SaadatLebenslauf
 
ADF Software Factory
ADF Software FactoryADF Software Factory
ADF Software Factory
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
 
Zertifizierte SAP-Schnittstelle mit APICONNECT
Zertifizierte SAP-Schnittstelle mit APICONNECTZertifizierte SAP-Schnittstelle mit APICONNECT
Zertifizierte SAP-Schnittstelle mit APICONNECT
 
beas9.0 patch3 präsentation deutsch
beas9.0 patch3 präsentation deutschbeas9.0 patch3 präsentation deutsch
beas9.0 patch3 präsentation deutsch
 
Liquid - Templating on Rails
Liquid - Templating on RailsLiquid - Templating on Rails
Liquid - Templating on Rails
 

Ähnlich wie Webinar Modern ABAP

Renderscript in Android 3.x
Renderscript in Android 3.xRenderscript in Android 3.x
Renderscript in Android 3.x
Dominik Helleberg
 
REST in Peace - Mit ORDS, Node.JS, ADF, Java oder OSB?
REST in Peace  - Mit ORDS, Node.JS, ADF, Java oder OSB?REST in Peace  - Mit ORDS, Node.JS, ADF, Java oder OSB?
REST in Peace - Mit ORDS, Node.JS, ADF, Java oder OSB?
enpit GmbH & Co. KG
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Karin Patenge
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Gregor Biswanger
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
Torsten Kleiber
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der Entwickler
Wolfgang Weigend
 
Cv wagener harald_20170830
Cv wagener harald_20170830Cv wagener harald_20170830
Cv wagener harald_20170830
Harald Wagener
 
Gobas q.trans - modellgetriebene Softwareentwicklung mit SAP® ABAP OO
Gobas q.trans - modellgetriebene Softwareentwicklung mit SAP® ABAP OOGobas q.trans - modellgetriebene Softwareentwicklung mit SAP® ABAP OO
Gobas q.trans - modellgetriebene Softwareentwicklung mit SAP® ABAP OO
Gobas GmbH
 
Drupal 7 Einblick und Ausblick
Drupal 7 Einblick und AusblickDrupal 7 Einblick und Ausblick
Drupal 7 Einblick und Ausblick
Amazee Labs
 
Tune up your APEX
Tune up your APEXTune up your APEX
Tune up your APEX
MT AG
 
APEX 5.0, und sonst?
APEX 5.0, und sonst?APEX 5.0, und sonst?
APEX 5.0, und sonst?
Niels de Bruijn
 
Einfacher bauen
Einfacher bauenEinfacher bauen
Einfacher bauen
johofer
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
Karin Patenge
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
Carsten Czarski
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
oraclebudb
 
SCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - Winterberg
SCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - WinterbergSCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - Winterberg
SCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - Winterberg
OPITZ CONSULTING Deutschland
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On Rails
Jonathan Weiss
 
OSMC 2012 | Performance graphing mit inGraph by Eric Lippmann
OSMC 2012 | Performance graphing mit inGraph by Eric LippmannOSMC 2012 | Performance graphing mit inGraph by Eric Lippmann
OSMC 2012 | Performance graphing mit inGraph by Eric Lippmann
NETWAYS
 
PureSQL APEX Connect
PureSQL APEX ConnectPureSQL APEX Connect
PureSQL APEX Connect
Trivadis
 

Ähnlich wie Webinar Modern ABAP (20)

Renderscript in Android 3.x
Renderscript in Android 3.xRenderscript in Android 3.x
Renderscript in Android 3.x
 
REST in Peace - Mit ORDS, Node.JS, ADF, Java oder OSB?
REST in Peace  - Mit ORDS, Node.JS, ADF, Java oder OSB?REST in Peace  - Mit ORDS, Node.JS, ADF, Java oder OSB?
REST in Peace - Mit ORDS, Node.JS, ADF, Java oder OSB?
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET CoreHands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
Hands-on Workshop: API-Dokumentation mit OpenAPI / Swagger in ASP.NET Core
 
Forms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and OperationsForms and Reports 12c - Processes and Automation in Development and Operations
Forms and Reports 12c - Processes and Automation in Development and Operations
 
Article - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der EntwicklerArticle - JDK 8 im Fokus der Entwickler
Article - JDK 8 im Fokus der Entwickler
 
Cv wagener harald_20170830
Cv wagener harald_20170830Cv wagener harald_20170830
Cv wagener harald_20170830
 
Gobas q.trans - modellgetriebene Softwareentwicklung mit SAP® ABAP OO
Gobas q.trans - modellgetriebene Softwareentwicklung mit SAP® ABAP OOGobas q.trans - modellgetriebene Softwareentwicklung mit SAP® ABAP OO
Gobas q.trans - modellgetriebene Softwareentwicklung mit SAP® ABAP OO
 
Drupal 7 Einblick und Ausblick
Drupal 7 Einblick und AusblickDrupal 7 Einblick und Ausblick
Drupal 7 Einblick und Ausblick
 
Tune up your APEX
Tune up your APEXTune up your APEX
Tune up your APEX
 
APEX 5.0, und sonst?
APEX 5.0, und sonst?APEX 5.0, und sonst?
APEX 5.0, und sonst?
 
Ruby on Rails SS09 04
Ruby on Rails SS09 04Ruby on Rails SS09 04
Ruby on Rails SS09 04
 
Einfacher bauen
Einfacher bauenEinfacher bauen
Einfacher bauen
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
 
SCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - Winterberg
SCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - WinterbergSCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - Winterberg
SCA und SDO: Konzepte und Design - OPITZ CONSULTING - Maier - Winterberg
 
An Introduction to Ruby On Rails
An Introduction to Ruby On RailsAn Introduction to Ruby On Rails
An Introduction to Ruby On Rails
 
OSMC 2012 | Performance graphing mit inGraph by Eric Lippmann
OSMC 2012 | Performance graphing mit inGraph by Eric LippmannOSMC 2012 | Performance graphing mit inGraph by Eric Lippmann
OSMC 2012 | Performance graphing mit inGraph by Eric Lippmann
 
PureSQL APEX Connect
PureSQL APEX ConnectPureSQL APEX Connect
PureSQL APEX Connect
 

Mehr von Cadaxo GmbH

ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - RefactoringABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
Cadaxo GmbH
 
SQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - OverviewSQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - Overview
Cadaxo GmbH
 
SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0
Cadaxo GmbH
 
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im DetailCadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo GmbH
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functions
Cadaxo GmbH
 
Abap 7.02 new features - neue stringfunktionen
Abap 7.02   new features - neue stringfunktionenAbap 7.02   new features - neue stringfunktionen
Abap 7.02 new features - neue stringfunktionen
Cadaxo GmbH
 
Funktionstests in SAP
Funktionstests in SAPFunktionstests in SAP
Funktionstests in SAP
Cadaxo GmbH
 

Mehr von Cadaxo GmbH (7)

ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - RefactoringABAP CodeRetreat 20.5.2017 Vienna - Refactoring
ABAP CodeRetreat 20.5.2017 Vienna - Refactoring
 
SQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - OverviewSQL Cockpit 3.1 - Overview
SQL Cockpit 3.1 - Overview
 
SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0SQL Cockpit - Releasenotes 3.0
SQL Cockpit - Releasenotes 3.0
 
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im DetailCadaxo SQL Cockpit 2.0 - Neue Features im Detail
Cadaxo SQL Cockpit 2.0 - Neue Features im Detail
 
Abap 7 02 new features - new string functions
Abap 7 02   new features - new string functionsAbap 7 02   new features - new string functions
Abap 7 02 new features - new string functions
 
Abap 7.02 new features - neue stringfunktionen
Abap 7.02   new features - neue stringfunktionenAbap 7.02   new features - neue stringfunktionen
Abap 7.02 new features - neue stringfunktionen
 
Funktionstests in SAP
Funktionstests in SAPFunktionstests in SAP
Funktionstests in SAP
 

Webinar Modern ABAP

  • 1. Modern ABAP Modern ABAP Webinar, 29.3.2019, 10:00 Uhr
  • 2. Modern ABAPDomi Domi Bigl Senior Consultant at Cadaxo eMail: dominik.bigl@cadaxo.com Twitter: @DomiBiglSAP Beratungsschwerpunkte • Konzeption & Management von Entwicklungsprojekten • Qualitymanagement & Performanceoptimierung • ABAP Units • SAP Fiori, SAP UI5
  • 3. Modern ABAPFöß Johann Fößleitner Senior Consultant at Cadaxo eMail: johann.foessleitner@cadaxo.com Twitter: @foessleitnerj Beratungsschwerpunkte • Konzeption & Management von Entwicklungsprojekten • Qualitymanagement & Performanceoptimierung • Clean Code • S/4HANA Custom Development
  • 4. Modern ABAPAgenda  ABAP Sprachversionen  SAP Cloud Platform ABAP Environment  ABAP Development Tools  ABAP Sprachelemente und SQL Expressions  OOP  Obsolete Sprachelemente  abapGit  CDS Views  ABAP RESTful Programming Model  Code Checks in SAP  Clean Code  Refactoring  ABAP Unit / Testseams  Entwurfsmuster
  • 6. Modern ABAP  Warum Modern ABAP? ◦ Performance und Produktivität erhöhen ◦ Stabilere und wartbarere Entwicklungen  Kürzere Entwicklungszeiten / Fehlerbehebungen ◦ Reduzierter & vereinfachter Code Warum Modern ABAP
  • 8. Modern ABAPABAP to the Future ISBN 978-1-4932-1762-5 TS Q P
  • 10. Modern ABAP  ABAP Sprachversionen ◦ X Standard ABAP ◦ 2 ABAP for Key Users ◦ 5 ABAP for SAP Cloud Platform (ab 7.53) ABAP Sprachversionen S
  • 11. Modern ABAP  Freigegebene Objekte ◦ CDS Views ◦ Dictionary Objekte ◦ Enhancements ◦ Messages Klassen ◦ Source Code Library ABAP for Key Users (S/4HANA Extensibility) S
  • 12. Modern ABAPABAP for Key User – Kommandos & SY-Felder S SY SY-DBCNT SY-FDPOS SY-INDEX SY-SUBRC SY-TABIX ABAP Befehle APPEND CONCATENATE ENDCASE FIND RAISE SPLIT ASSIGN CONDENSE ENDDO GET READ TRANSLATE CASE CONSTANTS ENDIF IF REPLACE TRY CATCH CONTINUE ENDLOOP IMPORT RESUME TYPES CHECK CONVERT ENDSELECT INSERT RETRY UNASSIGN CLEANUP DATA ENDTRY LOOP RETURN WHEN CLEAR DELETE ENDWHILE MESSAGE SELECT WHILE COLLECT DO EXIT MODIFY SET CONCATENATE ELSE EXPORT MOVE-CORRESP. SHIFT CONDENSE ELSEIF FIELD-SYMBOLS OVERLAY SORT
  • 13. Modern ABAP  Syntaxprüfung für ABAP Versionen ◦ Report DEMO_ABAP_VERSIONS  Paket enthält viele gute Modern ABAP Beispiele ABAP Sprachversionen - Syntaxprüfung Demo S
  • 14. Modern ABAP SAP Cloud Platform ABAP Environment S
  • 15. Modern ABAP  SAP Cloud Platform ABAP Environment ◦ Nicht unterstützte ABAP Funktionalität  Nicht Cloud Ready ABAP Statements ◦ EXEC SQL, OPEN DATASET, CALL SCREEN, …  Obsolete ABAP Statements ◦ MOVE, …  Nicht unterstütze ABAP Technologien ◦ SAP Gui, Web Dynpro, BSP, … ABAP in the Cloud S
  • 16. Modern ABAP  SAP Cloud Platform ABAP Environment ◦ Whitelisted ABAP Objects und APIs  400 ABAP Entwicklungsobjekte (Klassen, CDS Views, Data Elements, … )  Liste wird mit jedem neuen Release erweitert  Später werden auch Funktionalitäten wie Nummernkreise oder Änderungsbelege hinzukommen ABAP in the Cloud S
  • 17. Modern ABAPABAP in the Cloud SAP Cloud Platform ABAP Environment • HTTP Services • RESTful ABAP • SAP Fiori • Core Data Services • Cloud optimized ABAP Backend Systeme • SAP S/4HANA Cloud • SAP S/4HANA • SAP ERP • SAP NetWeaver AS HTTP Systeme Services • Machine Learning • IoT • … ADT GIT SAP HANA S
  • 18. Modern ABAPABAP in the Cloud – Links https://blogs.sap.com/2018/09/04/sap-cloud-platform-abap-environment/ https://blogs.sap.com/2018/09/05/sap-cloud-platform-abap-environment-is-live/ https://sapinsider.wispubs.com/Assets/Articles/2018/September/SPI-Take-Your-ABAP- Skills-to-the-Cloud https://cloudplatform.sap.com/capabilities/product-info.SAP-Cloud-Platform-ABAP- environment.4d0a6f95-42aa-4157-9932-d6014a68d825.html S
  • 19. Modern ABAP ADT – ABAP Development Tools Eclipse T
  • 20. Modern ABAPADT – ABAP Development Tools  Moderne IDE  Erweiterung zum SAP GUI  native Editoren für Entwicklungsobjekte  Inplace GUI – SE11 T
  • 21. Modern ABAPADT – ABAP Development Tools  Verschiede Views gleichzeitig T
  • 22. Modern ABAPADT – ABAP Development Tools  Detach View – zB Editor auf 2. Monitor T
  • 23. Modern ABAPADT – ABAP Development Tools  Qickfix – automatisierbare Codeanpassungen T
  • 24. Modern ABAPADT – Highlights  CDS Views (DDL und DCL Sourcen)  ABAP in the Cloud  Flexible Anordnung von Views (zB Editoren, Meldungen,…)  Inplace GUI  Quickfixes  Refactoring / Renaming  “Dark Theme”  Plugins – ABAP Favorites, ABAP Continuous Integration,… T
  • 25. Modern ABAPADT – Nachteile  Noch nicht Standardsoftware in Unternehmen (z.B.: lokaler Admin, Citrix, Softwarecenter,…)  Debugger  Batch Input Mappen sichtbare abspielen (ja, das gibt´s noch!)  Versionen und Updates Eclipse und ADT T
  • 26. Modern ABAPADT – Lessons Learned  Java Version prüfen ( 32/64 )  Eclipse IDE for Enterprise Java Developers – Java EE  Firewalls (Eclipse Proxy Settings)  Java Version über eclipse.ini setzten ... -vm C:<..>JDK1.8binjavaw.exe -vmargs ...  IDE + JAVA auf USB Stick ;-) T
  • 27. Modern ABAPABAP CodeRetreat  ABAP Code Retreat ◦ Founded & Supported by Damir Majer & Christian Drumm • https://wiki.scn.sap.com/wiki/display/events/ABAP+CodeRetreat T
  • 28. Modern ABAPADT – Links  https://wiki.scn.sap.com/wiki/display/events/ABAP+CodeRetreat  https://tools.hana.ondemand.com/#abap ◦ ADT Info und Download  https://marketplace.eclipse.org/category/free-tagging/abap ◦ Eclipse Plugins für ADT T
  • 29. Modern ABAP Neu ABAP Sprachelemente und Open SQL/ABAP SQL Erweiterungen S
  • 30. Modern ABAP  ABAP Code ◦ Bessere Lesbarkeit ◦ Kompakt ◦ Einfach ◦ Intuitiver ◦ Modern ◦ Schöner ABAP Sprachelemente S
  • 31. Modern ABAP  NEW  VALUE  REF  EXACT  CONV  CORRESPONDI NG  CAST  REDUCE  FILTER  COND  SWITCH Befehle, Funktionen und Ausdrücke  LINES  LINE_EXISTS  LINE_INDEX  IS INSTANCE OF  CONTAINS  CONTAINS_ANY_OF  CONTAINS_ANY_NOT_ OF  MATCHES  Table Expressions ◦ Chaining ◦ Default, Optional  LOOP AT GROUP  FOR GROUPS  FILTER  REDUCE  SQL Expressions  String Expressions  Regular Expressions S
  • 33. Modern ABAP  NEW Debugging  F6 executes: constructor build_layout set_table_for_first_display Chaining im Debugger Modern  Modern  F5 F7 F5 F7 F5 to enter set_table_for_first_display S
  • 35. Modern ABAP  Moderne SQL Syntax ◦ Komma getrennte Feldliste ◦ Hostvariablen mit @ escaped ◦ INTO Klausel am Ende vom SQL Kommando ◦ Expression enabled ◦ Strengere Syntaxprüfung Open SQL / ABAP SQL S
  • 36. Modern ABAP  Code Push Down ◦ Berechnungen ◦ Stringbearbeitung ◦ Konvertierungen ◦ Datum/Zeitberechnung SQL Expressions S
  • 37. Modern ABAPnumerische Werte SQL Funktion Beschreibung SQL CDS Buffer ABS(arg) Absolutbetrag von arg. 7.50 7.40  CEIL(arg) Kleinste ganzzahlige Zahl, die nicht kleiner als der Wert von arg ist. 7.50 7.40  DIV(arg1, arg2) Ganzzahliger Anteil der Division von arg1 durch arg2. 7.50 7.40  DIVISION(arg1, arg2, dec) Division von arg1 durch arg2. Das Ergebnis wird auf dec gerundet. 7.51 7.40 FLOOR(arg) Größte ganzzahlige Zahl, die nicht größer als der Wert von arg ist. 7.50 7.40  MOD(arg1, arg2) Positiver oder negativer ganzzahliger Rest der Division von arg1 durch arg2. 7.50 7.40  ROUND(arg, pos) Gerundeter Wert von arg. Falls pos größer 0 wird zur Position pos gerundet. 7.50 7.40 S
  • 38. Modern ABAPZeichenketten SQL Funktion Beschreibung SQL CDS Buffer CONCAT( arg1, arg2 ) Verkettung der Zeichenketten in arg1 und arg2. Schließende Leerzeichen werden ignoriert. 7.50 7.40  CONCAT_WITH_SPACE( arg1, arg2, spaces ) Verkettung der Zeichenketten in arg1 und arg2 wie mit CONCAT, jedoch getrennt mit spaces Leerzeichen. 7.51 7.50  INSTR( arg, sub ) Position des ersten Vorkommens der Zeichenkette aus sub in arg. 7.51 7.50 LEFT( arg, len ) Zeichenkette der Länge len mit den len linken Zeichen von arg ohne Berücksichtigung der schließenden Leerzeichen. 7.51 7.50 LENGTH( arg ) Anzahl der Zeichen in arg ohne Berücksichtigung möglicher schließender Leerzeichen. 7.50 7.50 LOWER( arg ) Zeichenkette der Länge arg, in der alle Groß- in Kleinbuchstaben konvertiert sind. 7.51 7.51 LPAD( arg, len, src ) Zeichenkette der Länge len mit dem rechtsbündigen Inhalt von arg ohne schließende Leerzeichen. 7.50 7.50 LTRIM( arg, char ) Zeichenkette mit dem Inhalt von arg, in dem alle schließenden Leerzeichen und führenden Zeichen entfernt sind, die dem Zeichen in char entsprechen. 7.50 7.50 REPLACE( arg1, arg2, arg3 ) Zeichenkette arg1, in der unter Beachtung der Groß- und Kleinschreibung alle Vorkommen von arg2 durch den Inhalt von arg3 ersetzt sind. 7.50 7.40 RIGHT( arg, len ) Zeichenkette der Länge len mit den len rechten Zeichen von arg ohne Berücksichtigung der schließenden Leerzeichen. 7.50 7.50 RPAD( arg, len, src ) Zeichenkette der Länge len mit dem linksbündigen Inhalt von arg ohne schließende Leerzeichen. 7.51 7.50 RTRIM( arg, char ) Zeichenkette mit dem Inhalt von arg, in dem alle schließenden Leerzeichen und schließenden Zeichen entfernt sind, die dem Zeichen in char entsprechen. 7.50 7.50 SUBSTRING( arg, pos, len ) Teilfeld von arg ab der Position pos in der Länge len. 7.50 7.50  UPPER( arg ) Zeichenkette der Länge arg, in der alle Klein- in Großbuchstaben konvertiert sind. 7.51 7.51 S
  • 39. Modern ABAPKonvertierungsfunktionen & Coalesce SQL Funktion Beschreibung SQL CDS FLTP_TO_DEC( arg AS dtype ) Konvertierung von arg (Gleitpunktzahl) in eine gepackte Zahl. - 7.51 BINTOHEX( arg ) Konvertierung von arg (RAW) in eine Zeichenkette (CHAR). 7.52 7.50 HEXTOBIN( arg ) Konvertierung von arg (CHAR) in eine Bytekette (RAW). 7.52 7.50 UNIT_CONVERSION( p1 => a1, ... ) Konvertierung von Mengeneinheiten. - 7.40 CURRENCY_CONVERSION( p1 => a1, ... ) Konvertierung von Währungen. - 7.40 DECIMAL_SHIFT( p1 => a1, ... ) Dezimaltrennzeichen setzen. - 7.40 SQL Funktion Beschreibung SQL CDS Buffer COALESCE( arg1, arg2, ... ) Wert des ersten Arguments, das nicht den Null-Wert hat.  7.40  S
  • 40. Modern ABAPDatums/Uhrzeitfunktionen SQL Funktion Beschreibung SQL CDS DATS_IS_VALID Stellt fest, ob ein Datum gültig ist 7.52 7.50 DATS_DAYS_BETWEEN Differenz zwischen zwei Datumsangaben 7.52 7.50 DATS_ADD_DAYS Addiert eine Anzahl von Tagen zu einem Datum 7.52 7.50 DATS_ADD_MONTHS Addiert eine Anzahl von Monaten zu einem Datum 7.52 7.50 TIMS_IS_VALID Stellt fest, ob eine Zeitangabe gültig ist 7.53 7.50 TSTMP_IS_VALID Stellt fest, ob ein Zeitstempel gültig ist (YYYYMMDDHHMMSS) 7.53 7.50 TSTMP_CURRENT_UTCTIMESTAMP Liefert einen aktuellen Zeitstempel 7.53 7.50 TSTMP_SECONDS_BETWEEN Berechnet die Differenz von zwei Zeitstempel 7.53 7.50 TSTMP_ADD_SECONDS Addiert eine Anzahl von Sekunden zu einem Zeitstempel 7.53 7.50 ABAP_SYSTEM_TIMEZONE Gibt die Systemzeitzone des ABAP Servers zurück 7.53 7.51 ABAP_USER_TIMEZONE Gibt die Benutzerzeitzone des Users vom ABAP Server zurück 7.53 7.51 TSTMP_TO_DATS Extrahiert aus einem Zeitstempel das Datum 7.53 7.51 TSTMP_TO_TIMS Extrahiert aus einem Zeitstempel die Uhrzeit 7.53 7.51 TSTMP_TO_DST Extrahier aus einem Zeitstempel die Sommerzeitmarkierung 7.53 7.51 DATS_TIMS_TO_TSTMP Erzeugt aus einem Datum und Uhrzeit einen Zeitstempel 7.53 7.51 S
  • 41. Modern ABAP  Concat  CR/LF und Tab String Expressions S
  • 42. Modern ABAP  Embedded Expressions String Expressions S
  • 43. Modern ABAP  APLHA Konvertierung String Expressions S
  • 46. Modern ABAP  ABAP Objects – Aber richtig! Nur statische Methoden IST NICHT ABAP Object/OOP => Wie eine FUNKTIONSGRUPPE mit FMs Object-Oriented Programming P
  • 47. Modern ABAP  ABAP Objects ◦ Instanzen - Datenkapselung ◦ Interfaces ◦ Abstrakten Klassen ◦ Vererbung ◦ Exceptions - Ausnahmeklassen ◦ Events ◦ => ADT Refactoring Support Object-Oriented Programming P
  • 48. Modern ABAPABAP OO  ABAP OO ◦ Videoaufzeichnung des Vortrags auf der #sitVIE 2018 von Damir Majer • https://youtu.be/UAe1EUYZZpw
  • 50. Modern ABAP Obsolete ABAP Sprachelemente S
  • 51. Modern ABAP  Modularisierungseinheiten ON COMMIT / ON ROLLBACK Obsolete ABAP Sprachelemente FORM unterprogramm. ENDFORM. PERFORM unterprogramm. FUNCTION <FM> … TABLES S
  • 52. Modern ABAP  Systemfelder Obsolete ABAP Sprachelemente S
  • 53. Modern ABAPObsolete ABAP Sprachelemente LOOP AT SCREEN. MODIFY SCREEN. ENDLOOP. * DATA screen TYPE screen. LOOP AT SCREEN INTO DATA(screen). MODIFY screen FROM screen. ENDLOOP. S
  • 54. Modern ABAPObsolete ABAP Sprachelemente IF e_parameter IS REQUESTED. * ... ENDIF. IF e_parameter IS SUPPLIED. * ... ENDIF. S
  • 55. Modern ABAPObsolete ABAP Sprachelemente CATCH SYSTEM-EXCEPTIONS exc1 = 1 exc2 = 2 OTHERS = 3. ... ENDCATCH. IF sy-subrc <> 0. ... ENDIF. S
  • 56. Modern ABAPObsolete ABAP Sprachelemente MOVE REFRESH RANGES WITH HEADER LINE OCCURS n Tabellenoperationen mit impliziter Kopfzeile LOOP AT itab. READ/INSERT/APPEND/… S
  • 59. Modern ABAP  Git client for ABAP by Lars Hvam ◦ http://www.abapgit.org ◦ Paket <=> (online) Git Repository  Erweitert SAP Versionierung  Ermöglicht Austauch von SAP Entwicklungsobjekten ◦ Klassen, Tabellen, Strukturen, IDocs, …  Aktuell DAS Transporttool für ABAP in the Cloud ◦ auch Migration  Open Source! abapGit und Open Source T
  • 60. Modern ABAP  SAPlink  abap2xlsx  https://dotabap.org/ abapGit und Open Source T
  • 61. Modern ABAPabapGit BunKai  abapGit BunKai ◦ Founded & Supported by 5 SAP Community Mitglieder • https://wiki.scn.sap.com/wiki/display/events/abapGit+BunKai T
  • 62. Modern ABAP https://github.com/larshp/abapGit https://open.sap.com/courses/git1 - SAP Cloud Platform Version Control with Git https://dotabap.org/ abapGit und Open Source T
  • 64. Modern ABAPABAP CDS Views  ABAP CDS Views ◦ Next Generation zum Definieren von Views ◦ CDS beinhaltet  DDL (Data Definition Language)  DCL (Data Control Language) ◦ 100% in ABAP integriert  ABAP Dictionary  Transportmanagement ◦ Pflege ausschließlich über ABAP in Eclipse ◦ Zugriff via Open SQL S
  • 65. Modern ABAPABAP CDS Views  ABAP CDS Views - Highlights ◦ View Hierarchien ◦ Eingebaute Funktionen ◦ Parameter ◦ Associations ◦ Annotations ◦ View Extensions S
  • 66. Modern ABAPCDS Views vs. Open SQL Expressions • Re-Use Scenarien • Views können verschachtelt werden • CDS Features • UNION, UNION ALL, Mengen bzw. Währungs Umrechnungen • Associations • Berechtigungsprüfungen • S/4HANA Programmiermodell CDS Views Open SQL • Einmalverwendungen • FOR ALL ENTRIES • Kein Eclipse S
  • 67. Modern ABAPABAP CDS Views http://www.cadaxo.com/high-class-development/abap-cds-views-6-schritte-zum-verstaendnis/ http://www.cadaxo.com/high-class-development/webinar-abap-cds-views/ S
  • 68. Modern ABAP ABAP RESTful Programming Model
  • 69. Modern ABAP ABAP Platform ≥ 7.51ABAP Platform ≤ 7.50 SAP Cloud Platform ABAP Environment 1808* Klassische ABAP Entwicklung • Freestyle ABAP Entwicklung ABAP Programmiermodell für SAP FIORI • Gateway Builder • OData • BOPF • Core Data Services ABAP Programmiermodelle ABAP RESTful Programmiermodell (ABAP RPM) • Business Service • Core Data Services • Verhaltensdefinition *On-Premise kommt später
  • 70. Modern ABAPABAP RESTful  ABAP RESTful ◦ Für zukünftige Entwicklungen in S/4HANA, SAP Cloud ABAP ◦ CDS & ABAP ◦ Business Object  Datenmodellierung mit CDS  Verhaltensdefinition & Implementierung  Managed / Unmanaged S
  • 72. Modern ABAPSAP Code Inspector  Statische Prüfungen mit dem Code Inspector ◦ Einzelne Objekte oder viele Objekte ◦ Namenskonventionen, Performancethemen, … ◦ Seit 7.52 auch Remote Checks möglich Q
  • 73. Modern ABAPabapOpenChecks  Lars Hvam’s: abapOpenChecks ◦ Umfangreiche ergänzende Checks für den Code Inspector  Aktuell bereits über 80 Checks • https://blogs.sap.com/2015/03/08/abapopenchecks-open-source-checks-sap-code-inspector-atc • https://github.com/larshp/abapOpenChecks Q
  • 74. Modern ABAPSQL Monitor  Der SQL Monitor liefert Performance-Daten ◦ Welche SQL Operationen/Tabellenzugriffe treten am häufigsten auf? ◦ Welche SQL Operationen/Tagellenzugriffe lesen oder schreiben die meisten Einträge? Q
  • 75. Modern ABAPSQL Performance Tuning Workslist  Die SQL Performance Tuning Worklist kombiniert statische Checks (Code Inspector) mit Laufzeitdaten (SQL Monitor) ◦ Liefert eine priorisierte Worklist für potentielle Performanceverbesserungen Q
  • 76. Modern ABAPABAP Test Cockpit  Das ABAP Test Cockpit verwendet u.a. CI Ergebnisse ◦ Kombiniert ABAP Code Inspector, ABAP Unit Tests, … ◦ Freigabeszenarien Q
  • 77. Modern ABAPABAP Call Monitor  Der ABAP Call Monitor analysiert die Verwendungen ◦ Zeichnet die Aufrufe von Methoden, Funktionsbausteinen, Unterprogrammen, Zeitpunkten, ... ◦ „Nachfolger“ von UPL (Solution Manager) ◦ Keine Performanceinformationen • https://blogs.sap.com/2017/04/06/abap-call-monitor-scmon-analyze-usage-of-your-code/ Q
  • 78. Modern ABAP  Weitere Analysetools ◦ SQL Trace, Performance Trace ◦ Laufzeitanalyse ◦ Memory Inspector Analysetools • https://blogs.sap.com/2012/03/06/getting-started-with-abap-testing-and-troubleshooting Q
  • 80. Modern ABAP “Any fool can write code that a computer can understand. Good programmers write code that humans can understand.” Martin Fowler, Pionier der agilen Softwareentwicklung Clean Code P
  • 81. Modern ABAPCode Qualität vs. Aufwand pro Feature Code Qualität Aufwand pro Feature P
  • 82. Modern ABAP  Verständlicher Code ist enorm wichtig ◦ Überwiegende Kosten für Software sind Wartungskosten ◦ Code wird daher überwiegend gelesen ◦ Je unverständlicher der Code, desto größer die Gefahr, dass er nicht ausreichend verstanden wird Code wird meist gelesen P
  • 83. Modern ABAPDRY, KISS & YAGNI  Die 3 wichtigsten Clean Code Prinzipien sind ◦ DRY - Dont‘ Repeat Yourself ◦ KISS - Keep it simple, stupid ◦ YAGNI - You Ain‘t Gonna Need it P
  • 84. Modern ABAP DATA PARTNER_INVOICES TYPE TABLE OF … DATA DAYS_SINCE_CREATION TYPE … DELIVERY_DATE->ADDDAYSTO( 5 ) DELIVERY_DATE->INCREASEBYDAYS( 5 ) Zweckbeschreibende Namen verwenden  Namen sollen den Zweck beschreiben ◦ Klingt einfacher, als es ist ◦ Gute Namen zu finden braucht Zeit, spart später aber Zeit ◦ Namenslängen ausnutzen DATA D TYPE … DATA LS_DATA TYPE … DELIVERY_DATE->ADD( 5 ). Solche Namen enthüllen nichts Namen beschreiben den Zweck, Code wird verständlicher P
  • 85. Modern ABAPErklärung durch Code  Erklärung durch Coding ◦ Ein Beispiel, wie mittels Coding erklärt wird * emplyoee is allowed? IF EMPLOYEE->AGE > 65 AND EMPLOYEE->FLAGS = ABAP_TRUE AND EMPLOYEE->ISLOCKED <> ABAP_TRUE. … ENDIF. IF EMPLOYEE->ISALLOWED( ) = ABAP_TRUE. … ENDIF. P
  • 86. Modern ABAPClean Code – von Robert C. Martin „Uncle Bob“ P ISBN 978-3-8266-5548-7
  • 88. Modern ABAPZiele von Refactoring  Ziele von Refactoring ◦ Code wird verständlicher ◦ Fehlersuche wird beschleunigt ◦ Code wird leichter erweiterbar ◦ Design des Software-Systems wird verbessert T
  • 89. Modern ABAPRefactoring “We are doing this, to be able to deliver more functionality more quickly.” Martin Fowler, Pionier der agilen Softwareentwicklung T
  • 90. Modern ABAPRefactoring Arten  Refactoring Arten ◦ Litter-Pickup ◦ Comprehension Refactoring ◦ Preparatory Refactoring ◦ Planned Refactoring ◦ TDD Refactoring ◦ Long-Term Refactoring T
  • 91. Modern ABAPRefactoring SE80 vs. ADT Refactoring SE80 Refactoring ADT • Umbenennung von Objekten (Klassen, Methoden, … ) • Methoden extrahieren • Konstanten extrahieren • Variablen extrahieren • Sichtbarkeit von Attributen ändern • Attribute von Subklassen in Superklassen verschieben • … T
  • 94. Modern ABAPABAP Units – Test Seams  Ziel von Unit Tests ◦ Probleme/Bugs im Developmentprozess so früh wie möglich entdecken ◦ Probleme/Bugs nach Upgrades etc. rasch entdecken ◦ Reduktion langer Debugging Sessions ◦ Reduziert die „Hemmschwelle“ schlechtes Coding zu optmieren - > Clean Code!
  • 95. Modern ABAPABAP Units – Test Seams  Refactoring ohne Unittests?  Legacy Code testbar machen  Refactoring  => TEST-SEAM / TEST-INJECTION
  • 96. Modern ABAPABAP Units – Test Seams Produktiver Code … CLEAR partner_name. TEST-SEAM but000_select. SELECT SINGLE name_last FROM but000 WHERE partner = @i_partner INTO @partner_name. END-TEST-SEAM. IF partner_name… … Test Class … CLASS ltc_tests DEFINITION FOR TESTING . ... METHOD setup. TEST-INJECTION but000_select. partner_name = 'Bigl'. END-TEST-INJECTION. ENDMETHOD. …
  • 97. Modern ABAPABAP Units – Test Seams Normale Ausführung … CLEAR partner_name. SELECT SINGLE name_last FROM but000 WHERE partner = @i_partner INTO @partner_name. IF partner_name… … ABAPUnit Test … CLEAR partner_name. partner_name = 'Bigl’. IF partner_name… …
  • 99. Modern ABAPRefactoring – von Martin Fowler ISBN 978-0134757599 T • https://refactoring.com/
  • 101. Modern ABAP  Entwurfsmuster ◦ Sind bewährte Lösungen für wiederkehrende Aufgabenstellungen in der Softwarearchitektur ◦ Bekannte Arten sind z.B.  Erzeugungsmuster (Factory, Singleton, … )  Strukturmuster (Facade)  Verhaltensmuster Entwurfsmuster P
  • 103. Modern ABAPDesign Patterns in ABAP – von Kerem Koseoglu ISBN 978-1-4932-1465-5 P
  • 104. Modern ABAP Was noch nicht erwähnt wurde
  • 105. Modern ABAP  Weitere Themen zu Modern ABAP ◦ Logpoint/Checkpoints ◦ AMDB / SQL Script / CDS Table Function ◦ Dynamic Develpment ◦ ABAPDoc ◦ JSON, XML, Transformationen/XSLT ◦ Debugging ◦ Pakete ◦ ABAP Channel, ABAP Daemon ◦ bgRFC, qRFC ◦ Regular Expressions ◦ Gateway / oData ◦ Agil, Scrum, Kanban, eXtreme Programming ◦ …
  • 106. Modern ABAP 31. Mai 2019 10:00 – Thema: TBD Nächstes Webinar
  • 107. Modern ABAPUnsere vergangenen Webinare http://www.cadaxo.com/blog/
  • 108. Modern ABAPIf you want to stay in touch … https://twitter.com/domibiglsap https://www.linkedin.com/in/dominik-bigl-9b98b68b https://www.xing.com/profile/dominik_bigl dominik.bigl@cadaxo.com See you again! Thank you for participating! https://twitter.com/foessleitnerj https://www.linkedin.com/in/johann-fößleitner-a9851b2a https://www.xing.com/profile/johann_foessleitner johann.foessleitner@cadaxo.com