Discussion:
Registrierte Destinationen am SAP Gateway ermitteln
(zu alt für eine Antwort)
Sebastian Lehnert
2004-04-19 18:02:23 UTC
Permalink
Hallo,

ich habe einen RFC-Server geschrieben, der sich am SAP - Gateway
registriert.
Wenn ich jetzt aus SAP (R/3) heraus einen RFC starten möchte, möchte ich
zuvor testen, ob der RFC-Server überhaupt online ist. Ich möchte also den
Kurzdump "program XXX not registered" vermeiden. Gibt es hierfür eine
Möglichkeit, bevor der Lauzeitfehler CALL_FUNCTION_OPEN_ERROR ausgelöst
wird, oder muss ich diesen irgendwie abfangen?

Danke und Gruß!
Sebastian
Volker Gueldenpfennig
2004-04-20 05:58:20 UTC
Permalink
Post by Sebastian Lehnert
Kurzdump "program XXX not registered" vermeiden. Gibt es hierfür eine
Möglichkeit, bevor der Lauzeitfehler CALL_FUNCTION_OPEN_ERROR ausgelöst
wird, oder muss ich diesen irgendwie abfangen?
Ich denke, alle registrierten Verbindungen werden in SMGW angezeigt. Wenn dem so ist, würde ich das debuggen, wie das Pgm an die Infos kommt ...

Gruß

Volker

web: http://www.easymarketplace.de
Sebastian Lehnert
2004-04-20 16:00:01 UTC
Permalink
Post by Volker Gueldenpfennig
Ich denke, alle registrierten Verbindungen werden in SMGW angezeigt. Wenn
dem so ist, würde ich >das debuggen, wie das Pgm an die Infos kommt ...

Das werd ich mal versuchen, allerdings zeigt SMGW nur dann etwas an, wenn
bereits eine Verbindung vorhanden ist, ich möchte ja checken, ob ich
überhaupt eine Verbindung aufbauen kann.
Christian Zalto
2004-04-20 22:03:55 UTC
Permalink
Post by Sebastian Lehnert
Post by Volker Gueldenpfennig
Ich denke, alle registrierten Verbindungen werden in SMGW angezeigt. Wenn
dem so ist, würde ich >das debuggen, wie das Pgm an die Infos kommt ...
Das werd ich mal versuchen, allerdings zeigt SMGW nur dann etwas an, wenn
bereits eine Verbindung vorhanden ist, ich möchte ja checken, ob ich
überhaupt eine Verbindung aufbauen kann.
Wenn die Registrierung in SMGW nicht angezeigt wird, lässt sich auch keine
Verbindung aus dem SAP heraus aufbauen. Erst muss sich der RFC-Server
registrieren, dann erst kann die Verbindung aufgebaut werden. Das würde
ich vor dem Aufruf einer externen Funktion einfach mit einem RFC_PING
auf die entsprechende Destination testen.
--
Mit freundlichen Grüßen,
Christian Zalto
Sebastian Lehnert
2004-04-22 09:28:53 UTC
Permalink
Post by Christian Zalto
Wenn die Registrierung in SMGW nicht angezeigt wird, lässt sich auch keine
Verbindung aus dem SAP heraus aufbauen. Erst muss sich der RFC-Server
registrieren, dann erst kann die Verbindung aufgebaut werden. Das würde
ich vor dem Aufruf einer externen Funktion einfach mit einem RFC_PING
auf die entsprechende Destination testen.
Also der Verbindungsaufbau funktioniert bei mir wunderbar,
ich registriere den Server, und kann dort RFCs aufrufen.
registriere ich den Server nicht, erhalte ich beim Versuch RFCs aufzurufen
entsprechende Fehlermeldungen.
Aber in beiden Fällen bleibt die SMGW - Liste leer.
Diese enthält nur während des RFC Aufrufs (also recht kurz) einen Eintrag
über diese Verbindung.
Christian Zalto
2004-04-22 21:21:58 UTC
Permalink
Post by Christian Zalto
Wenn die Registrierung in SMGW nicht angezeigt wird, lässt sich auch keine
Verbindung aus dem SAP heraus aufbauen. Erst muss sich der RFC-Server
registrieren, dann erst kann die Verbindung aufgebaut werden. Das würde
ich vor dem Aufruf einer externen Funktion einfach mit einem RFC_PING
auf die entsprechende Destination testen.
Also der Verbindungsaufbau funktioniert bei mir wunderbar, ich registriere
den Server, und kann dort RFCs aufrufen. registriere ich den Server nicht,
erhalte ich beim Versuch RFCs aufzurufen entsprechende Fehlermeldungen.
Aber in beiden Fällen bleibt die SMGW - Liste leer.
Diese enthält nur während des RFC Aufrufs (also recht kurz) einen Eintrag
über diese Verbindung.
Kann es sein, dass der Applikationsserver, auf dem Du SMGW aufrufst und
der Gateway-Host zwei unterschiedliche Rechner sind? Das könnte erklären,
warum die Liste leer ist, aber der Aufruf trotzdem klappt.
--
Mit freundlichen Grüßen,
Christian Zalto
Wolfgang Janzen
2004-04-26 11:24:44 UTC
Permalink
Post by Christian Zalto
Kann es sein, dass der Applikationsserver, auf dem Du SMGW aufrufst
und der Gateway-Host zwei unterschiedliche Rechner sind? Das könnte
erklären, warum die Liste leer ist, aber der Aufruf trotzdem klappt.
Nein - er schaut sich nur die falschen Infos an ...
Neben der Liste der aktuellen Verbindungen gibt es nämlich auch die
Liste der mit diesem Gateway (dauerhaft) verbundenen Systeme; dort
findet man auch(!) die registrierten Serverprogrammme (aber man muß die
Liste filtern). Siehe Report RSGWREGP.

