Anfang des Inhaltsbereichs

konzeptionelle Dokumentation Überblick über das Coding von Funktionsbausteinen  Dokument im Navigationsbaum lokalisieren

Das System legt die Organisation der Objekte einer Funktionsgruppe und seiner Funktionsbausteine vorab fest. Wenn Sie eine Funktionsgruppe anlegen, erzeugt die Workbench automatisch ein Rahmenprogramm, globale Daten und einen Quelltext. Das System benennt das Rahmenprogramm in der Form SAPL<fgrp>. Die Variable <fgrp> steht für den Namen der Funktionsgruppe.

Die Workbench legt für jeden Funktionsbaustein einer Funktionsgruppe automatisch ein Include-Programm an, und zwar in der Reihenfolge, in der sie hinzugefügt werden. Sie können dieses Include-Programm anzeigen, indem Sie auf dem Einstiegsbild des Function Builders Quelltext markieren. Das System benennt das Include-Programm in der Form L<fgrp>U<nn>. Im Include-Programm der Funktionsgruppe FGRP beispielsweise liegt der erste Funktionsbaustein im Include LFGRPU01. Die folgenden Bausteine finden sich in den Include-Programmen LFGRPU02, LFGRPU03, LFGRPU04 usw.

Hauptfunktionsprogramm

Das Hauptfunktionsprogramm einer Funktionsgruppe wird vom Function Builder in einem Include L<funktgrp>UXX generiert, der nur vom Function Builder selbst bearbeitet werden darf. Für die Funktionsgruppe FGRP beispielsweise würde das Hauptfunktionsprogramm LFGRPUXX heißen.

Funktionsbausteine programmieren

Ist die Schnittstelle des Funktionsbausteins festgelegt, so kann mit der Programmierung des Funktionsbausteins begonnen werden.

Auf dem Einstiegsbild des Function Builders markieren Sie Auswahlknopf Quelltext. Damit verzweigen Sie in den ABAP-Editor, in dem Sie Ihre Anweisungen zwischen FUNCTION und ENDFUNCTION einfügen.
Die definierten Parameter und Ausnahmen erscheinen als Kommentare am Anfang des Quelltextes:

Diese Grafik wird im zugehörigen Text erklärt

 

Einige Besonderheiten der Programmierung von Funktionsbausteinen:

Datenbehandlung in Funktionsbausteinen

Unterprogramme von Funktionsbausteinen aus aufrufen

Sie können verschiedene Unterprogramme von Funktionsbausteinen aus aufrufen.

Ausnahmen auslösen

Innerhalb eines Funktionsbausteins sind alle Ausnahmen durch ihre definierten Bezeichner verfügbar. Die Ausnahmen können vom System oder vom aufrufenden Programm behandelt wird. Darüber entscheiden Sie erst beim Funktionsaufruf, etwa durch Zuweisung eines numerischen Wertes an die entsprechenden Ausnahmen. Näheres finden Sie dazu unter Funktionsbausteine aus Ihrem Coding aufrufen

 

Ausnahmen müssen innerhalb eines Funktionsbausteins explizit ausgelöst werden.
ABAP bietet dazu zwei Anweisungen, die ausschließlich in Funktionsbausteinen verwendet werden können:

Syntax

RAISE <Ausnahme>.

MESSAGE..... RAISING <Ausnahme>.

Die Wirkung dieser Anweisungen hängt davon ab, ob die Ausnahme vom aufrufenden Programm oder vom System verarbeitet wird.

Wird aber die Ausnahme nicht vom aufrufenden Programm behandelt, erzeugt das System einen Laufzeitfehler.

SY-MSGID (Meldungskennung)

SY-MSGTY (Meldungstyp)

SY-MSGNO (Meldungsnummer)

SY-MSGV1 bis SY-MSGV4 (Inhalt der Felder <f1> bis <f4>, die in die Meldung eingeschlossen sind).

Für weitere Information lesen Sie auch die Schlüsselwortdokumentation zu MESSAGE).

Um das Vorgehen zu veranschaulichen, geben wir das folgende Beipiel an:

Beispiel

In diesem Beispiel verwenden wir den folgenden Funktionsbaustein:

Diese Grafik wird im zugehörigen Text erklärt

Wenn N1 nicht gleich Null ist, wird Z1 durch N1 dividiert. Andernfalls wird die Ausnahme DIV_ZERO ausgelöst.

Beispiel: Das Programm MDTEST ruft die Funktion MY_DIVIDE auf:

Diese Grafik wird im zugehörigen Text erklärt

 

Nach dem Start des Programms MDTEST sieht die Ausgabe so aus:

Result = 1,500000

Wenn Sie in der EXPORTING-Liste N1 = 4 durch N1 = 0 ersetzen, verarbeitet das Programm MDTEST die Ausnahme DIV_ZERO, indem es SY-SUBRC den Wert 1 zuweist. Dadurch entsteht folgende Ausgabe:

Division by zero