SAP NetWeaver PI: RFC-to-File-Transfer konfigurieren und überwachen

Der folgende Beitrag zeigt anhand eines Praxisbeispiels, wie sich in SAP NetWeaver PI ein RFC-to-File-Transfer konfigurieren und überwachen lässt.

Der folgende Beitrag veranschaulicht exemplarisch die Vorgehensweise bei der Konfiguration eines Remote-Function-Call-(RFC)-to-File-Transfers in der Anwendung SAP NetWeaver Process Integration (SAP NetWeaver PI). Sie erhalten zugleich Tipps zur Überwachung der Abläufe beim RFC-to-File-Transfer und lernen alternative ABAP-Mapping-Strategien kennen. Bei diesem Beitrag handelt es sich um einen Auszug aus dem SAP-Press-Buch SAP NetWeaver PI Development — Practical Guide von Valentin Nicolescu, der hier mit Genehmigung des Verlags publiziert wird. Das Kapitel kann als PDF-Datei (in Englisch) kostenlos heruntergeladen werden.

4.1.3 Konfiguration

Auf Basis der im Enterprise Services Repository erstellten Objekte können Sie im Integration Directory die Kommunikation zwischen den beiden Systemen A und B einrichten. Sie gelangen zum Integration Directory entweder über die Transaktion SXMB_IFR, über den direkten Link im Webbrowser oder indem Sie im Menü des Enterprise Services Repository Environment – Integration Builder wählen.

Ebenso wie im Enterprise Services Repository gibt es auch hier eine Zweiteilung der Oberfläche, wobei sich die Anordnung der Objekte nicht mehr nach Softwarekomponentenversionen, sondern nach Objekttypen richtet. Oberhalb der Verzeichnisstruktur befinden sich die drei Karteireiter Change Lists, Objects und Szenario, wobei der Change-Lists-Tab die gleiche Funktion wie im Repository hat. Der Karteireiter Objects listet alle Objekte des Directorys nach ihrem Typ auf, außer dem Szenario, das Sie für all Ihre Objekte im Integration Directory anlegen werden. Diese Übung verwendet alle Elemente aus Tabelle 4.3.

Tabelle 4.3: Elemente im Integration Directory für die Übung RFC-to-File

Einrichten der Business-Systeme und ihrer Kommunikationskanäle

Legen Sie über das Kontextmenü eines bereits bestehenden Szenarios oder über das Symbol Create Object links unterhalb der Menüleiste das Konfigurationsszenario PI_Training_## an. Speichern Sie das Objekt; damit das Szenario in der Auflistung auf der linken Seite erscheint, markieren Sie das neue Szenario, und beschränken Sie die Sicht darauf, indem Sie das Symbol Only display selected subtree oberhalb der Liste anklicken. Die Anlage eines Konfigurationsszenarios dient der organisatorischen Einteilung von Konfigurationsobjekten.

Öffnen Sie das Verzeichnis Communication ComponentBusiness System. Unterhalb dieses Zweiges sehen Sie zumindest die beiden Business-Systeme System A und System B, die im Rahmen der Vorbereitungen zu den Übungen im System Landscape Directory (SLD) deklariert wurden. Klicken Sie die Option Assign Configuration Scenarios aus dem Kontextmenü von System A an, und suchen Sie Ihr eben erstelltes Szenario aus. Durch diese Zuordnung erscheint dieses Business-System mit seinen Kommunikationskanälen auch in Ihrem Szenario. Wiederholen Sie diesen Schritt für das Business-System B. Für System A muss ein sendender RFC-Adapter und für System B ein empfangender File-Adapter konfiguriert werden.

Rufen Sie über das Kontextmenü des Knotens Communication Channel den Erstellungsdialog auf, und geben Sie System A als Communication Component und den Namen RFC_Senderchannel_## sowie eine entsprechende Beschreibung ein. Im Detailfenster stellen Sie mit der Wertehilfe zunächst den Adaptertyp RFC ein. Wählen Sie die Senderrichtung für diesen Adapter aus. Für das Feld Transport Protocol wählen Sie RFC. Die Felder Message Protocol und Adapter Engine im oberen Bereich können Sie auf den Vorgabewerten belassen.

Der Bereich RFC Server Parameter dient zur Verbindung mit einer RFC-Destination vom Typ TCP/IP auf Seiten von System A. Bei den Vorbereitungen zu den Übungen haben Sie in Abschnitt 3.5.2, Einstellungen für die Verwendung des RFC-Adapters, eine RFC-Verbindung namens SystemA_Sender-## angelegt. Diese RFC-Verbindung ist auf dem Gateway-Server des PI-Systems registriert und wartet auf ein entsprechendes Gegenstück.

Geben Sie in das Feld Application Server den Hostnamen des PI-Systems und in das Feld Application Server Service den Gateway-Service des PI-Systems nach dem Schema sapgwXX ein, wobei XX für die Instanznummer steht. Die Program ID entspricht dem SchemaSystemA_Sender-## und stimmt ebenso wie die beiden genannten Werte genau mit dem überein, was in der jeweiligen RFC-Verbindung in System A eingepflegt wurde. Die Option SNC gibt an, ob die Kommunikation über diese RFC-Verbindung über eine Secure Network Connection abläuft. Die Checkbox Unicode muss angewählt sein, wenn es sich bei System A um ein Unicode-System handelt.

Der Abschnitt RFC Metadata Repository Parameter dient der Identifikation und der Anmeldung an dem System, das die Metadaten über die verwendeten RFC-Schnittstellen bereitstellt. Diese Anbindung ist notwendig, da beim Aufruf des sendenden RFC-Adapters die Metadaten vom PI-System gegengeprüft werden. In diesem Fall handelt es sich um System A, von dem in der Designphase die RFC-Schnittstelle importiert wurde. Geben Sie den Application Server und die Systemnummer von System A sowie Ihren Benutzernamen SYS_A-## mit Passwort und entsprechenden Mandanten ein, und speichern Sie nun den Kommunikationskanal. Haben Sie den Kommunikationskanal später aktiviert, wird auch der Verbindungstest für die Destination SystemA_Sender-## aus System A heraus erfolgreich ablaufen. Einen Überblick über die gesamten Einstellungen dieses Kommunikationskanals gibt Abbildung 4.12.

Abbildung 4.12: Einrichten des RFC-Senderkanals für System A

Den Kommunikationskanal für das empfangende System B legen Sie über das Kontextmenü des Knotens Communication Channel an. Der Name des neuen Kanals soll File_Receiverchannel_## lauten. Als Kommunikationskomponente wählen Sie System B. Wählen Sie im Detailfenster den Adaptertyp File mit der Wertehilfe aus, und geben Sie die Richtung Receiver an. Stellen Sie den Parameter Transport Protocol auf Network File System (NFS) ein, was bedeutet, dass das PI-System über sein eigenes lokales Dateisystem auf das Verzeichnis zugreifen kann, in dem die Datei erstellt werden soll.

Eine Alternative zum Network File System (NFS) stellt das File Transfer Protocol (FTP) dar, das den Zugriff auf das Dateisystem entfernter Rechner erlaubt. Wenn Sie diese Option wählen, erhalten Sie die Möglichkeit, Server- und Benutzerdaten anzugeben, um sich an einem entfernten FTP-Server anzumelden. Das Feld Message Protocol sollte auf dem Wert File stehen, was zur Folge hat, dass die zu schreibende Datei im PI-Format abgelegt wird. Die Ausprägung File Content Conversion würde hingegen erlauben, die Datei beispielsweise als Liste mit mehreren Einträgen zu schreiben.

Die File Access Parameter bestimmen zum einen, in welches Verzeichnis die Datei geschrieben und nach welchem Schema ihr Name aufgebaut wird. Verwenden Sie nach Absprache mit dem Administrator der IT-Landschaft vorzugsweise /tmp bei UNIX-Installationen oder C:\temp für Windows.

