!--a11y-->
ABAP-Proxy-Objekte 
Alle ABAP-Objekte, die bei der Generierung eines Interface-Objektes aus dem Integration Repository im SAP-System angelegt werden, nennt man ABAP-Proxy-Objekte.
Man kann die unterschiedlichen Interface-Objekte (also der Objekte aus dem Integration Repository, aus denen Proxies generiert werden) in zwei Klassen einteilen: Das Message-Interface selbst und die Parameter und Datentypen dazu (siehe auch: Umsetzung von WSDL in die Zielsprache). Auch nach der Generierung lässt sich jedes generierte Proxy-Objekt seinem zugehörigen Interface-Objekt im Integration Repository zuordnen. Die ABAP-Proxy-Generierung merkt sich diese Zuordnung über sogenannte Metadaten, die mit dem Proxy-Objekt transportiert werden.
Message-Interfaces können den Modus synchronen oder asynchron haben (siehe: Kommunikationsparameter). Außerdem ist von der Kategorie des Message-Interface abhängig, was für ein Proxy generiert wird:
· Das Gegenstück zuOutbound-Message-Interfaces im Anwendungssystem sind Client-Proxies. Sie werden gerufen, um eine Message an ein Inbound-Interface zu senden. Ein Outbound-Message-Interface wird auf eine ABAP-Objects-Klasse (Präfix CO_) abgebildet.
· Das Gegenstück zuInbound-Message-Interfaces im Anwendungssystem sind Server-Proxies. Sie werden gerufen, um einen Service zu starten, der im synchronen Fall ein Ergebnis zurückliefert. Die Proxy-Generierung generiert für ein Inbound-Message-Interface ein ABAP-Objects-Interface (Präfix II_), das Sie mit Hilfe einer ABAP-Objects-Klasse implementieren müssen, um diesen Service bereitzustellen.

Diese Klasse muß der ABAP-Proxy-Laufzeit bekannt sein, damit die zu rufende Methode bei Eingang einer Message aufgerufen werden kann. In der Voreinstellung trägt die Proxy-Generierung hierfür auf der Registerkarte Eigenschaften eine implementierende Klasse ein, die nach Aktivierung des Proxy zusätzlich generiert wird. Wenn Sie eine bereits existierende Klasse verwenden wollen, tragen Sie sie in diesem Feld ein.
· Abstrakte Message-Interfaces haben für Anwendungssysteme keine Bedeutung und werden von der Proxy-Generierung ignoriert.
Abhängig von der Kommunikationsart werden Methoden mit folgendem Namen generiert:
· Bei einem synchronen Interface heißt die Methode EXECUTE_SYNCHRONOUS
· Bei einem asynchronen Interface heißt die Methode EXECUTE_ASYNCHRONOUS
Dies gilt unabhängig davon, ob es sich um ein Inbound- oder Outbound-Message-Interface handelt. Außerdem enthält eine Proxy-Klasse zusätzliche Methoden, um neben einem einfachen Nachrichtenaustausch zusätzlich Protokolle zu implementieren.
Siehe auch: Programmierung mit Client- und Server-Proxies.
Sowohl für Outbound-Message-Interfaces als auch für Inbound-Message-Interfaces lässt sich folgendes feststellen:
· Aus dem Output-Message-Typ wird ein Parameter mit Namen OUTPUT. Aus dem Input-Message-Typ, wird ein Parameter mit Namen INPUT. OUTPUT bezeichnet also die ausgehende Message und INPUT die eingehende Message. Beide Parameter sind Strukturen des jeweiligen Message-Typs mit einem Feld für den Datenteil der Message.
· Der Datenteil der Message wird über den Namen des Message-Typs angesprochen. Heißt beispielsweise der Message-Typ Report und verweist dieser auf den Datentyp InvoiceData, dann wird eine Struktur Namens Report vom Typ InvoiceData erzeugt.
Für globale XSD-Datentypen legt die Proxy-Generierung wiederverwendbare Datentypen im ABAP Dictionary ab, zum Beispiel Datenelemente oder Strukturen. Für lokale Elemente oder Attribute werden Felder einer Struktur generiert. Die Wiederverwendung von Datentypen im Integration Repository spiegelt sich also bei den im System angelegten Datentypen wieder.
Es gibt keinen expliziten Tabellentyp in XSD. Statt dessen können Sie für Elemente festlegen, dass sie unbegrenzt auftreten dürfen (siehe auch: Elemente und Attribute). Nehmen Sie zum Beispiel an, dass Sie einen Datentyp staff benötigen, mit dessen Hilfe man eine Gruppe von Mitarbeitern als Stabsmitarbeiter auszeichnen und ihnen einen Manager zuordnen kann. Die folgende Tabelle soll die Definition dieses Datentyps im XSD-Editor wiederspiegeln:
Definition eines unbegrenzt auftetenden XSD-Element innerhalb einer Struktur
Struktur |
Kategorie |
Typ |
Häufigkeit |
Beschreibung |
|
staff |
Komplexer Typ |
|
|
|
|
[-] manager |
Element |
|
1 |
staff manager |
|
|
name |
Element |
xsd:string |
1 |
|
|
birthday |
Element |
xsd:date |
1 |
|
[-] employee |
Element |
|
1..unbounded |
staff members |
|
|
name |
Element |
xsd:string |
1 |
|
|
birthday |
Element |
xsd:date |
1 |
|
Das Element employee kann also nach dieser Definition mehr als einmal im zugehörigen XML-Schema auftreten. Die Proxy-Generierung generiert für employee einen ABAP Dictionary Tabellentypen und eine Struktur für den Zeilentyp mit den Feldern name und birthday.
ABAP-Proxy-Objekte sind gegen manuelle Änderungen im SAP-System geschützt. Sie können nur über die ABAP-Proxy-Generierung verändert werden. ABAP-Proxy-Objekte dienen nur der Abbildung der im Integration Repository definierten Datenstrukturen. Sie werden daher nicht übersetzt und dürfen nicht an Oberflächen verwendet werden.
Sie können ABAP-Proxies für Message-Interfaces generieren, die auf RFC- oder IDoc-Messages verweisen. Die generierten Proxy-Objekte (beispielsweise Klassen und generierte Strukturen) verwenden als Präfix im technischen Namen den Namen des Message-Interfaces, das auf die Message verweist. Die zur RFC- oder IDoc-Message gehörenden Proxy-Objekte gehören zum übergeordnetem Message-Interface und werden nicht von der Proxy-Generierung wiederverwendet. RFC-Ausnahmen werden in einer Ausnahmeklasse zusammengefasst.
Die folgende Grafik gibt ein Beispiel, wie ein Interface aus dem Integration Repository auf ein ABAP-Proxy abgebildet wird:
