12
Willkommen zur Schulung ABAP/OO Programmierung Wekum G m b H Mannheim 2018 ©

ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

Embed Size (px)

Citation preview

Page 1: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

Willkommen zur Schulung

ABAP/OO

Programmierung

Wekum G m b H

Mannheim 2018©

Page 2: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

2

Themen

1. Arten der Programmierung

2. Vorteile der OO-Programmierung

3. Begriffe der OO-Programmierung

4. ABAP-Entwicklungsumgebungen

5. ABAP-Spracheigenschaften

6. ABAP/OO-Anweisungen

7. ABAP/OO-Vererbung

Lernziele

Die Schulungsteilnehmer lernen die wichtigsten ABAP/OO-Anweisungen und deren Anwendung am Beispiel eines

Taschenrechners kennen. Voraussetzung für das Verständnis der Lerninhalte sind Grundkenntnisse der prozeduralen

ABAP-Programmierung oder ein vergleichbares Praxiswissen. Ein weiteres Lernziel besteht in der Handhabung von

Suchhilfen und Schlüsselwortdokumenten, um die Teilnehmer nach der Schulung auf ein eigenständiges Arbeiten vorzubereiten. Die Ausführungen werden durch praktische Programmierübungen ergänzt, die am Ende der Schulung

dazu befähigen, umfangreiche ABAP/OO Quelltexte zu verstehen und größere Programmeinheiten selbständig zu

bearbeiten.

Arbeitsumfeld

Alle Vorführungen und Übungen werden im Schulungssystem des Kunden unter einem vorgegebenen Mandanten abgewickelt. Dort muss jeder Teilnehmer einen Transportauftrag ohne Zielsystem oder ein Projekt anlegen, in dem die eigenen Übungen abgelegt werden. Um die einzelnen Entwicklungsobjekte nach Beendigung der Schulung leichter zu

finden, muss jedes Objekt mit dem Kundenpräfix Y oder Z beginnen, gefolgt von einem eindeutigen Teilnehmerkürzel

<XX> und dem eigentlichen Namen des Entwicklungsobjekts, jeweils getrennt durch einen Unterstrich. Außerdem

müssen alle von den Teilnehmern angelegten Entwicklungsobjekte einem Paket oder Projekt zugeordnet werden, das

ebenfalls mit dem Präfix Y oder Z beginnen muss.

Übungen

Die einzelnen Themen werden durch praktische Programmierübungen vertieft, die jeder Teilnehmer selbstständig oder in Gruppen durchführen kann. Im Mittelpunkt steht die Programmierung eines einfachen Taschenrechners, dessen

Rahmen ausschließlich durch ABAP/OO-Anweisungen zu gestaltet ist.

Page 3: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

3

Arten der Programmierung

Laut ISO ist eine Programmiersprache eine formale Sprache zur Notation von Rechnerprogrammen. Sie wird bestimmt

durch ihre Grammatik, mit der die Syntax der verfügbaren Terme festgelegt wird, und ihre Semantik, aus der die Bedeutung der Anweisungen hervorgeht, die aus den einzelnen Termen gebildet wurden. Ein Programm besteht aus einer Liste von Anweisungen, die auf einem Speichermedium verfügbar ist und der Ausführung von Vorgängen auf

einem Rechner (PC) dienen. Ein Vorgang beschreibt einen Ablauf, bei dem ein System verschiedene Zustände erlebt.

Unterschieden werden Compiler- und Interpreter-Sprachen:

1. Compiler übersetzen den gesamten in einer Programmiersprache erstellten Quelltext in ein direkt ausführbares Maschinenprogramm. Erst wenn das Programm komplett und fehlerfrei übersetzt wurde, kann es vom Benutzer ausgeführt werden. Dadurch benötigt das Programm weniger Ausführungszeit und Speicherplatz, muss allerdings bei jeder Umwandlung in seiner Gesamtheit übersetzt werden, was zu einer aufwendigeren Fehlersuche führt. Zu

den Compilersprachen gehören zum Beispiel C oder FORTRAN.

2. Interpreter sind Übersetzungsprogramme, die jeweils eine einzelne Befehlszeile des Quelltextes in einen Zwischencode übersetzen, der zur Laufzeit zeilenweise ausgeführt wird. Die Fehlersuche wird dadurch stark vereinfacht, weil eine einzelne Befehlszeile sofort getestet werden kann. Allerdings erhöhen sich Laufzeit und erforderlicher Speicherplatz, weil das Quellprogramm größer als das Maschinenprogramm ist und bei jeder Ausführung erneut analysiert werden muss, was besonders bei Schleifen viel Zeit kostet. Die bekanntesten

Interpreter-Sprachen sind im Augenblick Java, Visual Basic, C# und ABAP.

Letztlich werden die Quelltexte beider Programmarten von Assemblern in ein maschinell ausführbares Programm gewandelt, das auf der jeweiligen Plattform - zum Beispiel Windows oder Unix - direkt ausgeführt werden kann. Dieser Maschinencode besteht aus Binärfolgen, die für Menschen jedoch schwer lesbar sind, weshalb jedes Betriebssystem einen Satz an Mnemonics anbietet, der diese Binärfolgen aus Gründen der besseren Lesbarkeit als Kürzel verschalt,