Sie können das File Name Scheme prinzipiell frei wählen, jedoch sollten Sie für diese Übung die Bezeichnung xi_output_##.dat bevorzugen, wobei ## für Ihre Teilnehmernummer steht. Beim Ablauf dieses Szenarios wird auf diese Datei Bezug genommen, so dass Sie die Vergabe eines selbst gewählten Namens in Abschnitt 4.1.4, Ablauf und Monitoring, entsprechend berücksichtigen müssen (siehe Abbildung 4.13).

Abbildung 4.13: Einrichten des Datei-Empfängerkanals für System B

Die Verarbeitungsparameter auf dem Karteireiter Processing geben an, wie die Datei erstellt werden soll, das heißt ob das angegebene Namensschema unverändert verwendet werden soll oder ob zum Beispiel ein Zeitstempel, ein Zählerwert oder die Message-ID mit in den Dateinamen aufgenommen werden soll. 

Wählen Sie hier den Schreibmodus Directly und den Dateityp Binary aus. Der Schreibmodus Directly bewirkt, dass ohne die Verwendung einer temporären Datei die Daten herausgeschrieben werden. Der gewählte Dateityp Binary bewirkt, dass nicht nur Text ausgegeben werden kann. Über die Grundeinstellungen hinaus haben Sie zudem noch die Möglichkeit, durch das Ersetzen von Variablen den Pfad der Dateiablage dynamisch zu bestimmen oder einen Betriebssystembefehl vor oder nach der Nachrichtenverarbeitung anzustoßen. Speichern Sie den Empfängerkanal.

Anlegen der Verbindungselemente

Auf der Basis der eben erstellten Eckpunkte sowie der Objekte im Enterprise Services Repository kann mithilfe einiger Verbindungselemente das Integrationsszenario vervollständigt werden. Die ersten beiden fehlenden Elemente, die Sie anlegen, sind die Sender- und die Empfängervereinbarung. 

Sie bestimmen, wie eine Nachricht von oder zu dem Interface eines bestimmten Business-Systems konvertiert werden muss, damit das PI-System beziehungsweise das empfangende System die Nachricht weiterverarbeiten kann. Im Falle des eingehenden RFC-Kommunikationskanals muss die Nachricht beispielsweise aus dem Format des RFC-Adapters technisch in das PI-XML-Format konvertiert werden.

Beginnen Sie mit der Sendervereinbarung, die Sie auf dem gewohnten Weg über das Kontextmenü des Verzeichnisses Receiver Agreement anlegen können: Wählen Sie im Erstellungsdialog als Service das Business-System A aus. Das sendende Interface ist die RFC-SchnittstelleZ_RFM_MATERIALINPUT_##, die Sie in das Enterprise Services Repository importiert haben. Im Detailfenster des neuen Objektes können Sie den Kommunikationskanal des Senders bestimmen, indem Sie die Wertehilfe öffnen und den Senderkanal RFC_Sender_Channel_## auswählen (siehe Abbildung 4.14). Speichern Sie die Sendervereinbarung.

Abbildung 4.14: Anlegen der RFC-Sendervereinbarung

Erstellen Sie analog zur Sendervereinbarung eine Empfängervereinbarung für das Business-System B und das empfangende Interface SI_Material_Async_In. Achten Sie dabei darauf, dass Sie zusätzlich das sendende Business-System A angeben müssen. Wählen Sie im Detailfenster als Kommunikationskanal des Empfängers den Kanal File_Receiverchannel_##. Speichern Sie dann diese Vereinbarung.

Für das logische Routing der Nachrichten im PI-System wird zunächst eine Empfängerermittlung benötigt, die zu einem Paar von Business-System und Interface bestimmt, welche Services als Empfänger infrage kommen. Legen Sie zu diesem Zweck eine neue Empfängerermittlung über das entsprechende Kontextmenü für das sendende Business-System A und die Schnittstelle Z_RFM_MATERIALINPUT_## an.

