News in ABAP, Teil 1

Feature | 30. Januar 2008 von Andreas Blumenthal, Horst Keller, Chris Swanepoel 0

Die Weiterentwicklung einer Entwicklungsumgebung ist kein Selbstzweck. Die Sprache ABAP und die ABAP Workbench wachsen mit den Anforderungen ihrer Anwender. Drei der großen Produktlinien von SAP – SAP Business ByDesign, SAP Business All-in-One und SAP Business Suite – basieren auf ABAP. Insbesondere die Weiterentwicklung der Anwendungen der SAP Business Suite und die Neuentwicklung der Lösung SAP Business ByDesign stellen hohe Anforderungen an die zugrunde liegende Infrastruktur.

Eine der größten Herausforderungen besteht darin, geeignete Werkzeuge bereit zu stellen, mit denen sich komplexe Architekturen einfach implementieren lassen. Einige der wichtigsten Neuerungen aus der ABAP-Entwicklungsumgebung sind gute Beispiele dafür, wie leistungsfähige neue Technologiekonzepte helfen, die Komplexität von Anwendungen unter Kontrolle zu halten. Hierzu zählen etwa das Enhancement Framework und das Switch Framework, die bessere Unterstützung für Gleitpunktberechnungen, Sekundärschlüssel für interne Tabellen, neue Möglichkeiten der Stringverarbeitung sowie neue Funktionen im ABAP Debugger.

Enhancement Framework und Switch Framework

Mit dem Enhancement Framework und dem Switch Framework – erstmals verfügbar mit SAP NetWeaver 7.0 – hat SAP die Art und Weise, wie Kunden ihre Unternehmenssoftware an ihre Anforderungen anpassen können, auf eine völlig neue Basis gestellt. Mit dem Enhancement Framework lässt sich SAP-Software unkompliziert erweitern. Im Switch Framework aktiviert der Kunde dann die gewünschten Entwicklungsobjekte.

Zur Erweiterung wird an strategischen und vordefinierten Stellen maßgeschneiderter Code eingefügt. Die Werkzeuge des Enhancement Framework und des Switch Framework sind eng in die ABAP Workbench integriert und werden von neuen ABAP-Befehlen unterstützt.

Die Enhancement- und Switch-Technologie vereinfacht nicht nur die Wartung von Branchenlösungen. Sie unterstützt vor allem auch die langfristige Strategie von SAP für die SAP Business Suite. Das Enhancement Framework und das Switch Framework bilden die Basis dafür, den Kern von SAP ERP und die Branchenlösungen um neue Funktionalität zu erweitern. Diese wird als optionales Enhancement Package geliefert. Das darin enthaltene Business Function Set wird installiert und lässt sich anschließend mit dem Switch Framework aktivieren.

Zusätzliche Erweiterungen des Quelltextes

Das Enhancement Framework bietet den Kunden verschiedene Möglichkeiten, SAP-Standardsoftware zu erweitern: Quelltext-Plugins, Klassen-, Interface- und Funktionsgruppenerweiterungen, BAdIs und Web-Dynpro-ABAP-Erweiterungen.

Bei Quelltext-Plugins handelt es sich um kleine Programm-Bausteine, die sich an bestimmten Stellen in ABAP-Anwendungen einfügen lassen. Die entsprechenden Stellen werden mit speziellen ABAP-Befehlen für explizite Erweiterungsoptionen definiert: ENHANCEMENT-POINT und ENHANCEMENT-SECTION zeigen Positionen an, an denen sich Code einfügen oder ersetzen lässt. Die Erweiterungen sind normale Repository-Objekte und werden bei ihrer Erstellung einem Entwicklungspaket im Namensraum des Kunden zugeordnet.

Zusätzlich zu den explizit ausgewiesenen Erweiterungsoptionen lässt sich der Quelltext an etlichen weiteren Stellen implizit immer erweitern – etwa am Ende von Programmen (Includes, ausführbaren Programmen, Funktions- und Modul-Pools), an Anfang und Ende von Methoden und Funktionsbausteinen, am Ende aller Sichtbarkeitsbereiche (öffentlich, geschützt und privat), am Ende von Klassen und am Ende von Parameterlisten von Methoden und Funktionsbausteinen.

Den Quelltext-Plugins oder anderen Erweiterungen wird ein “Schalter” zugeordnet. Mit ihm lässt sich die entsprechende Funktionalität aktivieren. Der Schalter wiederum ist einer Business Function zugeordnet, die dazu dient, mehrere Schalter in einem Pool zusammenzufassen und zu synchronisieren.