zum Beispiel ADD oder MVC, ähnlich den ABAP-Kontrollblöcken.

Bei höheren Programmiersprachen wird außerdem zwischen prozeduralen und objektorientierten Ausführungen unterschieden. Erstere enthielten ursprünglich nur eine lineare Liste von Anweisungen, die schrittweise abgearbeitet wurde. Erst später wurden die Prozedursprachen um Funktionsaufrufe mit abgegrenzten Aufgaben erweitert, weshalb auch öfters der Begriff der funktionalen Programmierung verwendet wird. Dagegen fasst die objektorientierte Programmierung ihre Daten und Funktionen in Objekten zusammen, die von außen nicht beeinflusst werden können.

Die bekanntesten Prozedursprachen sind C, COBOL oder FORTRAN, während Java, C# oder C++ und ABAP Objects

bekannte Vertreter der Objektorientierung sind. All genannten Sprachen erfüllen die Vorgaben der strukturierten Programmierung, die eine Aufteilung in Funktionen auf Programmebene vorsieht Diese bestehen wiederum aus genau drei Kontrollstrukturen, nämlich der Folge samt Verzweigung und Wiederholung.

Vorteile der OO-Programmierung

Im Gegensatz zur prozeduralen Programmierung verlagert die objektorientierte Programmierung die Modellierung verstärkt vom Lösungs- in den Problembereich: Bei der Programmentwicklung liegt der Blickpunkt vor allem auf der Bestimmung der tatsächlich benötigten Objekte mit ihren Eigenschaften und Fähigkeiten. Auf diese Weise wird eine vorzeitige Festlegung verpflichtender Einzelheiten verhindert, so dass die Entwicklung umfangreicher Programme im ersten Stadium auf grundlegende Probleme und Zusammenhänge beschränkt wird. Durch diesen Ansatz werden Entscheidungen über den Entwurf oder die Implementierung eines Programmes erst dann getroffen, wenn alle Vorgaben und Einzelheiten vollständig festgelegt sind. Neben diesem grundlegenden Ansatz bietet die objektorientierte Programmierung weitere Vorteile wie:

Abbildung der Realität durch Objekte mit Eigenschaften und Funktionen

Kapselung von Objekten in Klassen unter Einschränkung der Sichtbarkeit von Objekten

Wiederverwendung durch Nutzung von Objekten anderer Klassen oder durch Vererbung

Schaffung neuer Klassen und Aufbau von Klassenhierarchien durch Vererbung

Vielgestaltigkeit durch unterschiedliches Verhalten bei gleichem Schnittstellenaufruf

Gleichzeitige Existenz von Bezeichnern mit mehreren Ausprägungen durch Überladen

Schnittstellenstandard für sprachübergreifende Anwendungen

Begriffe wie Kapselung oder Wiederverwendung werden auch von anderen Programmiersprachen beansprucht und

erfüllt. So wird ein C-Programmierer mit Recht bemerken, dass zum Beispiel der gesamte Unix-Kern seit Jahrzehnten

durch zusätzliche C-Funktionen ergänzt wird, die sehr wohl in ihrer Funktionalität gekapselt und daher jederzeit für

weitere Versionen nutzbar sind. Während die prozedurale Programmierung in dieser Hinsicht jedoch die Disziplin des

Ausführenden erfordert, bietet die OO-Programmierung nicht nur die technischen Hilfsmittel für derartige Forderungen

an, sondern erzwingt sie oftmals. So können zum Beispiel Variable, deren globale Sichtbarkeit unerwünscht ist, eben genau auf die Sichtbarkeit einer ausgewählten Klasse beschränkt werden. Das schließt allerdings nicht aus, dass selbst mit diesen Mitteln durchaus chaotisch verfahren werden kann.

Page 4: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

4

Eine gänzlich neue Technik ist allerdings die Vererbung von Eigenschaften und Funktionalitäten, die in prozeduralen

Sprachen nicht vorhanden ist. Während ABAP/OO diese Möglichkeit jedoch wie Java oder C# auf die Einfachvererbung

beschränkt, bieten Sprachen wie C++ oder Eiffel und Perl zusätzlich die Möglichkeit der Mehrfachvererbung an, also

die Übernahme von Attributen und Methoden aus mehreren Klassen. Das hat in der Vergangenheit eher verwirrt, gerade

bei Übernahme von gleichnamigen Methoden oder gleichartigen Schnittstellen. Allerdings verfügt auch ABAP/OO durch

das FRIENDS-Konzept über die Möglichkeit, auf private Komponenten anderer Klassen zuzugreifen.

Durch den Bezug auf Bestandteile (Objekte) und Zustände (Methoden) des täglichen Lebens versucht der OO-Ansatz,

sein Programmiermodell auf die reale Welt und deren Ausprägung zu beziehen und möglichst genau abzubilden. Darin

liegt die große Stärke der OO-Vorgaben, nämlich abstrakte und komplexe Programmiertechniken durch diesen Bezug