Im Detailfenster ist zunächst der Bereich Configured Receivers von Bedeutung, in dem verschiedene mögliche Empfänger angegeben werden können. Ist das Prüfungsergebnis der jeweiligen Bedingung wahr, wird die Nachricht an dieses System zugestellt (siehe Abbildung 4.15).

Abbildung 4.15: Anlegen der Empfängerermittlung

Dies kann auch bedeuten, dass die Nachricht an mehrere Systeme zugestellt wird. Die Bedingung kann beispielsweise Elemente einer Nachricht auf einen bestimmten Inhalt hin überprüfen. Sollte keines der konfigurierten Systeme als Empfänger bestimmt werden, kann unterhalb der Empfängertabelle ein Default-Empfänger angegeben werden. Wählen Sie in der Spalte Communication Component der bereits vorhandenen Zeile das Business-System B als möglichen Empfänger aus. Da die Nachricht in dieser Übung in jedem Fall diesem Empfänger zugestellt werden soll, müssen Sie keine Bedingung pflegen.

Speichern Sie die Empfängerermittlung, und werfen Sie dann einen Blick auf den Karteireiter Configuration Overview, auf dem nun der Eintrag System B erschienen ist. Klappen Sie den Eintrag auf. Wie die Einträge darunter zeigen, konnte keine passende Interface-Ermittlung und somit auch kein passendes Operation Mapping ermittelt werden. Klicken Sie oberhalb dieser Auflistung auf das Icon New, um eine neue Interface-Ermittlung anzulegen.

Durch den Aufruf des Erstellungsdialogs aus diesem Kontext heraus können bereits alle Pflichtfelder ausgefüllt werden, so dass Sie nur noch eine Beschreibung einpflegen müssen. Wählen Sie im Detailfenster im Bereich Receiver Interfaces mit der Wertehilfe Ihr Service-Interface SI_Material_Async_In aus Ihrem Namensraum aus. Bestimmen Sie links davon auch das einzige Operation Mapping, das für die Kombination des sendenden und des empfangenden Interface besteht (siehe Abbildung 4.16). Speichern und schließen Sie die Interface-Ermittlung, und kehren Sie zur Empfängerermittlung zurück.

Abbildung 4.16: Bearbeiten der Interface-Ermittlung zur Übung RFC-to-File

Klicken Sie im unteren Bereich das Symbol Refresh an, woraufhin neben dem Ziel-Interface und dem passenden Operation Mapping auch noch die Empfängervereinbarung für das empfangende System B angezeigt werden sollte (siehe Abbildung 4.17).

Speichern Sie die Empfängerermittlung, und aktivieren Sie alle neu erstellten Objekte über die Standard Change List auf dem Karteireiter Change Lists. Sie haben nun alle Objekte für dieses Integrationsszenario erstellt und aktiviert.

Abbildung 4.17: Bearbeiten der Empfängerermittlung zur Übung RFC-to-File

Die Funktionalität der Ordner im Enterprise Services Repository ist ebenfalls im Integration Builder nutzbar. Dort legen Sie Folder über das Menü Objects – New an. 

Der letzte Punkt Administration im Baum links enthält das Element Folder. Hier besteht die Möglichkeit, einen Wurzel-Folder anzulegen oder den neuen Folder einem bestehenden Folder als Subfolder zuzuordnen (siehe Abbildung 4.18). Die Arbeitsweise mit Foldern im Integration Directory unterscheidet sich nicht von der im Enterprise Services Repository.

Abbildung 4.18: Folder anlegen im Integration Builder

4.1.4 Ablauf und Monitoring

Nachdem Sie nun alle Design- und Konfigurationsobjekte angelegt haben, sind alle Vorbereitungen zum Ablauf dieses Integrationsszenarios abgeschlossen. 

Sie müssen nun den Ablauf überwachen und mögliche Fehler untersuchen.

Ablauf des Szenarios

Das konfigurierte Integrationsszenario wird durch den Aufruf des Programms Z_PROG_MATERIALINPUT_## gestartet. Melden Sie sich am Mandanten des Systems A mit Ihrem Benutzer SYS_A-## an und rufen Sie die Transaktion SE38 auf. Geben Sie den Namen Ihres Programms ein und führen Sie es aus. 

