Anfang des Inhaltsbereichs

Funktionsbausteine aufrufen Dokument im Navigationsbaum lokalisieren

Dieser Abschnitt beschreibt den Aufruf von Funktionsbausteinen aus der Funktionsbilbliothek.

Funktionsbausteine suchen

Bevor man neue Funktionalität in programmiert oder eigene Funktionsbausteine anlegt, kann es sich unter Umständen lohnen, nach vorhandenen Funktionsbausteinen zu suchen, die die gewünschte Funktionalität enthalten und diese im Programm aufzurufen.

Die Dokumentation Strukturlink Funktionsbausteine suchen der ABAP Workbench enthält nähere Informationen zum Suchen von Funktionsbausteinen im Function Builder. Beispielsweise kann man versuchen, über das Suchkriterium *STRING* im Repository-Infosystem eine Liste sämtlicher Funktionsbausteine anzeigen zu lassen, die mit Stringverarbeitung zu tun haben. Hier ein Ausschnitt aus der gefundenen Liste:

Diese Grafik wird im zugehörigen Text erklärt

Der Titel CSTR bezeichnet die Funktionsgruppe. Es gibt also ein Rahmenprogramm SAPLCSTR vom Typ F, das diese Funktionsbausteine enthält. Durch Auswahl eines Funktionsbausteins kann man sich im Function Builder sämtliche Attribute des gefundenen Bausteins anzeigen lassen.

Wichtige Attribute für die Verwendung sind die

Die Dokumentation beschreibt die Aufgabe des Funktionsbausteins und listet die Schnittstellenparameter sowie die Ausnahmen auf. Hier erkennt man, welche Ein-und Aushabeparameter der Funktionsbaustein hat und welche Fehlersituationen im Funktionsbaustein behandelt werden.

Die Anzeige der einzelnen Schnittstellenparameter und Ausnahmen liefert nähere Informationen darüber, wie der Funktionsbaustein zu behandeln ist. Die Dokumentation Strukturlink Informationen über Schnittstellenparameter anzeigen der ABAP Workbench enthält hierzu nähere Informationen. Funktionsbausteine könnnen folgende Schnittstellenparameter haben:

Die Schnittstellenparameter können typisiert sein. Dabei ist der Bezug auf sämtliche Datentypen im ABAP Dictionary und auf elementare ABAP-Datentypen möglich. Beim Aufruf eines Funktionsbausteins ist darauf zu achten, daß die Aktualparameter kompatibel zu den Schnittstellenparametern sind.

Die Schnittstellenparameter werden standardmäßig per Wert, oder falls angekreuzt per Referenz übergeben. Tabellen-Parameter werden nur als Referenz übergeben. Optionale Import- und Changing-Parameter können mit Vorschlagswerten versehen sein. Falls der Aufrufer einen optionalen Parameter nicht übergibt, bleibt der Parameter entweder initial oder wird auf den der eventuellen Vorschlagswert gesetzt.

Ausnahmen dienen zur Behandlung von Fehlersituationen, die in Funktionsbausteinen aufttreten können. Das aufrufende Programm fragt über die Ausnahmen ab, ob Fehler aufgetreten sind und kann danach geeignet verfahren.

Funktionsbausteine testen

Vor dem Einbau in ein Programm kann ein Funktionsbaustein eigenständig getestet werden.

Diese Grafik wird im zugehörigen Text erklärt

Die Dokumentation Strukturlink Funktionsbausteine testen der ABAP Workbench enthält nähere Informationen zum Testen von Funktionsbausteinen im Function Builder.

Funktionsbausteinaufruf in ABAP

Dei Anweisung CALL FUNCTION ruft einen Funktionsbaustein auf:

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 [ERROR_MESSAGE = r E]
                                     [OTHERS = ro]].

Der Name des Funktionsbausteins <baustein> wird als Literal oder als Variable angegeben. Jedem verwendeten Schnittstellenparameter <fi> wird explizit ein Aktualparameter <a i> zugeordnet. Jeder Ausnahme <e i> kann eine Rückgabewert <r i> zugeordnet werden. Die Zuordnungen haben immer die Form <Schnittstellenparameter> = <Aktualparameter>. Das Gleichheitszeichen (=) ist hier kein Zuweisungsoperator.

Mit der Option EXCEPTIONS können die Ausnahmen des Funktionsbausteins behandelt werden. Wird während der Funktionsbausteinausführung eine Ausnahme <e i > ausgelöst, unterbricht das System die Abarbeitung des Funktionsbausteins und gibt keine Werte vom Funktionsbaustein an das Programm weiter außer denen, die als Referenz übertragen werden. Wenn <e i > hinter der Option EXCEPTION angegeben ist, behandelt das aufrufende Programm die Ausnahme, indem es SY-SUBRC den Wert <r i > zuweist. <r i > muß als Zahlenliteral angegeben werden.

Durch die Angabe von ERROR_MESSAGE in der EXCEPTION-Liste kann man die Nachrichtenbehandlung in Funktionsbausteinen beinflussen. Normalerweise sollten Nachrichten in Funktionsbausteinen nur über die Anweisung MESSAGE....RAISING aufgerufen werden. Mit ERROR_MESSAGE wird bewirkt, daß Nachrichten, die im Funktionsbaustein ausnahmsweise ohne den RAISING-Zusatz aufgerufen werden, wie folgt behandelt werden:

Mit der Angabe von OTHERS hinter EXCEPTIONS werden sämtliche Ausnahmen, die nicht explizit in der Liste aufgeführt werden, einem einzigen Rückgabewert zugewiesen.

Der gleiche Rückgabewert <r i > ist für mehrere Ausnahmen zulässig.

Beispiel

Die empfohlene und gleichzeitig bequemste Vorgehensweise für den statischen Aufruf eines Funktionsbausteins ist das Einfügen eines Anweisungsmusters im ABAP Editor. Durch Markieren von Call Function und Angabe des Namens des gewünschten Funktionsbausteins, wobei auch die Wertehilfe verwendet werden kann, wird eine CALL FUNCTION-Anweisung mit allen zulässigen Optionen des Funktionsbausteins in den Quelltext eingefügt.

Diese Grafik wird im zugehörigen Text erklärt

Die optionalen Angaben werden als Kommentar eingefügt. Im obigen Fall müssen die Import-Parameter STRING und POS des Funktionsbausteins versorgt werden. Der Import-Parameter LANGU ist optional und im Funktionsbaustein mit dem Systemfeld SY-LANGU vorbelegt. Die Bearbeitung aller Export-Parameter ist optional. Die Behandlung von Ausnahmen ist zwar eigentlich auch optional, sollte aber auf alle Fälle durchgeführt werden. Dehalb sind hier keine Kommentarsterne eingefügt.

Ausnahmen werden im Funktionsbaustein entweder über die Anweisung RAISE oder MESSAGE … RAISING ausgelöst. Wenn das aufrufende Programm die Ausnahme behandelt, geben beide Anweisungen die Programmsteuerung an das aufrufende Programm zurück. Die Anweisung MESSAGE..... RAISING zeigt dann keine Nachricht an, sondern trägt folgende Werte in Systemfelder ein:

Die Systemfelder können beispielsweise nach dem Aufruf des Funktionsbausteins verwendet werden, um die Nachricht im aufrufenden Programm auszulösen.

Für die Verwendung von Aktualparametern mit den richtigen Datentypen, muß man sich die Schnittstelle des Funktionabausteins ansehen. Durch Vorwärtsnavigation (Doppelklick auf den Namen des Funktionsbausteins im Editor) gelangt man in das Werkzeug Function Builder, wo der Quelltext des Funktionsbausteins angezeigt wird. Über Springen ® Schnittstelle wird die Schnittstelle gezeigt.

Im obigen Fall haben beispielsweise

Der vollständige Aufruf des Funktionsbaustein STRING_SPLIT_AT_POSITION kann beispielsweise wie folgt aussehen:

REPORT demo_mod_tech_fb_string_split.

DATA: text(10) TYPE c VALUE '0123456789',
      text1(6) TYPE c,
      text2(6) TYPE c.

PARAMETERS position TYPE i.

CALL FUNCTION 'STRING_SPLIT_AT_POSITION'
     EXPORTING
          string            = text
          pos               = position
     IMPORTING
          string1           = text1
          string2           = text2
     EXCEPTIONS
          string1_too_small = 1
          string2_too_small = 2
          pos_not_valid     = 3
          OTHERS            = 4.

CASE sy-subrc.
  WHEN 0.
    WRITE: / text, / text1, / text2.
  WHEN 1.
    WRITE 'Target field 1 too short!'.
  WHEN 2.
    WRITE 'Target field 2 too short!'.
  WHEN 3.
    WRITE 'Invalid split position!'.
  WHEN 4.
    WRITE 'Other errors!'.
ENDCASE.

Der Funktionsbaustein teilt ein Eingabefeld an einer angegebenen Position in zwei Ausgabefelder auf.Falls der Inhalt von POSITION im Intervall [4,6] liegt, wird der Funktionsbaustein ohne das Auslösen von Ausnahmen ausgeführt. Für die Intervalle [1,3] und [7,9] werden die Ausnahmen STRING2_TOO_SMALL bzw. STRING2_TOO_SMALL ausgelöst. Für alle übrigen Werte von POSITION wird die Ausnahme POS_NOT_VALID ausgelöst.

Ende des Inhaltsbereichs