Extraktion von SAP Daten mit Informatica über das Business Content Interface – Teil 1
In diesem Artikel werde ich einen ersten Überblick über die BCI Extraktion von SAP Daten mit Informatica Powercenter geben. Im ersten Teil dieser Serie steht das Importieren und Konfigurieren des BCI Listener Mappings im Vordergrund. In einem anderen Blogartikel habe ich schon beschrieben, wie man den Informatica Powerexchange for SAP Netweaver Konnektor installiert und konfiguriert.
Es gibt viele Wege, Daten aus SAP mit Hilfe von Informatica zu extrahieren. Einige Kunden nutzen selbst geschriebene Extraktoren in SAP und laden die Daten als Flatfiles über Informatica in das Zielsystem. Man mus dazu aber wissen, dass ausschließlich der Weg über den PowerExchange Konnektor von Informatica supportet wird und dies auch die komfortabelste Lösung ist.
Informatica kann über BAPI, ALE, ABAP oder BCI Daten aus SAP abrufen. Die Option über das BCI von SAP ist aber die einzige Möglichkeit, Daten per Deltalogik zu laden. Diesen Weg habe ich bei meinem Kunden eingesetzt und dieser Artikel bezieht sich auch nur darauf.
Prozess
Das von Informatica ausgelieferte Framework zum Laden von SAP Daten über das BCI besteht aus mehreren Komponenten:
- Listener
- Send Request
- Process
Listener
Der Listener Workflow steht in direktem Kontakt mit dem SAP System und empfängt die Daten von aktivierten DataSources im IDoc oder tRFC Format. Diese werden in einer zentralen Staging Tabelle abgelegt. Weiterhin ist der Listener Workflow auch für das Scheduling der verschiedenen Process und Send Request Workflows zuständig.
Übertragunsmodi
- tRFC: Im tRFC Modus werden die Daten schneller als im IDoc Format gesendet und auch weniger Ressourcen verbraucht. Diesen Übertragungsmodus kann aber nicht für die Übertragung von Hierarchien verwenden werden.
- IDoc: IDoc ist der Standard-Übertragungsmodus für SAP Hierarchien. In diesem Modus werden die Daten erst in SAP gesammelt, bevor diese versendet werden.
Send Request
Der Send Request Workflow schickt an SAP eine Nachricht, um die Extraktion einer bestimmten DataSource auszulösen. Für jede Data Source, aus der Daten extrahiert werden sollen, muss ein eigener Send Request Workflow existieren.
Process
Der Process Workflow liest die Daten aus der zentralen Staging Tabelle Source_for_BCI, schreibt diese in eine der DataSource entsprechenden Staging Tabelle und bereinigt die geladenen Daten dieser DataSource aus der Tabelle Source_for_BCI. Für jede DataSource muss ein Process Workflow existieren, der die Process und die Cleanup Session enthält.
Vorbereitungen
Alle DataSourcen, aus denen Daten extrahiert werden sollen, müssen in SAP über die Transaktion RSA5 aktiviert werden.
Um das von Informatica ausgelieferte Framework zu nutzen, importiert man im Informatica Repository Manager die XML Datei BCI_MAPPINGS.xml. Dies liegt im Installationspaket des Informatica Clients im Pfad \sapsolutions\mySAP\bci\.
Weiterhin ist es erforderlich, in der Zieldatenbank einige Tabellen anzulegen:
- DOCUMENTNUMBER: Enthält alle Dokumentennummern, die von SAP empfangen wurden
- BCILOOKUPTABLE: In dieser Tabelle werden Requests abgelegt, die keine Daten von SAP aus der DataSource geliefert haben.
- CONTROLRECORD: In dieser Tabelle werden Informationen zu den Nachrichten abgelegt, die von Informatica über die Prozessworkflows abgearbeitet wurden.
- INDICATOR: Diese Tabelle enthält den Status vom Send Request und Prozess Workflow, der für eine jeweilige DataSource eingeplant ist.
- RSINFOSTAGING: Enthält die RSINFO IDoc Nachrichten, die von SAP gesendet wurden. Diese enthalten auch den Status der Extraktion in SAP. Sobald der Status auf complete gesetzt wurde, startet Informatica den entsprechenden Prozeß Workflow.
- SOURCE_FOR_BCI: Diese Objekt ist die zentrale Staging Tabelle, in die das Listener Mapping alle empfangenen Daten schreibt
Das Create Table Skript zum Erstellen dieser Tabellen habe ich euch hier abgelegt.
Konfiguration
Nachdem die Informatica Objekte aus der der Datei BCI_MAPPINGS.xml importiert und die Tabellen in der Datenbank angelegt wurden, kann man die Konfiguration der Listener Mappings beginnen.
Connections anlegen
Als erstes legt man die verschiedenen Connections an, die für die Anbindung benötigt werden. Der BCI Listener benötigt zum einen eine SAP ALE IDoc Reader und zum anderen eine LMAPITarget Connections. Beide sind vom Connectiontyp Application. Weiterhin wird für das Framework auch noch eine SAP ALE IDoc Writer Connection benötigt. Diese findet ihre Verwendung in der Session des Send Request Workflows, den ich im nächsten Teil dieser Serie erklären werde.
SAP ALE IDoc Writer Connection
Die SAP ALE IDoc Writer Connection sendet Nachrichten über den Send Request Workflow an das SAP System und benötigt einen Benutzer in SAP. Der Benutzername und das Passwort des SAP Users wird in das entsprechende Feld der Connection eingetragen. Weiterhin muss auch noch der richtige Mandant (Client code), die verwendete Spache (Language code) und der DEST Wert der Typ R Verbindung aus der sapnwrfc.ini unter Connect String eingetragen werden.
SAP ALE IDoc Reader Connection
Beim Anlegen der SAP ALE IDoc Reader Connection ist lediglich die Code Page und die Destination Entry anzupassen. Die Destination Entry entspricht dem Namen des logischen Systems in SAP. Falls die Konfiguration in SAP genau nach der Anleitung durchgeführt wurde, heißt der Name des logischen Systems „INFACONTNT“.
LMAPITarget Connection
Die LMAPITarget Connection ist für die Ablaufsteuerung der einzelnen Send Request und Process Workflows zuständig. Wie dies funktioniert, werde ich auch in einem anderen Teil dieser Serie erklären. Für die Konfiguration dieser Connection benötigen wir am besten einen technischen User auf dem Informatica Server. Im unteren Teil dieses Dialoges wird die Konfiguration mit den Werten der Domain und des Integration Services abgeschlossen.
BCI Listener Mapping
Als nächstes sind die Anpassungen am BCI Listener Mapping an der Reihe. Dort überprüft man im Reiter Metadata Extensions der Source Definition, ob der eingetragene Wert im Feld Value dem Namen der BCILOOKUP Tabelle entspricht. Wurde der Name der Tabelle beim Anlegen nicht angepasst, muss hier auch nichts verändert werden.
Weiterhin sollte überprüft werden, ob der Basic IDoc Typ im Router dem in SAP entspricht. Ist hier ein falscher Wert eingetragen, dann werden die von SAP gesendeten Daten bei der Ausführung nicht in die Tabelle Source_For_BCI übertragen. Im Standard ist dieser Wert aber ZSIN1000 und es sollte keine Anpassung nötig sein.
BCI Listener Session
Die Session des BCI Listeners muss nur im Abschnitt Connections verändert werden. Hier trägt man für das Target BCI_Scheduling_Target die LMAPITarget Connection und bei der Source AMGDSQ_BCI_Listener die SAP ALE IDoc Reader Connetion ein. Die anderen Ziele erhalten die Datenbankverbindung, in dem die Zieltabellen angelegt wurden.
Die Installation und Konfiguration ist somit abgeschlossen und der BCI Listener ist bereit für den Einsatz!