150 likes | 253 Views
Die Modularisierung dient ; der Les- und Pflegbarkeit von ABAP-Programmen, der Vermeidung von Redundanzen , der Wiederverwendbarkeit von Funktionalität und der Kapselung von Daten. Modularisierungstechniken. Verarbeitungsblöcke, die durch das ABAP-Laufzeitsystem aufgerufen werden:
E N D
Die Modularisierung dient ; der Les- und Pflegbarkeit von ABAP-Programmen, der Vermeidung von Redundanzen, der Wiederverwendbarkeit von Funktionalität und der Kapselung von Daten Modularisierungstechniken
Verarbeitungsblöcke, die durch das ABAP-Laufzeitsystem aufgerufen werden: Ereignisblöcke Dialogmodule Verarbeitungsblöcke, die aus ABAP-Programmen aufgerufen werden: Unterprogramme Funktionsbausteine Methoden Die aus ABAP-Programmen aufrufbaren Verarbeitungsblöcke heißen Prozeduren Modularisierungstechniken
Zusätzlich zur Modularisierung in Verarbeitungsblöcken bietet ABAP die Möglichkeit der Quelltext-Modularisierung, die es erlaubt ABAP-Anweisungen entweder lokal in Makros oder global in Include-Programmen zusammenzufassen. Quelltext-Module
Unterprogramme Unterprogramme dienen hauptsächlich der lokalen Modularisierung. Unterprogramme enthalten mehrfach verwendete Funktionalität innerhalb eines Programms zusammen und führen mehrfach benötigte Aufgaben aus. Funktionsbausteine Funktionsbausteine dienen ausschließlich der globalen Modularisierung, also dem Aufruf aus anderen Programmen. Funktionsbausteine enthalten Funktionalität, die systemweit von verschiedenen Programmen verwendet wird. Funktionsbausteine können nur in Funktionsgruppen definiert, aber aus allen Programmen aufgerufen werden. Methoden Methoden enthalten die Funktionalität bzw. das Verhalten von Klassen und deren Instanzen in ABAP Objects, der objektorientierten Erweiterung von ABAP. Prozeduren
Unterprogramme sind Prozeduren, die in jedem ABAP- Programmen definiert und aus jedem ABAP-Programm aufgerufen werden können. Unterprogramme dienen hauptsächlich dem internen Aufruf, also um lokal häufig benutzte Programmteile oder Algorithmen nur einmal schreiben zu müssen. Der globalen Wiederverwendung von Funktionalität dienen Funktionsbausteine. Unterprogramme
Ein Unterprogramm ist ein Verarbeitungsblock, der zwischen den Anweisungen FORM und ENDFORM eingeschlossen ist: FORM <subr> [USING ... [VALUE(]<pi>[)] [TYPE <t>|LIKE <f>].. ] [CHANGING... [VALUE(]<pi>[)] [TYPE <t>|LIKE <f>]... ]. ... ENDFORM. <subr> ist der Name des Unterprogramms. Die optionalen Zusätze USING und CHANGING definieren die Parameterschnittstelle. Wie alle Verarbeitungsblöcke können Unterprogramme nicht geschachtelt werden. Es empfiehlt sich insbesondere bei ausführbaren Programmen vom Typ 1 die Definition aller Unterprogramme am Ende des Programmtextes anzuordnen, damit nicht versehentlich unausführbare Anweisungen dadurch entstehen, daß ein Unterprogramm einen Ereignisblock an der falschen Stelle abschließt. Definition von Unterprogrammen
Parameter mit Referenzübergabe Diese Parameter werden ohne die Angabe VALUE hinter USING oder CHANGING aufgeführt: FORM <subr> USING ... <pi> [TYPE <t>|LIKE <f>] ... CHANGING ... <pi> [TYPE <t>|LIKE <f>] ... Eingabeparameter mit Wertübergabe Diese Parameter werden mit der Angabe VALUE hinter USING aufgeführt: FORM <subr> USING ... VALUE(<pi>) [TYPE <t>|LIKE <f>] ... Ausgabeparameter mit Wertübergabe Diese Parameter werden mit der Angabe VALUE hinter CHANGING aufgeführt: FORM <subr> CHANGING ... VALUE(<pi>) [TYPE <t>|LIKE <f>] ... Die Parameterschnittstelle
Unterprogramme werden über PERFORM... [USING ... <pi>... ] [CHANGING... <pi>... ]. PERFORM <subr>(<prog>) [USING ... <pi>... ] [CHANGING... <pi>... ] [IF FOUND]. Der Programmname <prog> wird statisch angegeben. Durch Die Verwendung der Option IF FOUND läßt sich ein Laufzeitfehler verhindern, wenn das Programm <prog> kein Unterprogramm <sub> enthält. Dann ignoriert das System die PERFORM- Anweisung Aufruf von Unterprogrammen
Generische Typangaben TYPE ANY Das Unterprogramm akzeptiert alle Typen von Aktualparametern. Alle technischen Eigenschaften des Aktualparameters werden an den Formalparameter übergeben. TYPE C, N, P oder X Das Unterprogramm akzeptiert nur Aktualparameter vom Typ C, N, P bzw. X . Die Feldlänge und DECIMALS-Angabe (für Typ P) werden vom Aktualparameter an den Formalparameter übergeben. TYPE TABLE Das System prüft, ob der Aktualparameter eine interne Standardtabelle ist. Diese Typisierung ist eine Kurzform von TYPE STANDARD TABLE . TYPE ANY TABLE Das System prüft, ob der Aktualparameter eine interne Tabelle ist. Typisierung von Formalparametern
Generische Typangaben TYPE INDEX TABLE Das System prüft, ob der Aktualparameter eine interne Index-Tabelle (also Eine Standard- oder sortierte Tabelle aber keine Hash-Tabelle) ist. TYPE STANDARD TABLE Das System prüft, ob der Aktualparameter eine interne Standard-Tabelle ist. TYPE SORTED TABLE Das System prüft, ob der Aktualparameter eine sortierte interne Tabelle ist. TYPE HASHED TABLE Das System prüft, ob der Aktualparameter eine interne HASH-Tabelle ist. Typisierung von Formalparametern
Funktionsbausteine sind Prozeduren, die nur innerhalb spezieller ABAP-Programme, den sogenannten Funktionsgruppen vom Typ F, definiert, aber aus allen ABAP-Programmen aufgerufen werden können. Funktionsgruppen sind Behälter für thematisch zusammengehörige Funktionsbausteine. Das Anlegen von Funktionsgruppen und von Funktionsbausteinen erfolgt mit dem Werkzeug Function Builder der ABAP Workbench Funktionsbausteine
Funktionsgruppen sind Behälter bzw. Rahmenprogramme für Funktionsbausteine. Funktionsgruppen können nicht ausgeführt werden. Beim Aufruf eines Funktionsbausteins wird die gesamte Funktionsgruppe, in der sich der Funktionsbaustein befindet, in den internen Modus des aufrufenden Programms geladen, falls sie sich noch nicht dort befindet Funktionsgruppen
CALL FUNCTION <baustein> [EXPORTING f1 = a 1.... f n = a n] [IMPORTING f1 = a 1.... f n = a n] [CHANGING f1 = a 1.... f n = a n] [TABLES f1 = a 1.... f n = a n] [EXCEPTIONS e1 = r 1.... e n = r n [OTHERS = ro]]. Funktionsbausteinaufruf in ABAP
Übung 1 FORM-Schnittstelle Erstellen Sie eine Report ZFORMINTAB_**, der für eine vom Anwender einzugebende Depotnummer (s. Abbildung), die Wertpapierkennnummer und die Anzahl der darin enthaltenen Wertpapiere über ein FORM-Unterprogramm ausgibt.
Übung 2 Funktionsbaustein Erstellen Sie eine Funktionsgruppe Z_UEBUNG2_** mit einem darin enthaltenen Funktionsbaustein Z_KURS_**, der von 3 Aktienkursen den Durchschnittkurs berechnet. Der einzugebende Kurs soll immer grösser als Null sein.