ABAP Funktionsbausteine
Dieser Beitrag ist Teil des Kurses ABAP Grundlagen.
In diesem Beitrag stelle ich die Funktionsmodule, oder so genannte Funktionsbausteine, vor. Funktionsbausteine kapseln Funktionalität. Eine bestimmte Funktion kann mehrmals benutzt werden und vom beliebigen Programm aufgerufen werden. Dabei muss eine wiederkehrende Aufgabe nicht immer neu programmiert werden.
Funktionsbausteine finden auch bei der Programmierung von Customer Exit Variablen (kundeneigene Erweiterungen) Verwendung.
Funktionsbausteine werden in Funktionsgruppen abgelegt. Diese dienen als Behälter oder Container für Funktionsbausteine. In der Funktionsgruppe können globale Daten für die Funktionsmodule und Ereignisse definiert werden. Um eine Funktionsgruppe anzulegen, können Sie den Namen der Gruppe im Repository Browser (Transaktion SE80
) eingeben und mit ENTER
bestätigen.
Sie werden gefragt ob das Objekt angelegt werden soll. Bestätigen Sie mit Ja und vergeben Sie anschließend einen Namen für die Funktionsgruppe.
Innerhalb der Funktionsgruppe wollen wir einen Funktionsbaustein anlegen, welches die Detailinformationen zu einem bestimmten Handymodell auslesen soll. Die Details sind in einer Tabelle gespeichert die die folgende Struktur hat.
Neben dem Preis des Modells sind auch technische Informationen wie Prozessor, Akku-Laufzeit und Display gespeichert. Die Tabelle hat den folgenden Inhalt.
Unser Funktionsbaustein soll alle Details zu einem bestimmten Modell (ID) von der Datenbank lesen. Um einen Funktionsbaustein anzulegen, können Sie das Kontextmenü (Rechtsklick) der Funktionsgruppe benutzen.
Vergeben Sie anschließend einen Namen und sichern Sie.
Funktionsbausteine besitzen eine Schnittstelle, welche aus Parametern besteht. In den Schnittstellendefinitionen können verschiedene Arten von Parametern angelegt werden.
- Import – diese Parameter übernehmen Werte für die Weiterverarbeitung in den Funktionsbaustein.
- Export – damit liefert der Funktionsbaustein Ergebnisse nach außen. Der Empfänger kann, aber muss nicht, die Daten übernehmen.
- Changing – ist eine Mischung aus Import und Export. Der Funktionsbaustein kann den Inhalt solchen Parameters ändern und an das aufrufende Programm zurückgeben.
- Tabellen – diese Parameter sind veraltet und sollten nicht mehr verwendet werden, seit es Tabellentypen gibt.
- Ausnahmen – falls im Funktionsbaustein Situationen eintreten, die so nicht geplant waren, kann eine Ausnahme ausgelöst und über die Schnittstelle nach außen gereicht werden. Die Behandlung der Ausnahme findet nicht im Funktionsbaustein selbst statt, sondern beim Aufrufer.
Parameter können auch als optional gekennzeichnet werden. Das heißt muss nicht, aber kann, beim Aufruf Werte übergeben. Die Einstellung Wertübergabe steuert, ob ein Wert beim Aufruf physisch in den Parameter kopiert wird. Wenn das Häckchen nicht gesetzt ist, wird der Wert nicht kopiert, sondern nur die Hauptspeicheradresse wird beim Aufruf übergeben. Dies ist besonders bei großen Tabellen mit vielen Einträgen sinnvoll.
Nun legen wir Importparameter fest. Wir wollen dem Funktionsmodul eine Modellnummer übergeben.
Das Modul soll die Details zu diesem Modell zurückgeben. Also definieren wir einen Exportparameter vom Typ der Datenbanktabelle, die die Details beinhaltet.
Anschließend erfolgt die Umsetzung im Quelltext. Dabei werden die Details zu dem Modell i_id
von der Datenbank in die Exportstruktur e_detail
gelesen.
FUNCTION Z_GET_DETAILS. *"------------------------------------------ *"*"Lokale Schnittstelle: *" IMPORTING *" REFERENCE(I_ID) TYPE ZHANDYLIST-TID *" EXPORTING *" REFERENCE(E_DETAIL) TYPE ZHANDYLIST *"------------------------------------------ *Details zu der I_ID von der DB lesen SELECT SINGLE * FROM zhandylist INTO e_detail WHERE tid = i_id. ENDFUNCTION.
Anschließend können wir den Funktionsbaustein aufrufen, zum Beispiel in einem Programm. Der Aufruf kann auf drei Arten erfolgen:
- Manuell – sie tippen den Code selbst ein.
- Drag & Drop aus der Objektliste – im Repository Browser (Transaktion SE80)
- Muster (
STRG+F6
) – dabei erscheint ein Pop-up, in das man den Namen des Funktionsbausteins eingeben und den Aufruf produzieren lassen kann.
REPORT zhandylist. DATA: ls_details TYPE zhandylist. CALL FUNCTION 'Z_GET_DETAILS' EXPORTING i_id = '002' IMPORTING e_detail = ls_details.
Was bei der Parameterdefiniton im Funktionsbaustein ein Import ist, ist beim Aufruf ein Export. Und umgekehrt.
Anschließend kann das Ergebnis in dem Programm verarbeitet werden. So sollen zum Beispiel die Details auf dem Bildschirm präsentiert werden.
REPORT zhandylist. DATA: ls_details TYPE zhandylist. CALL FUNCTION 'Z_GET_DETAILS' EXPORTING i_id = '002' IMPORTING e_detail = ls_details. WRITE: / 'Modell: ', ls_details-tid. WRITE: / 'Preis: ', ls_details-tpreis, ls_details-tcurr. WRITE: / 'Prozessor: ', ls_details-tproz. WRITE: / 'Akku-Laufzeit (Std.): ', ls_details-takku. WRITE: / 'Gewicht (g): ', ls_details-tweight. WRITE: / 'Display: ', ls_details-tdisp. WRITE: / 'Diagonale (Zoll): ', ls_details-tdiag. ULINE.
Das Ergebnis sieht wie folgt aus.
Übrigens, unsere Funktionsgruppe ist selbst ein Programm, welches Includes einbindet. Diese beinhalten Datendeklarationen, Unterprogramme, Ereignisse und die jeweiligen Funktionsbausteine. Die Wirkung der INCLUDE
Anweisung ist die gleiche, als wenn man den Quellcode des Include-Programms anstelle der Anweisung kopiert hätte.
Wenn Sie auf die Funktionsgruppe doppelklicken und anschließend Rahmenprogramm (F5
) auswählen. Können Sie die einzelnen Includes einsehen. Dabei gibt es unterschiedliche Includes für die einzelnen Teilobjekte:
- TOP steht für globale Daten, Typen und Konstanten
- UXX steht für die Funktionsbausteine
- F<..> steht für Unterprogramme
- E<..> steht für Ereignisse
Quellen und weiterführende Literatur:
Karl-Heinz Kühnhauser, Thorsten Franz (2011): Discover ABAP, 3. Auflage, Bonn
Diese ABAP Tricks machen Ihr Leben leichter!
- In meinem Newsletter gebe ich eine Menge Tipps und Kniffe rund um ABAP.
- Die Mini-Tutorials unterstützen Sie dabei, Software in ABAP effizienter zu entwickeln.
- Praktische Anleitungen ermöglichen Ihnen schnelle Erfolge bei der Optimierung Ihrer Arbeit.
- Bei der Anmeldung zu meinem Newsletter erhalten Sie das Buch „ABAP Tipps und Tricks“ als Willkommensgeschenk.
Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.
Trackbacks & Pingbacks
[…] Nächstes, rufen Sie bitte die Transaktion SE37 auf. Geben Sie RSDDCVER_USAGE_MDATA_BY_SID als Funktionsbaustein ein und drücken Sie auf […]
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!