Aufruf per RFC oder nicht?

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
26 Beiträge • Seite 1 von 2 (current) Nächste
26 Beiträge Seite 1 von 2 (current) Nächste

Aufruf per RFC oder nicht?

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
hi!

Hab da ein kleines Problem:
Ich möchte wissen, ob der gerade aufgerufene Funktionsbaustein im Kontext einer RFC Verbindung läuft oder nicht.
Gibt es dafür irgendeine (einfache) Möglichkeit?
Wir unterhalten mehrere System und Mandanten und da ist es immer mühselig zuerst die ensprechenden RFC-Destinationen auszuwählen.
Daher möchte ich einen Baustein schreiben den ich im System A aufrufe der aber selber anhand von SYSID und Mandant prüft ob er richtig aufgerufen wurden und wenn nicht die richtige RFC-Verbindung auswählt und sich selbst via RFC aufruft. Aber ich möchte nicht, dass ich dadurch eine Endlos-Schleife produziere, weil z.B. die RFC-Verbindung auf das falsche System/Mandant zeigt und daher immer wieder sich selbst aufruft bis zum St. Nimmerleinstag.
Daher soll sich der Baustein nicht mehr aufrufen lassen wenn er bereits via RFC aufgerufen wurde.

Was ich bislang gefunden hab:
- Funktionsbaustein RFC_LOGON_INFO der gibt aber immer Y zurück. Wahrscheinlich weil auch der GUI eine Art RFC Verbindung zum System unterhällt?
- Ermitteln des Aufrufstacks und Abfragen auf das RFC-Subsystem SAPMSSY1

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Aufruf per RFC oder nicht?

Beitrag von km216 (Specialist / 151 / 6 / 11 ) »
Hi adt,

vielleicht kann ich ja ausnahmsweise mal dir helfen ;)

Hast du dir den Fuba 'CO_IH_RFC_ACTIVE_GET_INFO' mal angeschaut?
Habe diesen gerade mal ohne RFC getestet, da ist der Rückgabe-Parameter leer.
Kannst ja mal schauen, ob er bei dir gefüllt ist, wenn du einen aktiven RFC-Aufruf hast.

Gruß

Re: Aufruf per RFC oder nicht?

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
hi!

Danke!

Der Baustein an sich ist leider wertlos, da er nur im Kontext einer CO-Bearbeitung funktioniert.
Er gibt nämlich nur das globale Feld G_RFC_ACTIVE zurück.
Aber wenn man sich die Stellen ansieht an denen dieses Feld gesetzt wird findet man folgendes Coding:

Code: Alles auswählen.

CALL 'RFCControl' ID 'CODE' FIELD '?'.
  if sy-subrc <> 0.
    G_RFC_ACTIVE = YX.
  endif.
Das hab ich doch irgendwo schon mal gesehen. :twisted:

Jetzt bleibt nur die Frage ob es dafür einen Standardbaustein gibt, oder ob ich mir selbst eine "Hülle" drumherum schreiben sollte.

lg
ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Aufruf per RFC oder nicht?

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Prüfen, ob ein Funktionsbaustein per RFC gerufen wurde

Code: Alles auswählen.

call 'RFCControl' id 'CODE' field 'B'.
if sy-subrc = 0.
*** running under RFC
endif

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
a-dead-trousers


