
Dieser Abschnitt beschreibt den Aufruf von Funktionsbausteinen aus der Funktionsbilbliothek.
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 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:
Die Dokumentation beschreibt die Aufgabe des Funktionsbausteins und listet die Schnittstellenparameter sowie die Ausnahmen auf. Hier erkennt man, welche Ein- und Ausgabeparameter 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 Informationen über Schnittstellenparameter anzeigen der ABAP Workbench enthält hierzu nähere Informationen. Funktionsbausteine können folgende Schnittstellenparameter haben:
IMPORT -Parameter müssen, falls nicht als optional gekennzeichnet, beim Aufruf mit Daten versorgt werden. Sie können im Funktionsbaustein nicht geändert werden.
EXPORTEXPORT -Parameter übergeben Daten vom Funktionsbaustein zurück zum aufrufenden Programm. -Parameter sind immer optional, müssen also nicht übernommen werden.
CHANGING -Parameter müssen, falls nicht als optional gekennzeichnet, beim Aufruf mit Daten versorgt werden. Sie können im Funktionsbaustein geändert werden und der geänderte Wert wird zurückgegeben.
Tabellen-Parameter dienen nur der Übergabe interner Tabellen. Sie werden wieCHANGING -Parameter behandelt. Interne Tabellen können aber auch bei entsprechender Typisierung mit den anderen Parametern übergeben werden.
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, dass 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- undCHANGING -Parameter können mit Vorschlagswerten versehen sein. Falls der Aufrufer einen optionalen Parameter nicht übergibt, bleibt der Parameter entweder initial oder wird auf den eventuellen Vorschlagswert gesetzt.
Ausnahmen dienen zur Behandlung von Fehlersituationen, die in Funktionsbausteinen auftreten können. Das aufrufende Programm fragt über die Ausnahmen ab, ob Fehler aufgetreten sind und kann danach geeignet verfahren.
Vor dem Einbau in ein Programm kann ein Funktionsbaustein eigenständig getestet werden.
Die Dokumentation Funktionsbausteine testen der ABAP Workbench enthält nähere Informationen zum Testen von Funktionsbausteinen im Function Builder.
Dei AnweisungCALL FUNCTION ruft einen Funktionsbaustein auf:
CALL FUNCTION baustein [EXPORTING f1 = a1 ... fn = an] [IMPORTING f1 = a1 ... fn = an] [CHANGING f1 = a1 ... fn = an] [TABLES f1 = a1 ... fn = an] [EXCEPTIONS e1 = r1 ... en = rn [ERROR_MESSAGE = rE] [OTHERS = ro]].
Der Name des Funktionsbausteins baustein wird als Literal oder als Variable angegeben. Jedem verwendeten Schnittstellenparameter f1 , f2 … wird explizit ein Aktualparameter a1 , a2 … zugeordnet. Jeder Ausnahme e1 , e2 … kann eine Rückgabewert r1 , r2 … 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 e1 , e2 … 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 e1 , e2 … hinter der Option EXCEPTION angegeben ist, behandelt das aufrufende Programm die Ausnahme, indem es sy-subrc den Wert r1 , r2 … zuweist. r1 , r2 … muss als Zahlenliteral angegeben werden.
Durch die Angabe von ERROR_MESSAGE in der EXCEPTION -Liste kann man die Nachrichtenbehandlung in Funktionsbausteinen beeinflussen. Normalerweise sollten Nachrichten in Funktionsbausteinen nur über die Anweisung MESSAGE....RAISING aufgerufen werden. Mit ERROR_MESSAGE wird bewirkt, dass 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 1 , r 2 … ist für mehrere Ausnahmen zulässig.
CALL FUNCTION
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, muss 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 FunktionsbausteinSTRING_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 string1_too_small bzw. string2_too_small ausgelöst. Für alle übrigen Werte von position wird die Ausnahme pos_not_valid ausgelöst.