Benutzerdefinierte Funktionen
Wenn die Standardfunktionen für ein Zielfeld-Mapping nicht ausreichen oder auf Grund der Komplexität des Mappings die graphische Darstellung zu unübersichtlich wird, bietet es sich an eine benutzerdefinierte Funktion anzulegen. Sie können innerhalb dieser Funktion Java-Quelltext erfassen. Die Funktion wird als Java-Methode in das für das Message-Mapping generierte Java-Coding aufgenommen.

Java-Programme dürfen nicht zustandsbehaftet sein. Sie dürfen zum Beispiel keine Daten in eine Datenbanktabelle schreiben. Das PCK kann solche Seiteneffekte nicht mitverfolgen, so dass bei dem Versuch, eine noch nicht vom Empfänger angenommene Message wiederholt zu verschicken, schreibende Datenbankzugriffe ungewollt doppelt ausgeführt werden könnten.
Beachten Sie außerdem, dass Sie weder java.lang.System.exit() noch java.lang.System.setProperties() aufrufen dürfen.
Eine benutzerdefinierte Funktion ist nur in dem Message-Mapping sichtbar, in dem Sie es angelegt haben. Die Funktion kann über die Funktionskategorie Benutzerdefiniert wie eine Standardfunktion in den Datenfluss-Editor eingefügt werden.
Sie können in benutzerdefinierten Funktionen Ihre Java-Programme aus importierten Archiven verwenden, die in der gleichen oder einer unterliegenden Software-Komponentenversion wie das Message-Mapping liegen.
Sie haben ein Message-Mapping angelegt und jeweils eine XML-Struktur für Ausgangs- und Zielstruktur geladen.
Sie können folgende benutzerdefinierten Funktionen nutzen:
● Einfache Funktionen (Cache = Wert)
Dieser Funktionstyp kann pro Funktionsaufruf einzelne Eingabewerte von Feldern verarbeiten. Einfache Funktionen erwarten daher Strings als Eingabewerte und geben einen String zurück.
● Erweiterte Funktionen (Cache = Kontext oder Cache = Queue)
Dieser Funktionstyp kann pro Funktionsaufruf mehrere Eingabewerte eines Feldes verarbeiten. Sie können vor dem Aufruf der Funktion entweder alle Feldwerte eines Kontextes oder die gesamte Queue für das Feld in einen Array einlesen. Weitere Informationen finden Sie unter Erweiterte benutzerdefinierte Funktionen.

Beachten Sie, dass bei großen Messages ein Speichern der gesamten Queue im Cache sehr viel Speicher zur Laufzeit benötigt. Arbeiten Sie in so einem Fall daher lieber mit Kontexten.
Bei beiden Funktionstypen können Sie folgende Objekte im Quellcode verwenden:
Objekte in einfachen und erweiterten Funktionen
Objekt |
Verwendung |
Mit diesem Objekt können Sie Werte zwischenspeichern, die Sie beim nächsten Aufruf der gleichen benutzerdefinierten Funktion wieder auslesen wollen. |
|
Mit diesem Objekt können Sie Werte zwischenspeichern, die Sie beim nächsten Aufruf einer beliebigen benutzerdefinierten Funktion des gleichen Message-Mappings wieder auslesen wollen. |
1.
Um eine neue benutzerdefinierte Funktion
anzulegen, klicken Sie links unten im Datenfluss-Editor auf die Drucktaste Neue Funktion anlegen (
). Wählen Sie aus dem Menü Einfache Funktion oder Erweiterte
Funktion.
2. Geben Sie in dem folgenden Fenster die Eigenschaften Ihrer Funktion an:
Name
Technischer Name der Funktion. Der Name wird auch in der
Funktionsauswahl-Toolbar und auf dem Datenfluss-Objekt erscheinen.
Beschreibung
Verbale Beschreibung der Verwendung der Funktion
Cache
Funktionstyp (siehe oben)
Anzahl der Argumente:
Geben Sie in dieser Tabelle an, wie viele Eingangswerte die Funktion
verarbeiten kann und benennen Sie sie. Alle Argumente sind vom Typ String.
3. In dem folgenden Fenster können Sie Java-Quellcode erfassen:
...
a. Sie können über das Eingabefeld Imports Java-Pakete in Ihre Methode importieren, indem Sie diese durch Komma oder Semikolon getrennt angeben:
Der Import der Pakete java.lang.*, java.util.*, java.io.* und java.lang.reflect.* ist nicht nötig, weil alle Message-Mappings diese Pakete benötigen und daher importieren. Sie sollten auf Standard-JDK- und J2EE-Pakete des SAP Web Application Servers zugreifen können, indem Sie das einfach Paket unter Import angeben, das heißt, es muss nicht als Archiv in das Repository importiert werden. Sie können außerdem auf SAP XML Toolkit-, SAP Java Connector- und SAP Logging Service-Klassen zugreifen (siehe auch: Laufzeitumgebung (Java-Mappings)).
Neben den Standard-Paketen können Sie im Import-Eingabefeld auch Java-Pakete angeben, die Sie als Archiv importiert haben und die in der gleichen oder einer unterliegenden Software-Komponentenversion wie das Message-Mapping liegen.
b. Erfassen Sie im Editor-Fenster Ihren Java-Quelltext beziehungsweise kopieren Sie sich diesen Quelltext aus einem anderen Editor dorthin.
4. Bestätigen Sie mit Sichern und Schließen.
5. Benutzerdefinierte Funktionen sind an das Message-Mapping gebunden, in dem Sie die Funktion angelegt haben. Um Ihre Funktion zu sichern, speichern Sie Ihr Message-Mapping.
6. Sie können die Funktion in der Testumgebung testen.
Ihre Funktion ist nun in der Funktionskategorie Benutzerdefiniert sichtbar. In der Funktionsauswahl-Drucktastenleiste erscheint eine Drucktaste für die Funktion bei Auswahl dieser Kategorie. Über den Pfeil neben der Drucktaste können Sie eine Listbox öffnen, um die Funktion zu bearbeiten, zu löschen oder in den Datenfluss-Editor hinzuzufügen.