einfacher vorstellbar und damit leichter anwendbar zu machen. Dass letztlich auch dieser Ansatz nicht immer einfach ist, liegt in der Natur der Aufgaben, die von einer realen Welt gestellt werden.

Begriffe der OO-Programmierung

Ein Objekt stellt die gemeinsame Beschreibung von Daten und Verarbeitungen innerhalb eines Kontexts dar, das sich auf ein Objekt der realen Welt bezieht.

Eine Klasse beinhaltet die Beschreibung von Objekten einer logisch zusammenhängenden Art, die Klasse mit den Mitteln einer Programmiersprache einmalig beschrieben wird.

Eine Instanz ist ein einzelnes, zur Laufzeit existierendes Exemplar einer Klasse. Während eine Klasse ihre Objekte allgemein beschreibt, ist eine Instanz die konkrete Ausprägung dieser Beschreibung

Ein Attribut beschreibt die Eigenschaft eines Objektes der Klasse, zum Beispiel die Länge einer Strecke. Unterschieden werden Instanz-Attribute, die ein einzelnes Exemplar der Klasse repräsentieren, während statische Attribute die Eigenschaften der Klasse selbst beschreiben, zum Beispiel die Anzahl ihrer Methoden.

Eine Methode ist eine Funktion, die jede Instanz der Klasse ausführen kann. Während die Attribute einer Instanz die Eigenschaften einer Klasse beschreiben, beschreiben Methoden deren Verhalten. Eine statische Methode ist eine Funktion, die von der Klasse selbst ausgeführt werden kann.

Ein Konstruktor ist eine besondere Methode, die zur Laufzeit genau einmal durchlaufen wird, sobald der erste Zugriff

auf die Klasse erfolgt. Der Konstruktor einer Instanz beginnt mit der Anweisung METHOD constructor, der statische

Konstruktor mit der Anweisung METHOD class_constructor.

Ein Ereignis ist ein Zustand, der von einer Instanz oder Klasse ausgelöst wird, worauf andere Klassen durch Aufruf einer eigenen Methode reagieren können, die als Event Handler bezeichnet wird.

Die Möglichkeit, Attribute oder Methoden einer Klasse zu verbergen, wird als Sichtbarkeit bezeichnet. Damit kann der Zugriff anderer Klassen teilweise oder vollständig verhindert werden.

Bei der Kapselung geht ABAP/OO im Gegensatz zu C++ oder Java eigene Wege, indem ein Deklarations- und ein

Implementationsteil unterschieden werden. Während der Deklarationsteil den Benutzer über den Zweck der Klasse aufklärt, sollte der Quelltext der Methoden und Ereignisbehandlung im Implementationsteil eher verborgen bleiben.

Interfaces dienen in Programmiersprachen mit einfacher Vererbung dazu, die Vorteile der Mehrfachvererbung zu nutzen, ohne deren Risiken einzugehen. Klassen können Interfaces deklarieren und dann über diese angesprochen werden, wobei auch andere Klassen dasselbe Interface verwenden können.

Polymorphie entsteht, wenn Klassen die gleiche Funktionalität mit unterschiedlichen Methoden umsetzen, indem die Methode der Oberklasse in der Unterklasse mit demselben Namen und derselben Schnittstelle deklariert, aber unterschiedlich implementiert wird.

UML (Unified Modeling Language) ist eine grafische Beschreibungssprache für Strukturen und Abläufe, die in der

objektorientierten Programmierung zur Modellierung verwendet wird und durch ISO 19505 normiert wurde.

Von einer Singleton-Klasse wird gesprochen, wenn nur ein einziges Objekt zu einer Klasse existieren darf, zum Beispiel ein zentrales Protokollobjekt, das alle Ausgaben in eine Datei schreibt.

Eine Factory-Klasse ist ein objektbasiertes Erzeugungsmuster, das Schnittstellen bereitstellt, um verwandte oder voneinander abhängige Objekte zu erzeugen, ohne ihre konkreten Klassen zu verwenden. Eine derartige Klasse wird vorzugsweise eingesetzt, wenn bestimmte Objekte in einem Programm ohne großen Aufwand ausgetauscht werden sollen. Dafür wird eine abstrakte Klasse erstellt, die ein oder mehrere weitere abstrakte Klassen erzeugen kann. Die Methoden zum Erzeugen der abstrakten Produkte bleiben dabei auch abstrakt, werden also nicht ausprogrammiert. Von diesen abstrakten Klassen erben anschließend konkrete Implementierungen der Factory-Klasse.

Page 5: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

5

Eine abstrakte Klasse bezeichnet in der OO-Programmierung eine Klasse, die mindestens eine abstrakte Methode

enthält. Eine abstrakte Methode besteht nur aus einer formalen Schnittstelle, die als Signatur bezeichnet wird, deren Funktionsweise aber noch programmiert und implementiert werden muss. Als Basisklassen in einer Klassenhierarchie können abstrakte Klassen grundlegende Eigenschaften ihrer Unterklassen festlegen, ohne diese bereits umzusetzen.. Leitet eine Klasse von einer abstrakten Klasse ab, müssen alle vererbten abstrakten Methoden überschrieben und implementiert werden, damit die erbende Klasse selbst nicht abstrakt ist.

