
Der Datenfluss-Editor im Mapping-Editor bietet die Standardfunktion JDBC Lookup an, über die Sie einen Mapping-Lookup über den JDBC-Adapter grafisch definieren. Über den Editor dieser Funktion können Sie einfache SELECT-Anweisungen formulieren.
Um den Lookup grafisch modellieren zu können, muss die Tabellenstruktur der Tabelle bekannt sein, auf die zugegriffen werden soll. Um die Tabellenstruktur im Mapping-Editor verwenden zu können, müssen Sie sie als externe Definition in das Enterprise Services Repository importieren (siehe Schritt 2 unten). Dazu müssen die folgenden Voraussetzungen erfüllt sein:
Die Tabelle muss in der Datenbank definiert sein.
Um auf die Tabelle der Datenbank zugreifen zu können, muss eine Instanz des JDBC-Adapters und die zugehörige Datenbank laufen.
Spezielle Voraussetzungen für Datenbanken
Der Mapping-Editor generiert aus der graphischen Definition des Mapping-Lookups Java-Programmkode. Die dabei generierte SELECT-Anweisung enthält die Felder, auf die Sie im graphischen JDBC-Lookup über die Standardfunktion zugreifen. Um Konflikte mit SQL-Schlüsselwörtern zu vermeiden, werden die Felder in doppelte Anführungszeichen gesetzt.
Sie greifen auf ein Feld ORDER im Mapping-Lookup zu, das eine Auftragsnummer enthält. Die SQL-Anweisung SELECT enhält allerdings ein Schlüsselwort ORDER, um eine Reihenfolge festzulegen. Um das Feld innerhalb der SELECT-Anweisung als Bezeichner für ein Feld zu kennzeichnen, muss es in doppelte Anführungszeichen gesetzt werden ( "ORDER" ). Andernfalls ist die Syntax der Anweisung nicht korrekt.
Die Datenbank, auf die Sie über den JDBC-Lookup zugreifen wollen, muss in der SQL-Syntax mit doppelten Anführungszeichen für den Zugriff auf Feldern arbeiten. In manchen Fällen kann dies für die Datenbank konfiguriert werden: Beispielsweise funktioniert ein JDBC-Lookup, der über die graphische Standardfunktion beschrieben wird, mit einer MySQL-Datenbank nur dann, wenn der SQL-Modus ANSI oder ANSI_QUOTES gesetzt ist.
1. Zugriff auf Datenbanktabelle ermöglichen
Legen Sie den JDBC-Empfängerkanal für den Aufruf des Anwendungssystems im Integration Directory an.
Weitere Informationen:
Dieser Empfängerkanal wird zunächst nur zum Lesen der Tabellenstruktur benötigt. Der Entwickler oder Berater kann später einen anderen Empfängerkanal anlegen, um auf die gleiche Tabelle in einem anderen System zuzugreifen (siehe auch Schritt 8 unten).
Legen Sie eine externe Definition im Enterprise Repository an und lesen Sie die Tabellenstruktur für den Lookup ein (siehe: Import von Tabellenstrukturen aus einer Datenbank ).
2. Parametrisiertes Message-Mapping-Programm definieren
Legen Sie im Enterprise Services Repository ein Message-Mapping mit Ausgangs- und Zielstruktur an beziehungsweise öffnen Sie ein bereits vorhandenes zur Bearbeitung.
Wechseln Sie im Mapping-Editor auf die Registerkarte Signatur . Legen Sie einen Import-Message-Mapping-Parameter der Kategorie Adapter an (beispielsweise MMP_JDBC ) und weisen Sie ihm die Adaptermetadaten des JDBC-Adapters zu. Die Adaptermetadaten des JDBC-Adapters werden über die Software-Komponente SAP BASIS ausgeliefert.
Wechseln Sie im Mapping-Editor auf die Registerkarte Definition und zu Ihrem Zielfeld-Mapping, für das Sie den JDBC-Lookup definieren wollen.
Ziehen Sie die Standardfunktion JDBC Lookup in den Datenfluss-Editor und legen Sie die SELECT-Anweisung in den Funktionseigenschaften grafisch fest:
Wählen Sie über die Listbox den Import-Message-Mapping-Parameter für den JDBC-Adapter aus ( MMP_JDBC aus Schritt 4). Mit Hilfe dieses Parameters übergibt später das Message-Mapping die ID des Empfängerkanals an die Funktion, der für den Lookup verwendet werden soll (siehe Schritte 7 und 9).
Wählen Sie über die Wertehilfe die externe Definition aus Schritt 2 aus.
Definieren Sie die SELECT-Anweisung:
Der Editor der Standardfunktion zeigt in der Mitte alle zur Verfügung stehenden Felder an. Pro Feld, das Sie von dort in die linke oder rechte Spalte übernehmen, erzeugt der Mapping-Editor einen Eingangs- beziehungsweise Ausgangsparameter für die Funktion.
Übernehmen Sie diejenigen Felder in die linke Spalte, über die Sie eine Zeile der Datenbanktabelle auslesen wollen. Diesen Felder müssen Sie später Werte zuweisen, indem Sie ihnen im Datenfluss-Editor Ausgangsfelder oder Ergebniswerte anderer Funktionen zuweisen. Wenn Sie keinen eindeutigen Schlüssel über die Auswahl der Felder angeben, werden bei einem Zugriff mehrere Zeilen gelesen.
Übernehmen Sie diejenigen Felder in die rechte Spalte, die Sie von dem Ergebnis der SELECT-Anweisung übernehmen und weiter verarbeiten wollen. Wenn eine SELECT-Anweisung mehrere Zeilen selektiert, liefert die Funktion pro Ergebnisparameter eine Ergebnis-Queue.
Wenn Sie das Ankreuzfeld in den Funktionseigenschaften der Standardfunktion gesetzt haben, fügt die Mapping-Laufzeit nach jedem Wert der Ergebnis-Queue einen Kontextwechsel ein.
Um dem Message-Mapping-Parameter, dem Sie in Schritt 1 den Importfunktionsparameter zugewiesen haben (MMP_JDBC), später einen Empfängerkanal zuweisen zu können, müssen Sie diesen Importparameter über ein Binding einem Operation-Mapping-Parameter zuweisen (siehe Schritte 4 bis 8 unter Importparameter definieren und verwenden ), beispielsweise IM_JDBC.
Um das Mapping-Programm und den Mapping-Lookup ausführen oder testen zu können, sind die folgenden Schritte im Integration Directory notwendig:
3. Empfängerkanal für Mapping-Lookup konfigurieren
Falls Sie einen anderen JDBC-Empfängerkanal als den aus Schritt 1 verwenden wollen, legen Sie einen neuen Empfängerkanal für den Aufruf des Anwendungssystems im Integration Directory an.
Weitere Informationen:
Um die ID des Empfängerkanals zur Laufzeit an Ihr Message-Mapping-Programm zu übergeben, legen Sie eine Interface-Ermittlung an, dem Sie das Operation-Mapping aus Schritt 7 zuweisen. In der Interface-Ermittlung können Sie anschließend den Empfängerkanal dem Operation-Mapping-Parameter zuweisen (im Beispiel IM_JDBC ).
Weitere Informationen: Interface-Ermittlung definieren
Der Mapping-Lookup kann nur ausgeführt werden, wenn diese Schritte durchgeführt worden sind und die Laufzeitkomponenten des Integration Servers installiert sind. Ansonsten bricht das gesamte Message-Mapping-Programm mit einer Fehlermeldung ab.
Sie haben einen Lookup über die Standardfunktion JDBC Lookup in Ihrem Message-Mapping definiert und im Integration Directory konfiguriert. Sie können das Message-Mapping-Programm nun über das Operation-Mapping testen (siehe: Testumgebung für Operation-Mappings ).