1.2 Anwendungsprogramme und Laufzeitumgebung 

Im SAP-System wird bei SAP-GUI-basierten Anwendungsprogrammen grundsätzlich zwischen Reports und Dynpros unterschieden.
-
Reports
Reports sind ursprünglich nichts anderes als Batch-Programme, die Listen erzeugen, Datenschnittstellen versorgen etc. Klassische Reports können zwar über einen Selektionsbildschirm mit Startparametern versorgt werden, laufen dann aber immer nach derselben Programmlogik ab. Während der Programmausführung kann der Anwender nicht mehr steuernd eingreifen. -
Dynpros
Bei den dynamischen Programmen, den sogenannten Dynpros, ist hingegen ein Eingriff in den Programmablauf während der Ausführung möglich. Dynpros arbeiten mit Folgen von Dialogbildschirmen. Der Programmablauf hängt davon ab, wie der Anwender den Dialogbildschirm ausfüllt oder welche Funktionen er auslöst.
Diese Grenze verschwimmt jedoch bereits seit langer Zeit. So können Reports seit einigen Releases Bildschirmlisten mit vielen interaktiven Funktionen besitzen. Neue Werkzeuge wie der SAP List Viewer (ALV) befördern diesen Trend. Hinzu kommen Innovationen wie der SAP NetWeaver Business Client (NWBC), mit dem Dynpros und Webinhalte innerhalb eines Anwendungsbildschirms gemischt werden können. Dazu werden leichtgewichtige Webanwendungen, sogenannte CHIPs (Collaborative Human Interface Part), auf dem Bildschirm in einer Seitenleiste namens Sidepanel dargestellt.
Für den Einstieg in ABAP geht dieses Buch auf die Dynpros lediglich im Zusammenhang mit Selektionsbildschirmen und Listausgaben auf dem Bildschirm ein (siehe Kapitel 11, »Selektionsbildschirme«).
1.2.1 Workprozesse 

Alle in ABAP geschriebenen Anwendungsprogramme laufen in ABAP-Workprozessen auf dem Applikationsserver. Damit sind die Programme unabhängig von Betriebssystem und Datenbank (siehe Abschnitt 1.1.1, »Technische Architektur«). Workprozesse sind Systembenutzer des Datenbanksystems, deren Anzahl und deren Typ beim Start eines SAP-Systems festgelegt werden – als würde eine vordefinierte Anzahl von Leitungen oder Kanälen zum Datenbanksystem aufgebaut, die unterschiedliche Eigenschaften bzw. Typen haben.
[»] Dispatcher
Wie viele Benutzer sich an einem SAP-System anmelden, ist technisch durch die Architektur des Systems nicht begrenzt. In der Praxis ist die Zahl der Benutzer häufig erheblich größer als die Zahl der zur Verfügung stehenden Workprozesse. Deshalb kann ein Benutzer für die Dauer seiner Anmeldung nicht einem Workprozess fest zugewiesen werden. Die Verteilung der Benutzeranforderungen auf die gerade freien Workprozesse regelt ein eigenes Subsystem, der sogenannte Dispatcher.
Der Dispatcher versucht dahingehend zu optimieren, dass aufeinanderfolgende Dialogschritte einer Anwendung möglichst denselben Workprozess erhalten. Falls dies jedoch nicht möglich ist, werden die einzelnen Dialogschritte einer Anwendung unterschiedlichen Workprozessen zugewiesen.
Ein ABAP-Workprozess kann eine Anwendung ausführen und hat Zugriff auf Speicherbereiche, in denen sich die Objekte und Daten der laufenden Anwendungsprogramme befinden. Er stellt darüber hinaus drei wesentliche Dinge zur Verfügung:
-
Dynpro-Prozessor
Alle Anwendungsprogramme verfügen über eine Ablauf- und eine Verarbeitungslogik. Für die Ablauflogik ist der Dynpro-Prozessor zuständig. Er reagiert auf Benutzeraktionen in Bildschirmmasken und steuert den weiteren Programmablauf. Er ist mit anderen Worten für den Dialog und die Dialogsteuerung zuständig, kann aber beispielsweise nicht rechnen. -
ABAP-Prozessor
Der ABAP-Prozessor ist für die eigentliche Verarbeitungslogik verantwortlich. Er erhält Bildschirmeingaben vom Dynpro-Prozessor und sendet diesem Bildschirmausgaben. Der ABAP-Prozessor kann arithmetische und logische Operationen durchführen, Berechtigungen prüfen, Zugriffe sperren und freigeben und über die Datenbankschnittstelle auf der Datenbank lesen und schreiben. -
Datenbankschnittstelle
Für den Datenbankzugriff über die Datenbankschnittstelle existiert ein datenbankunabhängiger Satz von ABAP-Anweisungen, die unter der Bezeichnung Open SQL zusammengefasst werden. Mittels Open SQL wird über die Datenbankschnittstelle jedes zertifizierte Datenbanksystem mit einem einheitlichen SAP-Kommandosatz angesprochen. Durch diese Kapselung ist es für die ABAP-Programmierung normalerweise nicht einmal mehr notwendig zu wissen, welches physische Datenbanksystem unter dem SAP-System vorhanden ist.Es besteht auch die Möglichkeit, die Datenbank direkt mit ihren eigenen SQL-Anweisungen (Native SQL) anzusprechen. Dieses Vorgehen war bis vor Kurzem in der SAP-Welt noch verpönt, da jede SAP-basierte Anwendung vollständig unabhängig von dem eingesetzten Datenbanksystem sein sollte. Im Zusammenhang mit SAP HANA wurde das Tabu gelockert, um HANA-spezifische Funktionen in ABAP-Anwendungen nutzbar zu machen. Aufgrund erhöhter Sicherheits- und Stabilitätsrisiken wird dieser Weg nur ausnahmsweise gewählt und für Einsteiger nicht empfohlen.
Auch wenn es bei der praktischen Arbeit am System zunächst nicht so erscheint, spielt doch der ABAP-Prozessor eher eine untergeordnete, passive Rolle und der Dynpro-Prozessor eine aktive. Letzterer bestimmt, welche Module (siehe Abschnitt 1.2.2, »Struktur von ABAP-Programmen«) in welcher Reihenfolge aufgerufen werden, die der ABAP-Prozessor dann ausführt. Bei diesen häufig verwendeten Standardaufgaben werden die Dynpros implizit aus den ABAP-Anweisungen der Verarbeitungslogik generiert. In allen anderen Fällen müssen die entsprechenden Werkzeuge und Anweisungen für den Dynpro- bzw. den ABAP-Prozessor verwendet werden.
[ ! ] Zwei Welten
ABAP- und Dynpro-Prozessor bilden zwei verschiedene Welten mit unterschiedlichen Aufgaben, jeweils eigenen Werkzeugen, Kommandosätzen, Datendeklarationen und Speicherbereichen. Beispielsweise sind Feldinhalte aus der einen Welt nicht automatisch in der anderen Welt bekannt. Die Übergabe von Feldinhalten erfolgt zu genau festgelegten Zeitpunkten und nur dann, wenn auf der anderen Seite namensgleiche Felder vorhanden sind. Es gibt Anweisungen, die nur in ihrer jeweils eigenen Welt funktionieren. So kann etwa der Dynpro-Prozessor keine arithmetischen Operationen ausführen. Andererseits gibt es Anweisungen, die in beiden Welten vorkommen, jedoch dort jeweils unterschiedliche Bedeutungen und unterschiedliche Zusätze haben.
Die Gesamtheit der beteiligten Workprozesse des ABAP- und des Dynpro-Prozessors wird als ABAP-Laufzeitumgebung bezeichnet. Diese steuert die Bildschirme und Verarbeitungsblöcke gleichermaßen.
1.2.2 Struktur von ABAP-Programmen 