Dagegen sind Interfaces rein abstrakte Klassen, die ausschließlich Methoden in ihrer Signatur festlegen und in unterschiedlichen Klassen implementiert werden können.

ABAP-Entwicklungsumgebungen

Mittels Transaktion SE80 können die einzelnen Entwicklungsobjekte einer ABAP-Anwendung bearbeitet werden, neben

dem eigentlichen Quelltext zum Beispiel Datenobjekte oder Oberflächen. Nach Auswahl eines Entwicklungsobjektes

mit der linken Maustaste und einem anschließendem Doppelklick oder Auslösen der Funktionstaste F2 wird in die

jeweilige Arbeitsumgebung des ausgewählten Objektes verzweigt. Dieser Vorgang heißt Vorwärtsnavigation, die

Umkehrung mittels Funktionstaste F3 Rückwärtsnavigation. Die Arbeitsumgebung der einzelnen Entwicklungsobjekte

kann aber auch direkt über ein Transaktionskürzel aufgerufen werden, zum Beispiel:

RZ11 Profilparameter

SE09 Transport Organizer

SE11 Dictionary

SE16 Tabellenanzeige

SE24 Class Builder

SE30 Laufzeitanalyse

SE37 Function Builder

SE38 Editor

SE41 Menu Painter

SE51 Screen Painter

SE61 Dokumentenbearbeitung

SE63 Dokumentenübersetzung

SE80 Entwicklungsumgebung

SE91 Nachrichten

SE93 Transaktionskürzel

SM12 Sperreinträge

SM59 Verbindungen

ST05 Datenbankprotokoll

ST22 Laufzeitfehler

Auch Eclipse mit seinen mächtigen Funktionen kann als Entwicklungsumgebung genutzt werden, was eine ablauffähige

Java Laufzeitumgebung auf dem Rechner erfordert. Damit kann die aktuelle Eclipse-Version samt aller ABAP-Plugins

aus dem Netz geladen werden. Unabhängig von der Entwicklungsumgebung muss aber im GUI der SAP-Class Builder

benutzt werden, sobald die Funktionen einer Klasse von mehreren Anwendern genutzt werden, um lokale Datenobjekte

in globale Entwicklungsobjekte umzuwandeln, die von allen Benutzern eines SAP-Systems verwendet werden können.

Zwecks Kommunikation mit einem Anwender werden im Rahmen der ABAP-Programmierung derzeit vier Möglichkeiten

der Gestaltung einer Benutzeroberfläche (GUI) angeboten:

1. Selektionsbild mit Ausgabeliste

2. Benutzerdialoge mit R/3-Dynpro

3. Benutzerdialoge mit Web-Dynpro

4. Ext. Dialog mit Remote-Aufrufen

ABAP-Spracheigenschaften

ABAP wurde von der SAP AG ursprünglich als Skriptsprache entwickelt, um ausgewählte Daten mit wenig Aufwand in

Listen darzustellen, woher auch der erste Namen Allgemeiner Berichts Aufbereitungs Prozessor stammt. Im Zuge der Internationalisierung erfolgte 1990 die Umbenennung in Advanced Business Application Programming, um dem erheblich erweiterten Funktionsumfang für die kommerzielle Verarbeitung von Massendaten gerecht zu werden. Für

diese Art der Anwendung bietet die ABAP-Programmierung besondere Datentypen und Anweisungen an, die in anderen

Programmiersprachen eher als Bibliotheksfunktionen verfügbar sind.

Page 6: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

6

ABAP ist eine proprietäre Sprache und damit nicht offen zugänglich wie zum Beispiel C. Sie gestattet wie C++ eine

prozedurale Programmierung, die im seit 1995 um den OO-Ansatz erweitert wurde. Ihr Vorteil gegenüber elementaren

Programmiersprachen besteht vor allem in den folgenden Punkten:

In die Sprache integrierter Datenbankzugriffe via Open SQL

In die Laufzeitumgebung integrierte Optimierung von Datenbankzugriffen über Puffertechniken

In die Laufzeitumgebung integriertes Transaktionskonzept für gleichzeitige zentrale Datenzugriffe

Interne Tabellen für die dynamische Bearbeitung tabellarischer Massendaten im Arbeitsspeicher

In die Sprache integrierte Schnittstelle zu anderen Programmierumgebungen via RFC oder web-Dienst

In die Sprache integrierte Schnittstelle zu XML oder externen Netzdiensten

Alle SAP-Anwendungen wie Financials oder Logistics und die gesamte Entwicklungsumgebung sind bis auf wenige

Ausnahmen ebenfalls in ABAP programmiert, während die Sprache selbst in ANSI C verfasst wurde, womit eine große

Unabhängigkeit von Plattformen gewährleistet ist. Die ABAP-Programmierung wird durch eine umfangreiche

Entwicklungsumgebung unterstützt, die eine gleichzeitige Bearbeitung großer Projekte durch eine Vielzahl an