Es erscheint eine Eingabemaske für grundlegende Materialstammdaten. Nun sollen die Daten zum Anlegen dieses PI-Entwicklerbuches als ein Materialstammsatz in System B eingegeben werden. Bei diesem Material handelt es sich um Testmaterial, das heißt Sie werden es in den Einzelübungen nicht weiter inhaltlich verwenden, um beispielsweise einen Fertigungs- oder Kundenauftrag anzulegen. Bei den verwendeten Daten handelt es sich um die Pflichtfelder der beiden Sichten Grunddaten 1 und 2 aus dem Materialwesen von SAP R/3 beziehungsweise des SAP ECC. Da diese Daten in der zweiten Übung benutzt werden, um mithilfe eines IDocs tatsächlich ein Material anzulegen, wird die Verwendung der Daten wie in Tabelle 4.4 empfohlen.

Tabelle 4.4: Empfohlene Werte für das Anlegen eines Testmaterials

Diese Daten funktionieren ohne weitere Anpassungen in einem International Demonstration and Education System (IDES) für SAP R/3 oder den SAP ECC. Sie können für die zweite Übung später entsprechende Vorlagedateien verwenden. Tragen Sie die Daten in die einzelnen Felder ein, und achten Sie darauf, dass die Wertehilfe, die bei einigen Feldern erscheint, nur Werte des sendenden Systems wiedergibt, die im empfangenden System unter Umständen nicht vorhanden sind (siehe Abbildung 4.19).

Abbildung 4.19: Aufruf des Programms Z_PROG_MATERIALINPUT_##

Nachdem Sie die Menüoption Programm – Execute oder das entsprechende Icon Execute angeklickt haben, erhalten Sie eine Erfolgsnachricht. Diese Nachricht sagt lediglich aus, dass der zum Programm gehörende Funktionsbaustein erfolgreich aufgerufen wurde, nicht jedoch, ob die Nachricht auch erfolgreich zugestellt wurde.

Die korrekte Zustellung und Verarbeitung der Nachricht können Sie unter anderem im PI-System überprüfen. Melden Sie sich dazu am jeweiligen Mandanten an, und rufen Sie dort die Transaktion SXMB_MONI auf. Klicken Sie doppelt auf den Pfadeintrag Integration Engine – Monitoring – Monitor for Processed XML Messages, wodurch sich eine Selektionsmaske öffnet, die Ihnen eine differenzierte Auswahl aller verarbeiteten Nachrichten erlaubt. Wird das verwendete PI-System nur für Trainings- oder Testzwecke verwendet, ist eine Einschränkung kaum notwendig. Anderenfalls könnten Sie die Auswahl beispielsweise auf Nachrichten mit dem sendenden Server System A begrenzen.

Führen Sie die Nachrichtenabfrage über die Menüoption Program – Execute oder das Symbol Execute aus. Wurde Ihre Nachricht erfolgreich zugestellt und verarbeitet, sollten Sie einen Eintrag sehen, der in der Statusspalte eine schwarz-weiß karierte Flagge zeigt (siehe Abbildung 4.20).

Abbildung 4.20: Anzeige der ersten Nachricht in der Transaktion SXMB_MONI

Eine grüne Flagge bedeutet, dass die Nachricht derzeit noch bearbeitet wird, während die eine schwarz-weiß karierte Flagge den erfolgreichen Abschluss der Nachrichtenbearbeitung anzeigt. Die meisten anderen Symbole stehen in diesem Fall für einen Fehler. Sie können sich die Legende aller möglichen Symbole über den Menüeintrag Goto – Legend oder das Icon Legend anzeigen lassen.

