Transaktion SE37 (Function Builder)
Siehe Funktionsbausteine.
Die Transaktion SE37 (Function Builder) ist die zentrale Transaktion, um mit Funktionsbausteinen zu arbeiten.
Siehe Sammlung Funktionsbausteine.
Sammlung Funktionsbausteine
Funktionsgruppe
- Funktionsgruppe
- Jeder Funktionsbaustein muss zwingend einer Funktionsgruppe zugeordnet werden.
- Die Funktionsgruppe ist das Hauptpogramm für die darin enthaltenen Funktionsbausteine.
Die Transaktion SE37
In der Transaktion wird hier der Funktionsbaustein REUSE_ALV_GRID_DISPLAY_LVC eingegeben, der ALV-Listen auf dem Bildschirm ausgibt
Reiter der Transaktion SE37
Eigenschaften
- Funktionsgruppe
- Kurzbezeichnung Funktionsgruppe
- Kurzbezeichnung Funktionsbaustein
- Normaler Funktionsbaustein / Remote fähiger Funktionsbaustein (RFC) / Verbucherfunktionsbaustein.
- Verantwortlicher/Ersteller
- Letzter Änderer
- Änderungsdatum
- Paket
- Global
- Freigegeben oder Nicht Freigegeben
Wenn SAP einen Funktionsbaustein freigegeben hat, kann man davon ausgehen, dass die Funktionalität eines Funktionsbausteins bestehen bleibt und auch die Schnittstelle konstant ist. Wenn der SAP nicht freigegeben ist, aber das letzte Änderungsdatum ein paar Jahre zurückliegt, halte ich es für sicher genug, diesen Funktionsbaustein zu verwenden, auch wenn er von SAP offiziell noch nicht freigeben wurde. Mit dieser Vorgehensweise hatte ich noch keine negativen Erfahrungen.
Bei der Chechbox "Global" werden alle Parameter des Funktionsbausteins auch auf der Ebene der Funktionsgruppe global bekannt gemacht. Diese Parameter behalten dann auch ihren Wert, wenn der Funktionsbaustein verlassen wird. Dies hat den Vorteil, dass an anderer Stelle nach der Verwendung des Funktionsbausteins mit einem Dirty Assign auf diese Parameter/Variablen zugegriffen werden kann, auch wenn diese Parameter nicht übergeben wurden sind. SAP empfiehlt diese Vorgehensweise jedoch nicht.
Import-(Parameter)
- Importparameter können obligatorisch oder optional sein
- Importparameter können als Referenz gekennzeichnet oder mit "Wertübergabe". Bei der Wertübergabe wird der Importparameter kopiert im Hauptspeicher und der Funktionsbaustein arbeitet dann mit der Kopie. Die Wertübergabe ist speziell bei größeren Internen Tabellen aus Performancegründen zu vermeiden. Wird ein Funktionsbaustein als RFC-Funktionsbaustein gekennzeichnet, müssen alle Parameter Werteübergabe haben.
- Wählt man die Wertübergabe beim Parameter an, ist es auch möglich den Importparameter zu verändern. Dies ist in aller Regel nicht empfehlenswert, kann aber manchmal sehr nützlich sein. Einen Referenz-Importparameter kann man nicht verändern. Hier bekommt man auch sofort eine Error-Meldung vom Syntaxchecker.
Export-(Parameter)
- Exportparameter geben lediglich Variablen zurück und können aus Sicht des Funktionsbausteins keine Variablen empfangen. Sie sind immer optional.
Changing-(Parameter)
- Variablen werden in den Funktionsbaustein importiert, dort ggf. verändert und wieder nach exportiert.
Tabellen-(Parameter) (obsolet !!)
- Die Tabellen-Schnittstelle sollte bei eigenen Funktionsbausteinen nicht verwendet werden, da hier bei diesem Parameter nicht klar ist, ob eine Tabelle lediglich importiert wird, nur exportiert oder im Funktionsbaustein geändert wird. Diese Tabellen können durch die anderen drei Schnittstellen ersetzt werden, indem hier auf geeignete Tabellentypen typisiert wird. Die wenigen Minuten, die die Anlage/Auswahl eines geeigneten Tabellentyps erfordert, wird sehr schnell wett gemacht durch die gewonnene Übersicht der Parameter. Die Tabellentypen können im Top-Include vom Rahmenprogramm bzw. der Funbktionsgruppe oder im Dictionary angelegt werden.
- Möchte man partout nicht auf die Parameter unter dem Reiter "Tabellen" verzichten, sollte man zumindest ein Präfix "IT_", "CT_" oder "ET_" verwenden, was die Ein-/Ausgaberichtung der Tabellen verdeutlicht.
- Tabellen-Parameter werden zwingend als Referenz übergeben. Für RFC-Funktionsbausteine kann daher Parameter auf dem Reiter "Tabellen" nicht sinnvoll verwendet werden.
Ausnahmen
Siehe Message Raising und Meldungen Systemvariablen (SY-MSGID, etc.).
Die Ausnahmen können im Quelltext des Funktionsbausteins mit "raise <ausnahme>" ausgelöst werden. Entsprechend der Reihenfolge der Ausnahmen auf dem Reiter werden dann bei deren Auslösung der SY-SUBRC = 1 und aufsteigend ausgelöst.
Der Aufrufer vom Funktionsbaustein kann entsprechend mit einer Fehlerbehandlung darauf reagieren.
raise <ausnahme>.
oder mit Ausgabe einer Message
Message .. raising <ausnahme>.
Quelltext (Codingansicht)
In der Codingansicht kann das Coding des Funktionsbausteins angezeigt und verändert werden (bei Y/Z-Funktionsbausteinen).
Varianten speichern
Bei einem Funktionsbaustein ist es oft nicht einfach die passenden Daten für die Importparameter zu finden. In der Transaktion SE37 können die Selektionsparameter eines Funktionsbausteinaufs gespeichert werden und benutzerübergreifend und mandantenübergreifend aufgerufen werden.
Der Funktionsbaustein wird aus der Einstiegsmaske der SE37 mit F8 ausgeführt.
Hier beim Funktionsbaustein CONVERSION_EXIT_ALPHA_INPUT (der eine extrem einfache Importschnittstelle hat), werden die Importparameter gepflegt mit INPUT = 80000.
Wenn der Funktionsbaustein nun mit F8 ausgeführt wird, wird der Exportparameter ausgegeben OUTPUT = 00....80000. Wenn der Importparameter 10 Stellen hätte, wäre 0000800000 zurückgegeben worden.
Mit Speichern kann diese Selektion nun gespeichert werden, mit einer Kurzbeschreibung
In der Eingabemaske des Selektionsbildschirms bei F8 kann nun auf den Button TESTDATENVERZ. geklickt werden, um sich mögliche Varianten anzeigen zu lassen. Diese können dann per Doppelklick ausgeführt werden und die Importparameter sind dann mit den entsprechenden Werten gefüllt. Es bietet sich an eigene Varianten mit dem eigenen Namen zu benennen, um diese gleich zu erkennen.
Objektliste anzeigen / Funktionsgruppe
- Wenn man über die Transaktion SE37 in einen Funktionsbaustein einsteigt, ist es oft praktisch, sich die Funktionsgruppe zum Funktionsbaustein anzuzeigen. Dazu gibt es einen einfachen Weg.
Ein Klick auf (Objektliste anzeigen) zeigt die Objekte der Funktionsgruppe SADR zum Funktionsbaustein ADDRESS_INTO_PRINTFORM in der Transaktion SE80 an.
Dokumentation
Über den Button lässt sich die Funktionsbausteindokumentation aufrufen, sofern sie gepflegt ist. Wenn sie nicht gepflegt ist, ist der Button nicht anklickbar