Gruß, Wolfgang
Wolfgang Janzen
2004-04-26 11:21:05 UTC
Permalink
Post by Sebastian Lehnert
Hallo,
ich habe einen RFC-Server geschrieben, der sich am SAP - Gateway
registriert.
Wenn ich jetzt aus SAP (R/3) heraus einen RFC starten möchte, möchte
ich zuvor testen, ob der RFC-Server überhaupt online ist. Ich möchte
also den Kurzdump "program XXX not registered" vermeiden.
Gibt es hierfür eine Möglichkeit, bevor der Lauzeitfehler
CALL_FUNCTION_OPEN_ERROR ausgelöst wird, oder muss ich diesen
irgendwie abfangen?
Siehe Report RSGWREGP: dort wird GWY_READ_CONNECTED_SYSTEMS dazu
verwendet, die registrierten Serverprogramme eines(!) Gateways zu
ermitteln.

Tipp: man kann "Gateway-Registrierung" (initiiert von Seiten des
externen RFC-Serverprogramms) und "Anstarten eines externen RFC-Servers"
(seitens des Applikationsserver) kombinieren, indem man die zum
Registieren notwendigen Parameter in das Anstarte-Kommando aufnimmt
(mittels "-Quoating). Wenn man dann noch periodisch nach allen (Typ
T)-Destinationen sucht, die sich auf registrierte Server beziehen,
könnte man diese z.B. gezielt nachstarten, falls erforderlich. Ein
Programm, welches die RFC-Destinationen gezielt abgrast, ist z.B.
RSGWLST (allerdings ohne die oben erwähnte Anstarte-Option - die ist dem
"geneigten Leser als Übung" überlassen).

Gruß, Wolfgang
Sebastian Lehnert
2004-04-30 09:40:33 UTC
Permalink
Post by Wolfgang Janzen
Siehe Report RSGWREGP: dort wird GWY_READ_CONNECTED_SYSTEMS dazu
Danke,

dass werde ich mir mal anschauen.

Gruß
Sebastian

Peter Van Avermaet
2004-04-28 12:21:31 UTC
Permalink
As far as I know, the normal error handling on an RFC "call function"
is capable of handling this.

I tried something like this (Rel 4.6C):

report zztmprfc .

parameter p_rfcdes like rfcdes-rfcdest.

data rfcsi_export like rfcsi .
data rfc_login_complete like sy-debug.
data dialog_user_type like sy-debug.
data current_resources like sy-index.
data maximal_resources like sy-index.
data recommended_delay like sy-index.

data mess(80).

start-of-selection.
format reset.

write / p_rfcdes.

call function 'RFC_SYSTEM_INFO'
destination p_rfcdes
importing
rfcsi_export = rfcsi_export
rfc_login_complete = rfc_login_complete
dialog_user_type = dialog_user_type
current_resources = current_resources
maximal_resources = maximal_resources
recommended_delay = recommended_delay
exceptions
communication_failure = 1 message mess
system_failure = 2 message mess
.
if sy-subrc ne 0 .
write / sy-subrc.
write / mess.
endif.
Loading...