Um den letzten Beweis der erfolgreichen Nachrichtenverarbeitung zu erhalten, können Sie sich die erstellte Datei anschauen: Das ist zum Beispiel über Transaktion AL11 im PI-System möglich, indem Sie dort die Zeile des Verzeichnisalias DIR_TEMP anklicken. Suchen Sie in der Dateiauflistung nach einer Datei vom Schema pi_output_##.dat. Mit einem Doppelklick können Sie die Datei zum Lesen öffnen. Da diese Anzeige jedoch nur auf eine bestimmte Breite beschränkt ist und kein automatischer Zeilenumbruch erfolgt, wird empfohlen, für die lokale Betrachtung der Datei die Transaktion ZAPCMD zum Download der Datei zu verwenden oder folgendes Programm.

Fehlersuche im Monitoring

Um einem Fehler auf den Grund zu gehen, klicken Sie in der Nachrichtenanzeige von Transaktion SXMB_MONI doppelt in ein beliebiges Feld der entsprechenden Zeile, wodurch Sie zur Ansicht Display XML Message Versions gelangen (siehe Abbildung 4.21).

Abbildung 4.21: Detailansicht einer XML-Meldung

Dort sehen Sie im Falle einer asynchron versendeten Nachricht die verschiedenen Zustände der Nachricht auf ihrem Weg durch die zentrale Integration Engine (IE). In der linken Verzeichnisstruktur können Sie zu der mit einem entsprechenden Fehlersymbol markierten Stelle navigieren. Suchen Sie in den Fenstern der rechten Seite nach einer Fehlermeldung, die Aufschluss über die Ursache gibt. In den meisten Fällen wurde der Fehler durch ein Mapping oder ein unachtsam aus der Wertehilfe ausgesuchtes Objekt verursacht.

In manchen Fällen sind jedoch auch fehlerhaft konfigurierte Kommunikationskanäle beziehungsweise Adapter der Grund. Um diese Möglichkeit zu überprüfen, starten Sie Transaktion SXMB_IFR für den Aufruf der PITools. Wählen Sie rechts unten die Runtime Workbench aus, und melden Sie sich mit Ihrem Benutzernamen PI-## an.

Sie sehen nun die einzelnen Optionen der Runtime Workbench, von denen Sie die meisten im Rahmen der weiteren Übungen und der Fallstudie erkunden werden. Auch wenn Sie mit der Transaktion SXMB_MONI bereits eine andere Möglichkeit der Nachrichtenübersicht kennengelernt haben, können Sie sich ebenso hier mit dem Menüeintrag Message Monitoring den Status von Nachrichten im PI-System anschauen. Wählen Sie zunächst jedoch das Component Monitoring, und lassen Sie sich Komponenten mit jedem möglichen Status anzeigen.

Suchen Sie in der Verzeichnisstruktur der Komponenten den Pfad Domain.XX.<PI-Hostname> - Integration Server - Adapter Engine aus. Unterhalb der Verzeichnisstruktur öffnet sich eine Statusansicht, die Aufschluss über den allgemeinen Zustand der Adapter Engine gibt. Klicken Sie dort am rechten oberen Rand auf den Button Adapter Monitoring (siehe Abbildung 4.22).

Abbildung 4.22: Einstieg in das Komponenten-Monitoring des Runtime Workbench

Nach dem Aufklappen des Namensraums öffnet sich ein neues Browser-Fenster, das Ihnen die Auswahl aller verfügbaren Adapter anzeigt. Eine graue Raute vor einem Adaptertyp bedeutet, dass noch kein Kommunikationskanal von diesem Typ angelegt wurde. Ein grünes Quadrat steht dafür, dass alle Kommunikationskanäle dieses Typs korrekt konfiguriert wurden und kein Fehler bei der Verarbeitung aufgetreten ist. Ein roter Kreis hingegen bedeutet, dass zumindest ein Kommunikationskanal dieses Typs einen Fehler hat.

Überprüfen Sie, ob bei den Adaptertypen RFC oder File ein Fehler aufgetreten ist. Zur genaueren Untersuchung können Sie den entsprechenden Typ anklicken, wodurch alle Kommunikationskanäle dieses Typs aufgelistet werden. Wenn Sie nach Ihrem Kommunikationskanal suchen und er einen Fehler anzeigt, finden Sie rechts davon eine ausführliche Beschreibung, anhand derer ein Fehler in den meisten Fällen behoben werden kann.