Erweiterungen lassen sich also aktivieren, indem die entsprechenden Business Functions im Switch Framework angeschaltet werden. Bei dieser Aktivierung wird der zugehörige Quelltext direkt in ausführbaren Code kompiliert (technisch als “Load” bezeichnet) und dadurch mit der ursprünglichen Software verschmolzen. Diese Vorgehensweise ist wichtig für die Performance erweiterter Anwendungen.

Zur Laufzeit ist es nicht erforderlich, die “Stellungen” aller vorhandenen Schalter auszuwerten, um zu ermitteln, welcher Code auszuführen ist. Die Erweiterungen müssen nicht explizit in Kontrollstrukturen wie in IF- oder CASE-Befehle eingebunden werden. Das ist möglich, weil die Technologie eng in die ABAP Workbench integriert ist und in der Programmiersprache ABAP selbst unterstützt wird. Somit ist das Zusammenspiel von Enhancement Framework und Switch Framework ein leistungsfähiges und effektives Mittel, um ABAP-Programmierungen anzupassen.

Gleitpunktberechnungen

Um Gleitpunktberechnungen ohne Rundungsfehler durchzuführen, wurde in ABAP der numerische Datentyp DECFLOAT eingeführt. Über viele Jahre hat SAP für ihre Finanzanwendungen Festkommazahlen des Typs P (basierend auf BCD-Codierung) verwendet. Diese Anwendungen unterliegen etwa bei der Rundung von Geldbeträgen hohen Anforderungen an die Genauigkeit und müssen zudem entsprechende gesetzliche Vorgaben erfüllen.

Typ P hat jedoch zwei entscheidende Nachteile. Zum einen ist sein Wertebereich auf -10^31-1 bis +10^31-1 begrenzt. Dieser Wertebereich führt bei Rechnungen mit sehr großen Zahlenwerten zu Problemen. In diesen Fällen waren Anwendungsentwickler bisher gezwungen, komplizierte und fehleranfällige Behelfslösungen zu implementieren. Zum anderen ist die Zahl der Nachkommastellen festgelegt.

Im Hinblick auf den Trend zur generischen Programmierung und wieder verwendbaren Bibliotheken ist das ein Nachteil: Entwickler können beim Schreiben des Codes nicht immer im Voraus abschätzen, wie viele Dezimalstellen benötigt werden. Hier kann es Unterschiede zwischen Branchen oder Ländern geben, für deren Anforderungen mehr oder weniger Dezimalstellen notwendig sind.

Beispielsweise rechnet eine Anwendung, die den Typ P mit sechs Nachkommastellen verwendet, 1500.000000 Milliliter in 0,009435 Barrels um. Wird ausgehend von diesem Resultat wieder zurück in Milliliter umgerechnet, ergibt sich 1500.045128. Das Ergebnis ist in fünf Nachkommastellen ungenau. Selbst wenn die für den Typ P maximale Zahl von 14 Nachkommastellen verwendet wird, ergibt sich bei dieser Umrechnung ein spürbarer Fehler.

Neuer Datentyp DECFLOAT

Um das Problem zu lösen, hat SAP im Rahmen des Engagements für offene Standards mit IBM zusammengearbeitet. Das Ergebnis ist die plattformunabhängige Implementierung des neuen Datentyps DECFLOAT. Sie basiert auf der aktuellen Version der Spezifikation IEEE 754r zur Rechnung mit Gleitpunktstellen.

Mit der Implementierung können Kunden die Interoperabilität und den einfachen Datenaustausch zwischen SAP NetWeaver und Fremdsystemen gewährleisten, die dem zukunftsträchtigen Standard entsprechen. In Kooperation mit IBM will SAP auch die Hardware-Unterstützung für Gleitpunktrechnungen nutzen, die IBM mit Servern auf Basis der POWER6-Architektur eingeführt hat.

ABAP bietet zwei DECFLOAT-Typen mit unterschiedlicher Genauigkeit: DECFLOAT16 (8 Bytes, 16 Stellen, Exponent -383 bis +384) und DECFLOAT34 (16 Bytes, 34 Stellen, Exponent -6143 bis +6144). Die generische Ausprägung des Datentyps, DECFLOAT, stellt je nach Anforderung DECFLOAT16 oder DECFLOAT34 dar. Das macht es Entwicklern leicht, Anwendungen für beide Wertebereiche zu erstellen.

ABAP unterstützt den neuen Datentyp ohne Einschränkungen. Er lässt sich überall an Stelle der numerischen Typen I, F und P verwenden. Abhängig von der Anzahl der benötigten Nachkommastellen rundet die eingebaute Funktion ROUND die DECFLOAT-Werte auf exakte Weise. Der generische Typ DECFLOAT kann immer dann verwendet werden, wenn ein großer Wertebereich benötigt wird oder die Anzahl der erforderlichen Dezimalstellen nicht bekannt ist.

Leave a Reply