Entwicklern ermöglicht. Je nach Kundeninstallation kann Eclipse mit den SAP-Plugins oder die Transaktion SE80 als

ABAP-Entwicklungsumgebung eingesetzt werden. Auch bei der Gestaltung von Oberflächen besteht in Abhängigkeit

von der Kundeninstallation die Möglichkeit, die herkömmliche SAP/GUI-Technik durch SAPUI5 für HTML-Anwendungen

zu ersetzen. Schließlich enthalten die ABAP-Entwicklungsumgebungen umfangreiche Beispiele und Hilfen, die im Netz

unter http://help.sap.com abgerufen werden kann.

ABAP/OO-Anweisungen

CLASS .. DEFINITION Definition einer Klasse in ABAP/OO

CLASS .. IMPLEMENTATION Implementierung einer Klasse in ABAP/OO

ENDCLASS Abschluss einer Klassendefinition

ABSTRACT Definition einer abstrakten Klasse, die nicht instanziiert werden kann

FINAL Definition einer Klasse, die nicht beerbt werden darf

DEFFERED Bekanntgabe einer Klasse vor ihrer Definition

FRIENDS Zugriffsmöglichkeit anderer Klassen auf die privaten Komponenten der Klasse

CREATE OBJECT Erzeugen einer Instanz zur Laufzeit

PUBLIC SECTION Vollständige Sichtbarkeit der Klassenkomponenten für andere Klassen

PROTECTED SECTION Sichtbarkeit der Komponenten nur innerhalb der Klasse und Unterklassen

PRIVATE SECTION Sichtbarkeit der Komponenten nur innerhalb der eigenen Klasse

METHODS Deklaration einer Methode im Definitionsteil einer Klasse

METHOD .. ENDMETHOD Ausprogrammierung einer Methode im Implementationsteil einer Klasse

METHOD .. REDEFINITION Überschreibung einer geerbten Methode der Oberklasse

EVENTS Deklaration eines Ereignisses im Definitionsteil einer Klasse

SET HANDLER Registrierung eines Ereignisses im Ausführungsteil eines Programmes

METHODS .. FOR EVENT Deklarierung einer Methode zur Behandlung eines Ereignisses

CLASS-DATA Deklaration eines statischen Attributes ohne Instanzbezug

CLASS-METHODS Deklaration einer statischen Methode ohne Instanzbezug

CLASS-EVENTS Deklaration eines statischen Ereignisses ohne Instanzbezug

INHERITING FROM Vererbung der Attribute und Methoden einer Oberklasse

SUPER Zugriff in einer redefinierten Methode auf dieselbe Methode der Oberklasse

ME Synonym für die aktuelle Instanz

CALL METHOD Aufruf einer statischen Methode oder einer Instanzmethode

INTERFACE Deklaration eines Interfaces

ENDINTERFACE Abschluss einer Interface-Definition

Einzelheiten zu einer Anweisung können in der ABAP-Entwicklungsumgebung angezeigt werden, wenn das betreffende

Schlüsselwort selektiert und danach die Funktionstaste F1 ausgelöst wird. Die Gesamtheit der ABAP-Hilfe wird aktiv,

wenn in der Oberfläche die Funktion Hilfe zu mittels Einfachklick auf die Ikone Information gewählt wird. Hier werden

nach Ankreuzen des Feldes SAP-Bibliothek alle Dokumente zur ABAP-Entwicklungsumgebung in einer Baumstruktur

angeboten, außerdem folgende Zusammenfassungen:

1. ABAP-Glossar

2. ABAP-Schlagworte

3. ABAP-Übersicht

4. ABAP-Neuheiten

Page 7: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

7

ABAP/OO-Vererbung

Neben Datenkapselung und Polymorphie ist die Vererbung eine der wichtigsten Eigenschaften der objektorientierten Programmierung. Sie gestattet, die Eigenschaften bereits vorhandener Klassen zu übernehmen, wenn eine neue Klasse erzeugt wird. Vererbung heißt, dass zum Beispiel eine Klasse B die Eigenschaften der Klasse A übernimmt, also aller Attribute und Methoden.

Vererbung dient der Deklaration von Klassen unter Nutzung bereits vorhandener Klassen. Durch diese Übernahme wird die Wiederverwendung von Software unterstützt, was stark zu deren Zuverlässigkeit beiträgt. Die Wiederverwendung, die zu umfangreichen Klassenhierarchien führen kann, setzt allerdings eine große Allgemeingültigkeit der beerbten Klassen voraus, wie das nachfolgende Beispiel zum Thema Polymorphie zeigt:

REPORT z_jj_hund NO STANDARD PAGE HEADING.

* Deklarationen

CLASS cl_dackel DEFINITION.

PUBLIC SECTION.

METHODS bellen.

ENDCLASS.

CLASS cl_dackel IMPLEMENTATION.

METHOD bellen.

WRITE / 'wau'.

ENDMETHOD.

ENDCLASS.

CLASS cl_pudel DEFINITION INHERITING FROM cl_dackel.

