In diesem Repository ist ein kleines Bespiel für "Clean ABAP Code". Dieses Repository soll Entwicklern einige Ideen aufzeigen zum Thema Qualität in der ABAP Entwicklung.
Dem Benutzer wird eine Auswertung mit Angeboten, die mit dem Grund "zu teuer" abgesagt wurden, im ALV-Grid präsentiert. Diese Auswertung enthält folgende Informationen:
- Kunde und Artikel (Material)
- Monat (bezieht sich auf das Bestelldatum)
- Anzahl der abgesagten Angebote (Grund "zu teuer")
- Anzahl aller Angebote
- Preisspanne von-bis der abgesagten Angebote
Bezieht sich der Preis auf unterschiedliche Mengeneinheiten (z.B. Preis pro Stück, Preis pro Palette) werden die Mengeneinheiten einheitlich auf die Einheit des Materialstammes umgerechnet. Der Schlüssel besteht aus Kunde, Artikelnr., Monat und Währung. Für diese Kombination gibt es jeweils nur einen Datensatz. Angebote ohne Preis oder ohne Artikelnummer werden nicht berücksichtigt.
- Einfache Nachvollziehbarkeit und Wartung
- Erweiterungsmöglichkeit
- Wiederverwendbarkeit der Anwendungslogik auch wenn sich das User-Interface ändert
- Trennung des User-Interfaces und der Anwendungslogik
- Trennung der Anwendungslogik und der externen Resourcen (Datenbank)
- Verzicht auf die ungarische Notation
- Gut lesbarerer Source-Code (Länge der Methoden wird kurz gehalten)
- Unit-Tests soweit möglich
Importiert wird der Source-Code mit dem Tool abapgit. Mindestens SAP Basis 752 wird benötigt.
In der Transaktion slg0 muss zum Objekt "ZSD-SLS" das Unterobjekt "ZANG_ABGESAGT" hinzugefügt werden.
Es gibt 2 langlaufende Branches. Einmal der master
Branch. Dieser arbeitet mit den Standardtabellen des SD Moduls (vbak
, vbap
). Der Branch without_sd_tables
ist für Benutzer gedacht ohne Zugriff auf die Angebote im SD Modul. Hier wurde die Tabelle vbak
durch die Tabelle zangebot_vbak
ersetzt und die Tabelle vbap
durch die Tabelle zangebot_vbap
ersetzt. Diese Tabellen können in der Transaktion sm30 bearbeitet werden.
Enthält nur das User-Interface mit dem ALV-Grid im Volldbildschirm sowie die Anzeige des Log-Protokolles.
Enthält nur die Anwendungslogik. Soll die Trennung von externen Resourcen
und Anwendungslogik, klassenbasierte Ausnahmen zur vollständigen Abtrennung
des User-Interfaces sowie die Umsetzung von Unit-Tests demonstrieren.
Ein Log-Protokoll wird mit der Funktionengruppe SBAL
erzeugt.
Enthält dieselbe Funktion wie Klasse zangebote_abgesagt
. Hier wurde
nur die Methode angebote_kumulieren
etwas anders implementiert um das mocken
(gezieltes Ersetzen) von Datenbankabfragen in den Unit-Tests zu demonstrieren.
Ein Log-Protokoll wird mit der Funktionengruppe SBAL
erzeugt.