Re: Aufruf per RFC oder nicht?

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
nö, funktioniert leider nicht. Habs gerade so getestet :(
Ich denke mir mal, dass das doch irgendwie funktionieren muss, wie weis denn sonst der ABAP-Debugger, dass er eine Session überwacht, die mittels RFC-Verbindung gestartet wurde (---> RFC --->) in der Titelzeile.

--- EDIT ---
Nehm alles zurück :oops:
Bezog sich eigentlich auf FIELD '?'
Danke EWX
Ich sollte wirklich öfters auch auf Tricktresor schauen :shock:
-------------
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Aufruf per RFC oder nicht?

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Hm. Schade.
Evtl. Könnte sogar ein SYST-Feld gesetzt sein...
Der Debugger wird aber - glaube ich - nicht über RFC gesteuert, sondern über IPC (Inter process communication):
http://www.tricktresor.de/content/index ... 06&aID=427

Re: Aufruf per RFC oder nicht?

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
ne, hat eh funktioniert.
Hab deinen Post leider zu spät gesehen und mich eigentlich auf den davor bezogen.

Das in dem Artikel erwähnte Programm RSIMC003 ist ja genial :up:
Da tun sich ja neue und bislang völlig ungeahnte Möglichkeiten auf!

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Aufruf per RFC oder nicht?

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
a-dead-trousers hat geschrieben: Da tun sich ja neue und bislang völlig ungeahnte Möglichkeiten auf!
Leider hat man keinerlei Einfluss auf Größe oder Position der Fenster... :(

Re: Aufruf per RFC oder nicht?

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
ewx hat geschrieben:Leider hat man keinerlei Einfluss auf Größe oder Position der Fenster... :(
Ja, leider :cry:

Aber irgendwie müsste sich das ja bewerkstelligen lassen... :|
hmm... Ein GUI-Control welches die Position seines Eltern-Fensters via Windows-Funktionen ändert?
oder GUI-Scripting?

Werd mich wohl mal da ein bisserl reinfuchsen müssen 8)
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Aufruf per RFC oder nicht?

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Wens interessiert:

Hab grad den Funktionsbaustein RFC_WITHIN_SAME_SYSTEM gefunden, der eben das

Code: Alles auswählen.

call 'RFCControl' id 'CODE' field 'B'.
aufruft
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Aufruf per RFC oder nicht?

Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
a-dead-trousers hat geschrieben:hmm... Ein GUI-Control welches die Position seines Eltern-Fensters via Windows-Funktionen ändert?
oder GUI-Scripting?
Stefan Schnell: Brauchen wir nicht alle ein bisschen LUNA?

Re: Aufruf per RFC oder nicht?

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Sorry, dass ich den alten Mist wieder ausgrabe aber ich hab da eine neue Anforderung die evtl. in dieselbe Richtung schlägt:

Gibt es eine Möglichkeit in SAP herauszufinden welche RFC-Verbindungen in der aktuellen Transaktion/im laufenden Programm gerade offen sind?

Hintergrund:
Wir haben in letzter Zeit teilw. massive Performance Probleme auf unserem System gehabt. Da waren irrwitzige Auto-Refresh-Zeiten (10 sek.) und viele unnötig große (zentrale) Selects schuld. Das haben wir inzwischen hinbekommen, aber im Zuge der Benutzer-Auswertungen hat man festgestellt das überdurchschnittlich viele offene(!) RFC-Verbindungen innerhalb einer Transaktion gehalten werden. Daher wurden wir von unserem Systembetrieb beauftragt da nachzuhacken um möglichst zeitnah nicht mehr benötigte RFC Verbindungen zu schließen. Uns ist schon klar, dass offene und nicht genutzte RFC-Verbindungen jetzt nur sehr bedingte Auswirkungen auf die Performance haben (Arbeitsspeicher für Roll-In und Roll-Out usw.) aber trotzdem brennt jetzt aktuell vom Management irgendwie der Hut und es soll daher nichts unversucht gelassen werden *seufz*
Warum wir die Verbindungen nicht sofort beenden ist die Tatsache, dass die Benutzer uU mehrere Datensätze hintereinander abfragen könnten und jedes Mal die Verbindung zu beenden und wieder neu aufzubauen hätte dann eigentlich den gegenteiligen Effekt. Was wir aber haben ist ein Zeitpunkt an dem der Benutzer mit diesen Abfragen startet und einen Zeitpunkt an dem diese Abfragen enden.

Als erste Idee ist mir dazu vorgeschwebt, einfach nach allen CALL FUNCTION ... DESTINATION ... Aufrufen die verwendete Destination wegzuschreiben und dann am Ende gesammelt alle mit RFC_CONNECTION_CLOSE zu beenden.
Da das aber mitunter auch Aufrufe im Standard sein könnten graut es mir ein wenig vor zu vielen Standardänderungen.

Jetzt zu meiner Frage:
Da wir seitens Systembetrieb eine Liste der offenen RFC-Destinationen eines Benutzers innerhalb einer Transaktion vorgelegt bekommen haben ist in mir die Idee gereift, dass wir uns das ja zu Nutze machen könnten: Vorher und nachher eine Liste der aktuellen RFC-Verbindungen ermitteln und dann alle neu hinzugekommenen schließen.

Ich vermute, dass das auch über CALL 'RFCControl' möglich sein müsste, daher hab ich das alte Thema wieder aufgewärmt.

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Aufruf per RFC oder nicht?

Beitrag von Unit605 (Expert / 975 / 37 / 93 ) »
Ich bin mir nicht sicher, ob es hilfreich ist, aber ich werfe einfach mal die Transaktion 'SBGRFCMON' in den Raum........

Re: Aufruf per RFC oder nicht?

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Danke, aber leider nicht so ganz das was ich brauche. Vorallem weil die Benutzer das Berechtigungsobjekt S_BGRFC haben müssen um die Transaktion überhaupt aufrufen zu können. Ich hab mir die Interna jetzt auch nicht weiter angeschaut, daher weiß ich nicht wie tief diese Prüfung geht. Laut Hilfe werden nämlich nur bgRFC damit aufgezeichnet und das ist leider zu wenig.

War auch selber nicht ganz untätig und hab die Funktionsgruppe SGWY mit dem Baustein GWY_READ_CONNECTIONS gefunden. Damit kann man alle aktuellen Verbindungen ermitteln die der Gateway (Appl.Server) aktuell hält. Leider steht da die RFC-Verbindung mit nur 8 Zeichen drin. :x
Außerdem hab ich inzwischen das RFCControl für das "Testen" ob eine Verbindung offen ist gefunden: siehe RFC_CONNECTION_IS_OPEN.
Nur kann ich im Programm nicht auf Verdacht immer ALLE unsere RFC-Verbindungen abfragen ob sie offen sind oder nicht um sie im Anschluss zu schließen.

Hat noch jemand andere Ideen oder Möglichkeiten zu dem Thema?

lg ADT
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Aufruf per RFC oder nicht?

Beitrag von Dele (Specialist / 307 / 4 / 47 ) »
Kannst du ein paar Details zu diesen RFC-Verbindungen sagen ?
Sind das Verbindungen zu anderen SAP Systemen oder externen Systemen.
Sind das ggf. Verbindungen ins eigene System mir Destination 'NONE'.
Werden da eigene RFC-Bausteine aufgerufen (modifizierbar) oder sind das Bausteine von SAP oder Drittanbietern.
Wieviele RFC-Verbindungen mit unterschiedlichen Destinationen werden gleichzeitig bzw. parallel aufgebaut ?
Wieviele RFC-Aufrufe werden pro RFC-Destination ausgeführt ?

Vergleichbare Themen

0
Antw.
1638
Views
URL Aufruf der BSP
von juchheim » 09.11.2005 11:02 • Verfasst in Web Application Server
0
Antw.
1161
Views
Aufruf SAP Objekte
von hezi » 25.08.2006 12:30 • Verfasst in ABAP® Core
5
Antw.
4702
Views
Aufruf von BAPI_SALESORDER_SIMULATE
von Trulchen » 23.11.2016 08:39 • Verfasst in Sales and Distribution
2
Antw.
1674
Views
Aufruf Methoden
von SAP_ENTWICKLER » 24.11.2015 08:27 • Verfasst in ABAP® Core
1
Antw.
73
Views
Aufruf RFC_CALL_TRANSACTION_USING
von zero88 » 23.02.2024 15:51 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

Zugriff auf Daten via Webdav
vor 13 Minuten von msfox 2 / 33
Interne Tabelle
vor 17 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Zugriff auf Daten via Webdav
vor 13 Minuten von msfox 2 / 33
Interne Tabelle
vor 17 Stunden von sap_enthusiast 3 / 163
Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141