PUBLIC SECTION.

METHODS bellen REDEFINITION.

ENDCLASS.

CLASS cl_pudel IMPLEMENTATION.

METHOD bellen.

WRITE / 'wuff'.

super->bellen( ). "Oberklasse

ENDMETHOD.

ENDCLASS.

DATA dackel TYPE REF TO cl_dackel.

DATA pudel TYPE REF TO cl_pudel.

* Ausführung

START-OF-SELECTION.

CREATE OBJECT dackel.

CREATE OBJECT pudel.

dackel->bellen( ). "Ausgabe wau

dackel = pudel.

dackel->bellen( ). "Ausgabe wuff

Falls noch nicht geschehen, ist nach der Einführung von ABAP/OO eine Umstellung aller Kundendaten auf Unicode

sinnvoll, weil die Erweiterung des Zeichensatzes einen internationalen Datenaustausch ohne Datenverluste ermöglicht. Dazu genügt die Installation eines zentralen Systems, das die Geschäftsprozesse der gesamten Welt abbildet.

Zudem können alle Spracherweiterungen verwendet werden, die im Rahmen von Unicode eingeführt wurden, womit

die Lesbarkeit und Eindeutigkeit eines Quelltextes erhöht wird. Die Lesbarkeit und Eindeutigkeit von Programmen wird

aber vor allem durch die umfangreiche Unicode-Prüfung stark verbessert, weil damit Anweisungen aufgedeckt

werden, die bisher zwar syntaktisch korrekt, aber semantisch falsch waren. Dies betrifft besonders Daten, deren Typ nicht eindeutig erkennbar ist, zum Beispiel nach der Zuweisung einer mehrstufigen Datenstruktur in ein zeichenartiges

Feld. Insofern ist die Einführung der Unicode-Prüfung auch für Anwender lohnend, die ihre Software-Qualität steigern

wollen, ohne selbst Unicode in ihren Anwendungsdaten zu verwenden.

Page 8: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

8

Unicode

1. Codes 2. Systeme 3. Prüfprogramm 4. Anweisungen 5. Umstellbeispiele 6. Dokumentation 7. Anmeldungen

1. Codes

Buchstaben, Ziffern und Sonderzeichen werden in Rechnern durch Zahlen im Binärformat {0,1} dargestellt, für deren Verschlüsselung bisher folgende Codes verwendet wurden:

a. ASCII (American Standard Code for Information Interchange) verschlüsselt ursprünglich jedes Zeichen durch 7 Bit.

Damit lassen sich höchstens 27 = 128 Zeichen darstellen, denen die Kombinationen [0000000, 1111111] zugeordnet werden.

b. EBCDI (Extended Binary Coded Decimal Interchange) verschlüsselt jedes Zeichen durch 1 Byte = 8 Bit, womit genau

28 = 256 Zeichen in Form der Kombinationen [00000000, 11111111] abgebildet werden können.

c. Doublebyte-Zeichensätze, die vereinzelt für asiatische Schriften benutzt werden, benötigen 1-2 Bytes je Zeichen. Damit können 216 = 65536 Kombinationen gebildet werden, wobei in der Regel nur 10000 - 15000 Zeichen belegt sind.

Aufbauend auf diesen Standards bieten Hersteller von Betriebssystemen wie zum Beispiel Microsoft oder Apple eigene Zeichensatztabellen in Form von Codepages an, die je nach Anforderung oder Sprache besondere

Zuordnungen enthalten. So verschlüsselt zum Beispiel die Codepage 850, die für das Betriebssystem MS-DOS

entwickelt wurde, den Buchstaben M als 4D16 = (0100 1101)2

Mit diesen Zeichensätzen kann jede Sprache einzeln abgedeckt werden. Schwierigkeiten treten jedoch auf, wenn Texte in einem zentralen System aus verschiedenen Zeichensätzen gemischt oder Daten zwischen Systemen mit abweichenden Zeichensätzen ausgetauscht werden, was zu völlig unbestimmten Zuständen führen kann. Aus diesem Grund wurde mit Unicode eine weltweite Verschlüsselung gemäß ISO/IEC 10646 eingeführt, die alle

Zeichen dieser Welt umfasst und in der Regel aus 2 Bytes besteht. Mit dieser Darstellung werden folgende Vorteile erzielt:

Mit Unicode können alle SAP-Anwender ein zentrales System installieren, das die Geschäftsprozesse der gesamten

Erde abdeckt.

Auch Firmen mit verteilten Systemen wünschen in der Regel, dass weltweite Konzerndaten verdichtet aufbereitet

werden, was ohne Unicode nur bedingt möglich ist.

Unter Unicode können gleichzeitig die Zeichen mehrere Sprachen auf einem einzigen lokalen Rechner dargestellt

werden.

Unicode ist Grundvoraussetzung für einen internationalen Datenaustausch ohne Datenverluste. Zur Darstellung

von Dokumenten im Internet wird verstärkt XML als mögliches Format verwendet.