4.1.5 Alternatives ABAP-Mapping (optional)

Als Alternative zum grafischen Mapping, das Sie in dieser Übung verwendet haben, wird Ihnen am Beispiel dieser Übung gezeigt, wie das gleiche Mapping mithilfe einer ABAP-Klasse durchgeführt werden kann. Zur Umsetzung der nachfolgenden Aktionen müssen zum einen die vorbereitenden Schritte zum ABAP-Mapping ausführen, und zum anderen müssen Sie über eine Entwicklungsberechtigung in der Anwendung SAP NetWeaver Process Integration verfügen.

Erstellen des ABAP-Mappings

Das ABAP-Mapping wird als herkömmliche ABAP-Klasse im PI-System erstellt und über den Klassennamen im Operation Mapping aufgerufen. Dabei wird automatisch die Methode Execute aktiviert, die das Mapping ausführt und von Ihnen erstellt werden muss. Durch die getrennte Entwicklung kann ein ABAP-Mapping auch nicht in das Enterprise Services Repository importiert werden.

Melden Sie sich am PI-System an, und rufen Sie den Class Builder über die Transaktion SE24 auf. Geben Sie den Namen der neuen Klasse nach dem Schema ZCL_PI_ABAP_MAPPING_## ein, und klicken Sie auf Create (siehe Abbildung 4.23). Geben Sie anschließend im Popup-Fenster eine sprechende Beschreibung für die neue Klasse an, und klicken Sie auf Save. Sollten Sie bisher noch keinen Entwicklerschlüssel für den verwendeten Benutzer eingegeben haben, müssen Sie ihn nun angeben.

Abbildung 4.23: Anlegen der ABAP-Mapping-Klasse im Class Builder

Da es sich bei dem ABAP-Mapping um eine gewöhnliche ABAP-Klasse handelt, müssen Sie auch für diese Entwicklung ein Paket und einen Transportauftrag angeben, sofern es sich nicht um eine lokale Entwicklung handeln soll. Sie gelangen danach in den eigentlichen Class Builder und sehen Ihre neu angelegte Klasse. 

Klicken Sie auf den Karteireiter Interfaces, und wählen das ABAP-Interface IF_MAPPING aus (siehe Abbildung 4.24). Dieses Interface beinhaltet die Methode Execute mit der entsprechenden Signatur und stellt somit die Definition für die neue Methode dar. Detaillierte Informationen zu den ABAP-Mappings finden Sie im SAP Hilfsportal.

Abbildung 4.24: Einbinden des Interface IF_MAPPING in die neue Klasse

Durch die Einbindung des Interface finden Sie auf dem Karteireiter Methods nun auch die erwähnte Methode, die es zu implementieren gilt. Klicken Sie dazu doppelt auf den Methodennamen, und speichern Sie die Änderungen an der Klasse auf Nachfrage hin ab. Zur Entwicklung des eigentlichen Codings soll zunächst die XML-Ansicht auf die Nachricht wie in folgender Auflistung 4.1betrachtet werden:

<?xml version=”1.0” encoding=”UTF-8”?>

<ns1:MT_Material

xmlns:ns1=”http://www.sap-press.com/pi/training/##”>

<MATNR>PI_BOOK-##</MATNR>

<MAKTX>SAP PI Developer Book</MAKTX>

<ERSDA>01062009</ERSDA>

<ERNAM>SYS_A-##</ERNAM>

<MTART>FERT</MTART>

<MBRSH>1</MBRSH>

<MATKL>030</MATKL>

<MEINS>PT</MEINS>

<BRGEW>1.200</BRGEW>

<NTGEW>001.080</NTGEW>

<GEWEI>KGM</GEWEI>

<MTPOS_MARA>NORM</MTPOS_MARA>

</ns1:MT_Material>

