
Dieser Abschnitt erläutert die allgemeine Vorgehensweise, wie Sie ABAP-Proxys mit der Generierungsquelle ESR oder externe WSDL generieren, nachgenerieren und löschen. Zusatzinformationen zum Generieren spezieller Proxy-Typen stehen Ihnen in separaten Abschnitten zur Verfügung.
Der Generierungsprozess für ABAP-Proxys ist für jeden Proxy-Typ weitgehend identisch. Dabei sind zwei Schritte entscheidend:
Objekte für den Aufruf oder die Implementierung auswählen
Proxys generieren und aktivieren
Um mit ABAP-Proxys zu arbeiten, muss Ihnen die Rolle SAP_XI_DEVELOPER_ABAP zugeordnet sein. Diese Rolle ist in der Sammelrolle SAP_XI_DEVELOPER enthalten. Verwenden Sie den Profilgenerator (Transaktion PFCG), um Rollen zuzuordnen.
Dem Proxy-Typ entsprechend müssen folgende Aufgaben vor der Proxy-Generierung ausgeführt werden:
Alle Objekte müssen im ES Repository modelliert sein - oder als externe WSDL-Beschreibungen verfügbar sein.
Manche Objekte im ESR sind Kombinationen von anderen Objekten. Zum Beispiel enthält ein Service-Interface Datentypen und Message-Typen. Deshalb kann ein Proxy (ein Web-Service-Provider oder ein Web-Service-Consumer) nur generiert werden, wenn auch alle referenzierten Typen generiert werden. Wenn ein im ES Repository modelliertes Proxy für ein Objekt generiert wird, das auf ein anderes Objekt im gleichen Namensraum verweist, wird das Proxy für das referenzierte Objekt automatisch generiert. So kann z. B. ein Proxy für ein Service-Interface generiert werden, das auf einen bestimmten Datentyp verweist. Wenn ein referenziertes Objekt in einem anderen Namensraum besteht, müssen Sie das Proxy für das referenzierte Objekt separat generieren.
Wenn ein Proxy aus einem externen WSDL-Dokument generiert wird, werden alle seine Objekte generiert.
Die Paketstruktur im ABAP-Backend-System muss definiert sein.
Die Paketstruktur definiert, wo die Proxys angelegt werden, wo sich der Service-Provider befindet und wie sich die Pakete in die allgemeine Anwendungsstruktur einfügen. Beachten Sie, dass bei Proxys aus externen WSDLs das Paket Teil des externen Namens ist, und dass Objekte, die andere Objekte referenzieren, die externen Namen für diese Referenzen verwenden. Wird das Paket für manche dieser Objekte nach der Proxy-Generierung geändert, gehen diese Referenzen verloren. Deshalb sollte das Paket nach der Proxy-Generierung nicht geändert werden.
Es können Präfixe für ABAP-Objekte definiert werden.
Beim Generieren von Proxys werden viele verschiedene Objekte angelegt. Alle externen Objekte haben einen eher langen qualifizierten Namen, der aus Name und Namensraum besteht. Die ABAP-Objekte haben nur einen 30 Zeichen langen ABAP-Namen. Der ABAP-Name wird aus dem externen Namen abgeleitet (ohne Namensraum) und hat möglicherweise ein Präfix. Es empfiehlt sich, Präfixe zu definieren, da durch diese sichergestellt wird, dass ABAP-Objekte im Backend-System eindeutige und konsistente Namen erhalten, und Namenskollisionen vermieden werden. Bei vielen ABAP-Projekten müssen Sie einen ABAP-Namensraum verwenden. Sie können ihn mithilfe eines Präfix definieren. Wegen der Beschränkung auf 30 Zeichen sind die generierten Namen möglicherweise nicht sehr sprechend. Sie sollten deshalb alle generierten Namen manuell überprüfen und gegebenenfalls anpassen.
Proxy generieren
Sie müssen in dem System arbeiten, in dem Sie das Proxy generieren möchten. Proxys werden in dem ABAP-Backend-System generiert, in dem anschließend die Bereitstellung des Objekts erfolgt.
Starten Sie den Enterprise Services Browser.
Verwenden Sie den Transaktionscode SPROXY.
Markieren Sie ein Objekt. Im Enterprise Services Browser können Sie ein Objekt nach unterschiedlichen Kriterien suchen, beispielsweise nach der Generierungsquelle, dem Paket oder dem Objekttyp.
Für die Generierung des Proxys öffnen Sie das Kontextmenü und wählen Sie Proxy anlegen.
Geben Sie ein Paket und ein Präfix an und wählen Sie Fertigstellen.
Gültige ABAP-Namen werden vorgeschlagen. Sie können die vorgeschlagenen Namen bei Bedarf ändern.
Das von Ihnen angegebene Präfix wird als Bestandteil des ABAP-Namens auf den Registerkarten Eigenschaften und Struktur angezeigt.
Aktivieren Sie das Proxy.
ABAP-Objekte, wie DDIC-Typen, Klassen und Interfaces werden erst dann angelegt oder geändert, wenn Sie die Proxys aktivieren. Beim Generieren, Neugenerieren, Bearbeiten oder Sichern von Proxys werden die ABAP-Objekte nicht angefasst. Beim Sichern eines Proxys wird eine inaktive Version der Metadaten angelegt. Um die ABAP-Objekte zu ändern, die zur Laufzeit verwendet werden, wird eine aktive Version benötigt.
Geben Sie den Transportauftrag frei.
Beachten Sie, dass das Proxy (SPRX-Objekt) und die generierten Objekte (CLAS, INTF, TAB, DTEL) zusammen transportiert werden.
Legen Sie eine Laufzeitkonfiguration für die Proxys an.
Legen Sie in dem System, das den Web-Service konsumiert, einen logischen Port für den Web-Service-Consumer an. Legen Sie im Provider-System einen Endpunkt für die Service-Definition an. Weitere Informationen finden Sie unter Web-Services in SOA-Manager konfigurieren.
Proxys mit industriespezifischer Erweiterung generieren
Um Industrieklassifikationen zu aktivieren, müssen Sie eine Industrie auswählen, wenn Sie Proxys für Web-Services generieren, die mit einem Erweiterungspaket ausgeliefert werden. Führen Sie die folgenden Schritte aus:
Melden Sie sich in englischer Sprache am Backend-System an.
Starten Sie die Transaktion SM30.
Wählen Sie die Sicht SVW_INDUSTRY.
Wählen Sie Ihre Industrien aus.
Proxy nachgenerieren
Wenn ein Objekt im Enterprise Services Repository (ES Repository) nach seiner Generierung geändert wird, werden die Änderungen nicht automatisch im Proxy im ABAP-Backend-System nachgezogen. Wenn ein Objekt im ES Repository geändert wird, müssen Sie das entsprechende Proxy manuell nachgenerieren.
Im ES Repository Browser sowie im Enterprise Services Browser gibt ein rotes Dreieck an, dass eine Version einer ES Repository-Entität von der Proxy-Version im ABAP-Backend-System abweicht.
Machen Sie im Enterprise Services Repository Browser das Objekt ausfindig, dessen Proxy Sie nachgenerieren möchten.
Öffnen Sie das Kontextmenü und wählen Sie Proxy nachgenerieren.
Diese Funktion ist nur verfügbar, wenn das Proxy bereits generiert wurde.
Es werden nur Proxy-Interfaces, -Datentypen und -Klassen überschrieben. ABAP-Namen and -Typen bleiben, wenn möglich, intakt. Wenn beispielsweise ein Datentyp derart geändert wurde, dass sein ABAP-Typ nicht mehr gültig ist, wird er angepasst.
Aktivieren Sie das Proxy erneut.
Wählen Sie aus dem Kontextmenü Proxy aktivieren.
Sie können wählen zwischen Aktivieren, Hauptobjekt aktivieren und Alle aktivieren, je nachdem, ob Sie die zugrunde liegenden Objekte ebenfalls aktivieren möchten.
Proxy löschen
Markieren Sie ein Objekt im ES Repository Browser.
Wählen Sie im Menü .
Die implementierende Klasse wird nicht gelöscht, aber Sie müssen sie manuell löschen. Es werden nur die generierten Daten gelöscht.
Wenn Proxy-Objekte aktiviert werden, erfolgt die Erstellung eines oder mehrerer der folgenden ABAP-Objekte:
ABAP-Dictionary-Typen
ABAP-Dictionary-Typen repräsentieren die globalen Datentypen im ES Repository. Das System generiert außerdem die Datentypen, die als Methodenparameter verwendet werden.
ABAP-Interface
Ein ABAP-Interface enthält Interface-Typen und Konstanten.
Die Vorlage einer ABAP-Klasse (Proxy-Klasse oder implementierende Klasse) für Provider- oder Consumer-Proxys, falls noch nicht vorhanden
Sie müssen diese Vorlage manuell anpassen und aktivieren. Wenn Sie eine neue anlegen möchten, müssen Sie die implementierende Klasse löschen oder ihren Namen ändern.
Die ABAP-Klasse eines Service-Providers enthält die Implementierung der Service-Provider-Methoden und verwendet ein ABAP-Interface. Eine Service-Provider-Klasse verfügt über eine Methode für jede im ES Repository modellierte Operation. Für ein Proxy, das von einer Anwendung verwendet wird, müssen die Methoden mit Anwendungsquelltext gefüllt werden.