Alle Betriebssysteme, die Unicode unterstützen, erfordern zwecks Adressierung der zu verarbeitenden Daten eine Ausrichtung auf festgelegte Anfangsadressen, die bei zeichenartigen Datenobjekten je nach Unicode immer auf einer durch 2 oder 4 teilbaren Zahl beginnen müssen. Dazu kommen numerische Datenobjekte wie Integer oder Float, die je nach Betriebssystem eine durch 4 oder 8 teilbare Speicheradresse erfordern. Diese Voraussetzungen führen dazu, dass Strukturen mit unterschiedlichen Datentypen meistens Speicherlücken (Alignment A) aufweisen.

Während bisher das Zielfeld unter Berücksichtigung des Endians (MSB/LSB) Byte für Byte von links nach rechts mit

den Inhalten des Quellfeldes gefüllt wurde, verhindern unter Unicode Speicherlücken und Zeichenbereiche ein derartiges Vorgehen. Vielmehr können nur noch typgleiche Strukturbereiche, so genannte Fragmente F, ohne Datenverluste zugewiesen werden. Andernfalls würde riskiert, Nutzdaten mit Speicherlücken oder Speicherlücken

mit Nutzdaten zu überschreiben. In der Programmiersprache ABAP können folgende Datentypen zu Fragmenten

zusammengeschlossen und gleichartig behandelt werden:

Binär x, xstring

Zeichenartig c, n, d, t, string

Numerisch i, p, f

Page 9: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

9

struc s {

hex a[1];

char b[2]; Java

char c[6];

int d;

};

ASCII

Unicode

| F1 | F2 | F3 | F4 | F5 |

BEGIN OF s,

a TYPE x LENGTH 1,

b TYPE c LENGTH 2, ABAP

c TYPE c LENGTH 6,

d TYPE i,

END OF s.

Systeme

Ein Unicode-Programm ist ein Quelltext, der alle Anforderungen einer Unicode -Prüfung erfüllt und ausführt. Im Fall

von Programmiersprachen wie ABAP oder Java ist dazu ein C-Kernel erforderlich, der den Unicode -Zeichensatz

interpretieren kann. Ein solches Programm liefert in einem Nicht-Unicode-System dieselben Ergebnisse wie in einem

Unicode -System. Damit die Unicode-Prüfung in einer ABAP-Umgebung aber überhaupt wirksam wird, muss zunächst

das Unicode-Kennzeichen in den Eigenschaften folgender Entwicklungsobjekte gesetzt werden:

Programme

Klassen

Funktionsgruppen

Internet Services

c b d

c d A b

a

a A

Page 10: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

10

Die Unicode-Prüfung wird auch in einem Nicht-Unicode-System ausgeführt, sobald dieses Kennzeichen gesetzt ist.

Hier ist zudem möglich, alle Spracherweiterungen zu verwenden, die im Rahmen von Unicode eingeführt wurden,

womit die Lesbarkeit und Eindeutigkeit eines Quelltextes erhöht wird. Das Laufzeitverhalten und die Ergebnisse eines

Programms mit Unicode-Kennzeichen können aber nur in einem System mit Unicode-Kernel vollständig überprüft

werden, obwohl ein solches Programm auch in einem Nicht-Unicode-System ablauffähig ist. Umgekehrt kann ein

Programm ohne Unicode -Kennzeichen jedoch nur in einem Nicht-Unicode-System ausgeführt werden.

Prüfprogramm

Eine Liste alle Entwicklungsobjekte, die in einem Unicode-System einen Fehler auslösen würden, kann durch Aufruf

der Transaktion UCCHECK ausgegeben werden. Hier sind verschiedene Auswahlkriterien möglich, zum Beispiel die

Suche über Namen oder Pakete.

Ein Programm wird bereits als fehlerhaft angezeigt, wenn das Unicode-Kennzeichen in dessen Eigenschaften fehlt,

obwohl der Quelltext sonst korrekt ist. Es ist zu beachten, dass allein die statische Syntaxprüfung im Standard dieser Transaktion aktiv ist, während die dynamische Prüfung explizit eingeschaltet werden muss. Doch auch nach einer dynamische Prüfung wird empfohlen, das umgestellte Programm nochmals auf kritische Anweisungen zu prüfen, weil

bestimmte Aufrufe wie zum Beispiel CALL oder CREATE gerade in Verbindung mit Feldsymbolen und Datenreferenzen

von dieser Prüfung nicht vollständig erkannt und erst zur Laufzeit in ihrer ganzen Auswirkung offensichtlich werden.

Diese Vorgaben zwingen SAP-Kunden dazu, ihre Eigenentwicklungen zuerst in den Testsystemen anzupassen und

von eventuellen Syntaxfehlern zu befreien, die nach dem Setzen des Unicode-Kennzeichens auftreten. Sobald alle

Eigenentwicklungen angepasst und die Umstellungen mit Erfolg getestet wurden, können diese in das Produktivsystem transportiert werden.

Page 11: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

11

Zudem sollte stets eine Kopie des Produktivsystems mit einem Unicode-Kernel vorhanden sein, das im Zweifelsfall