Diese Ansicht finden Sie entweder in der Datei, die als Ergebnis der ersten Einzelübung erstellt wurde, oder indem Sie das Message Mapping der ersten Einzelübung testen und sich das Ergebnis in der XML-Ansicht anzeigen lassen. Die einzige Veränderung an den Werten im Mapping ist die automatische Berechnung des Nettogewichts auf Basis des Bruttogewichts. Der Aufbau der Nachricht und die restlichen Werte werden durch das Mapping nicht verändert, was die Erstellung des ABAP-Mappings vereinfacht.

Den detaillierten Quellcode für das ABAP-Mapping finden Sie in Anhang A. Übertragen Sie den Quellcode, ersetzen Sie die Platzhalter ##, und aktivieren Sie die Methode, damit sie später in das Operation Mapping eingebunden werden kann.

Aufgrund des Umfangs soll der Ablauf der Methode nur schematisch betrachtet werden. Zunächst wird die iXML-Bibliothek für ABAP-Objekte initialisiert, die es auf einfache Art und Weise ermöglicht, XML-Dokumente zu parsen und neu zusammenzusetzen. Detaillierte Informationen zur iXML Library von SAP finden sich ebenfalls im SAP Help Portal. Anschließend werden Objekte für Factorys und den Input Stream deklariert. Nach der Definition des Eingangsdokumentes werden die relevanten Knoten deklariert und mithilfe der Methode get_elements_by_tag_name aus dem Eingangsdokument exzerpiert.

Nachdem das Ausgangsdokument deklariert wurde, wird es mit den Werten aus dem Eingangsdokument befüllt. Dabei können die meisten Werte unverändert eingefügt werden. Lediglich das Nettogewicht wird als Knoten neu erstellt und auf Basis des Bruttogewichts berechnet. 

Zudem ist eine Korrektur des Datumsformats von YYYY-MM-DD nach DDMMYYYY notwendig, damit die Datei per IDoc in ein neues Material transferiert werden kann. Nach der Zuweisung der Knoten zum neuen Dokument wird in den Trace eine eigene Nachricht eingesetzt, um später in der Detailansicht des Nachrichten-Monitorings der Transaktion SXMB_MONI sehen zu können, dass die neu erstellte Methode auch abgearbeitet wurde. Abschließend wird der Output-Stream deklariert und ein Renderer angelegt, der für die Zusammenstellung des Ausgangsdokumentes verantwortlich ist.

Abbildung 4.25: Integration des ABAP-Mappings in das Operation Mapping

Integration des ABAP-Mappings

Nach der Erstellung und Aktivierung des neuen Mappings muss dieses in das bestehende Operation Mapping OM_Z_RFM_MATERIALINPUT_## _to_SI_Material_Async_In eingetragen und das Objekt erneut aktiviert werden. Rufen Sie dazu das genannte Operation Mapping auf und wechseln Sie in den Änderungsmodus. 

Im unteren Bereich in der Mitte stellen Sie zunächst in der Spalte Type den Eintrag von Message Mapping auf Abap-class um. 

Geben Sie anschließend den Namen der neu erstellen ABAP-Klasse ZCL_PI_ABAP_MAPPING_## an (siehe Abbildung 4.25). Das ABAP-Mapping lässt sich leider nicht im Enterprise Services Repository testen. 

Abbildung 4.26: Trace-Eintrag des ABAP-Mappings in der Nachricht

Speichern und aktivieren Sie die Änderung. Weitere Änderungen wie etwa in der Konfiguration sind nicht erforderlich.

Sie können die Übung nun erneut über das Programm Z_PROG_MATERIALINPUT_## aufrufen. 

Das Verhalten ist vom Ergebnis her gleich, wobei Sie im Nachrichten-Monitoring der Transaktion SXMB_MONI des PI-Systems im Trace zu Ihrer Nachricht nun den Eintrag finden werden, den Sie in der ABAP-Klasse angegeben haben (siehe Abbildung 4.26).

Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+ und Facebook!

Erfahren Sie mehr über Business-Software

ComputerWeekly.de
Close