Jedes ABAP-Programm besteht grundsätzlich aus zwei Teilen: dem Deklarationsteil und den Verarbeitungsblöcken. Im Deklarationsteil werden Typen, Tabellen, Strukturen, Arbeitsbereiche, Felder etc. definiert. Deklarationen für globale Daten stehen im gesamten Report mit all seinen Unterprogrammen zur Verfügung und sind in allen internen Verarbeitungsblöcken auf sämtlichen Ebenen bekannt. Im Gegensatz hierzu stehen lokale Daten, die in einer Prozedur deklariert werden, nur in genau dieser Prozedur zur Verfügung. Ferner finden wir im Deklarationsteil beispielsweise noch die Deklarationen von Selektionsbildern.
Zusammengefasst enthält der Deklarationsteil:
-
Deklarationsanweisungen für die globalen Daten, Tabellen und Typen
-
alle Definitionen und Parameter für den Selektionsbildschirm
-
falls mit ABAP Objects gearbeitet wird: alle Deklarationen von programminternen Klassen
[»] ABAP Objects
ABAP Objects bezeichnet die Erweiterung der ABAP-Sprachelemente um objektorientierte Elemente. Damit sind Kapselung, Interfaces, Vererbung etc. auch in ABAP objektorientiert möglich. Mit der Einführung von ABAP Objects ist eine »Rechtschreibreform«, d. h. eine strengere Syntaxprüfung verbunden. Mehr zu ABAP Objects lesen Sie in Kapitel 12, »Interne Tabellen«.
Der zweite Teil sind die Verarbeitungsblöcke des Programms: Sie sind technisch betrachtet modulare Einheiten, die vom Dynpro-Prozessor nach bestimmten Regeln aufgerufen werden können. Betriebswirtschaftlich könnte man Verarbeitungsblöcke als kleine gekapselte Teilaufgaben betrachten. Hierzu gehören:
-
Dialogmodule
Dialogmodule und Prozeduren werden durch ABAP-Anweisungen aufgerufen, z. B. der Selektionsbildschirm oder die Listausgabe auf dem Bildschirm. Die Listausgabe ist das Ergebnisbild des Programms, das z. B. bei Hintergrundprogrammen auch auf einen Drucker geleitet werden kann. -
Ereignisblöcke
Ereignisblöcke (kurz Ereignisse) werden mit Ereignisschlüsselwörtern eingeleitet. Sie enden implizit, z. B. durch den Beginn des nachfolgenden Ereignisses oder durch das Programmende. Beispielsweise ist der Beginn einer neuen Seite bei einer Druckliste ein Ereignis, mit dem das Drucken des Seitenkopfes ausgelöst wird. Andere Ereignisse sind das Auswählen einer Listzeile durch einen Doppelklick oder das Drücken eines Buttons im Dialogbildschirm. -
Prozeduren
Prozeduren sind beispielsweise Methoden in ABAP-Klassen, Unterprogramme oder Funktionsbausteine. Funktionsbausteine sind standardisierte Unterprogramme für häufig vorkommende Aufgaben, z. B. für den Upload oder den Download von Daten. Sie werden in dieser Rolle zunehmend von ABAP-Klassen abgelöst (siehe Abschnitt 1.3.2, »ABAP Workbench«).
Mehr zu Ereignisblöcken lesen Sie in Kapitel 11, »Selektionsbildschirme«.
ABAP-Programme sind modular aufgebaut, damit die einzelnen Verarbeitungsblöcke den entsprechenden Dialogschritten zugeordnet und vom Dialogprozessor aufgerufen werden können. Ein Verarbeitungsblock besteht normalerweise aus mehreren ABAP-Anweisungen. Werden nach dem Deklarationsteil explizit keine Verarbeitungsblöcke, wie Ereignisse, in den Quellcode geschrieben, sind alle nachfolgenden ABAP-Anweisungen per Definition Teil des Ereignisblocks START-OF-SELECTION.
[»] Lesbarkeit, Transparenz und Wartbarkeit
Von Anfang an sollten Sie beim Erstellen eigener Programme diese Modularisierungsmöglichkeiten nutzen, um den Quellcode zu gestalten. Lesbarkeit, Transparenz und Wartbarkeit sind Qualitätskriterien für ein gutes Programm. Es reicht nicht, wenn das Programm tut, was es soll – dies wird ohnehin erwartet. Ein den Programmiergrundsätzen entsprechendes Programm muss darüber hinaus von einer fremden dritten Person gelesen werden können wie ein Buch. Diese Person muss verstehen, was im Quellcode geschieht und warum. Sie muss bei Bedarf auch schnell die Stelle für eine eventuell nötige Programmänderung finden und dort die Änderung vornehmen können. Voraussetzung hierfür ist natürlich, dass diese fremde dritte Person über hinreichende Qualifikationen verfügt.
Zu Ihrem Erstaunen werden Sie übrigens überraschend schnell selbst diese dritte Person sein: Gesetzliche und organisatorische Veränderungen stellen häufig neue Anforderungen an ein Programm, die eingebaut werden müssen. Interessanterweise kann es auch bei den eigenen Programmen vorkommen, dass diese bereits nach sechs Monaten untersucht werden müssen, als ob sie von einer fremden Person geschrieben worden wären.
Wird ein ABAP-Programm ausgeführt, werden dessen Verarbeitungsblöcke vom Dynpro-Prozessor aufgerufen. Die Steuerung übernimmt dabei die ABAP-Laufzeitumgebung. Ein Programm kann demnach nur dann ausgeführt werden, wenn der erste Verarbeitungsblock des Programms, beispielsweise LOAD-OF-PROGRAM, von der Laufzeitumgebung aufgerufen werden kann. Der Start des Programms kann durch einen Benutzer, aber auch durch das System selbst ausgelöst werden. Grundsätzlich können Sie jedem Programm einen Menüpfad und einen Transaktionscode (das ist ein Kürzel, das Sie eingeben können, um unter Umgehung des regulären Menüpfads direkt einen bestimmten SAP-Dialog aufzurufen) zuordnen; für die Navigation stehen damit alle Möglichkeiten zur Verfügung.
Eine zu ändernde Stelle sollte wiederum so modularisiert werden, dass sie keine unerwünschten Seiteneffekte erzeugt. Stellen Sie sich ein Baukastensystem vor, bei dem Sie einen Baustein entfernen und durch einen anderen ersetzen, ohne dass der Baukasten durcheinandergerät. Sie tauschen ein Modul gegen ein anderes aus, und das System muss weiterlaufen wie zuvor – nur eben mit einem neuen Modul, das mehr kann als das alte.
Es lohnt sich daher in jedem Fall, die Grundsätze Lesbarkeit, Transparenz und Änderbarkeit zu beachten. Spätestens am Ende dieses Buches werden Sie hierzu in der Lage sein.