zur Überprüfung des Laufzeitverhaltens genutzt werden kann. Da dieses System aber nicht zur Transportlandschaft gehört, muss hierfür entweder ein Quertransport beantragt oder die Änderung mittels Entwicklungsschlüssel im System

selbst durchgeführt werden. Von SAP wird angegeben, dass nach der Umstellung auf Unicode ein erhöhter

Speicherbedarf für Prozessor und Datenbank entsteht, der im Vergleich zu einem Nicht-Unicode-System etwa 70 Prozent ausmacht.

Es ist selbstverständlich, dass auch alle vom C-Kernel verwendeten Komponenten wie Betriebssystem oder Datenbank

sämtliche Unicode-Anforderungen unterstützen müssen. Außerdem sei bereits an dieser Stelle darauf hingewiesen,

dass der Datenaustausch zwischen einem Unicode-Programm und einer externen Schnittstelle nur dann funktioniert,

wenn auch das Partnerprogramm den Unicode-Zeichensatz versteht und Daten in diesem Format liefert.

Trifft diese Voraussetzung nicht zu, müssen die Daten der externen Schnittstelle im ABAP-Partnerprogramm in den

Unicode-Zeichensatz konvertiert werden, zum Beispiel mittels Verwendung derjenigen Methoden, die in den Klassen

CL_ABAP_CONV* für unterschiedliche Anforderungen angeboten werden. Umgekehrt müssen Daten, die an die externe

Schnittstelle gesendet werden, vor dem Senden umgewandelt werden, zum Beispiel in das UTF8-Format. Eine derartige

Umwandlung kann allerdings mit Datenverlusten verbunden sein, weil ein gewandeltes Zeichen möglicherweise keine

Entsprechung hat. Prinzipiell gilt aber, dass ein Unicode-Programm immer mit einem Nicht-Unicode-Programm Daten

austauschen kann, während der umgekehrte Fall nicht möglich ist.

Anweisungen

Nachfolgend sind alle ABAP-Anweisungen in alphabetischer Reihenfolge verzeichnet, deren Verwendung unter

Unicode zusätzlichen Einschränkungen unterliegt. Außerdem enthält diese Liste neue Sprachelemente und Zusätze,

die nur in Unicode-Programmen sinnvoll sind.

ADD .. ACCORDING/GIVING/RANGE

APPEND itab

ASSIGN+x(y)

ASSIGN .. RANGE/INCREMENT

CA/CN/CO/CS/NA/NS

CLEAR .. WITH

CONCATENATE

CONDENSE

CONVERT TEXT

CREATE DATA

DELETE .. FROM/TABLE

DESCRIBE .. IN BYTE/CHARACTER MODE

DO .. VARYING .. RANGE

EXPORT/IMPORT .. CODEPAGE HINT

FETCH dbtab .. INTO/INTO TABLE/APPENDING

FORM .. STRUCTURE

GET/SET PARAMETER

IF struc

INCLUDE TYPE/STRUCTURE .. RENAMING

INSERT .. FROM/TABLE

INSERT itab

INSERT REPORT .. UNICODE ENABLING

LOOP AT itab

MODIFY .. FROM/TABLE

MODIFY itab .. WHERE

MOVE+x(y)

MOVE-CORRESPONDING

OPEN DATASET .. IN .. MODE ENCODING/REPLACEMENT

OVERLAY

PERFORM+x(y)

READ TABLE itab

REFRESH itab FROM TABLE dbtab

REPLACE

Page 12: ABAP OO - wekum. · PDF file2 Themen 1. Arten der Programmierung 2. Vorteile der OO-Programmierung 3. Begriffe der OO-Programmierung 4. ABAP-Entwicklungsumgebungen 5

12

SEARCH

SELECT dbtab .. INTO/INTO TABLE/APPENDING

SET/GET BIT ..

SHIFT

SPLIT

STRLEN/CHARLEN/NUMOFCHAR()

TRANSLATE .. TO/USING/CODEPAGE

WRITE .. TO

WHILE .. VARY .. RANGE

Die Neugestaltung der ABAP-Sprachelemente wurde unter Unicode durch zusätzlich Klassen abgerundet, deren

Attribute und Methoden entweder einzelne Anweisungen ganz ersetzen oder Hilfen liefern, um bestimmte Befehle überhaupt ausführen zu können, zum Beispiel:

CL_ABAP_CHAR_UTILITIES

CL_ABAP_CONV*

CL_ABAP_MATH

CL_GUI_FRONTEND_SERCICES

Dokumentation

Eine ausführliche Beschreibung zum Thema Unicode ist in der ABAP-Dokumentation verfügbar, wenn nach Aufruf

der ABAP-Entwicklungsumgebung zum Beispiel mittels Transaktionen SE80 die Funktion Hilfe zu aufgerufen und dort

der Suchbegriff Unicode als Volltextsuche gestartet wird. Danach erscheint ein Fenster, das alle Kapitel und

Anweisungen zeigt, die im Rahmen von Unicode verändert oder eingeführt wurden. Außerdem sind im weltweiten

Netz weitere Beispiele und Informationen zum Thema ABAP-Unicode verfügbar.