SAP Script Connection edit and Close

Liebe/-r Experte/-in,
Ich möchte auf Arbeit mit Hilfe von VBScript(Geplante Tasks)mich an SAP anmelden, bestimmte Daten holen(Lagerbestände, Personaldaten,…) und dann wieder schließen und dies auch wenn ich nicht an Windows angemeldet bin(Computer gesperrt)

Habe folgende String:
Public Function OpenConnection( _
ByVal Description As String, _
Optional ByVal Sync As Variant, _
Optional ByVal Raise As Variant _
) As GuiConnection

aber wie kann ich den einsetzen um mein Problem zu lösen?

Bisher habe ich es gelöst mit dem Code unten, aber es ist halt so dass mit SendKeys alles nicht immer gut läuft und beim gesperrten Rechner geht nichts:
set Wshell = CreateObject(„WScript.Shell“)

zeile = 1 'Zeilenposition im SAP Logon
system = „_P41“ 'SAP - Systembezeichnung
mandant = „101“ 'SAP - Mandant
name = „sap“ 'Name des Anwenders
Dim Monat, Jahr

'######Diese Location anpassen######

Wshell.run „D:\SAP\Frontend\SAPgui\SapLogon.exe“ 'Pfad von SAP Logon

Do
bWindowFound = Wshell.AppActivate(„SAP Logon“) 'Warten auf das Fenster “SAP Logon”
WScript.Sleep 1000
Loop Until bWindowFound

Wshell.appActivate „SAP Logon“
WScript.Sleep 200
Wshell.sendkeys „^{HOME}“ 'An den Anfang springen
WScript.Sleep 100
For i=1 to zeile - 1
Wshell.sendkeys „{DOWN}“ 'Eine Zeile runter
WScript.Sleep 50
Next
Wshell.sendkeys „{ENTER}“ 'ENTER drücken

'Do
bWindowFound = Wshell.AppActivate („P41“) 'Warten auf das Anmeldefenster
WScript.Sleep 300
'Loop Until bWindowFound
'Wshell.appActivate „SAP Logon“
WScript.Sleep 200
'Wshell.sendkeys „%{F4}“ 'Beenden von SAP Logon

If Not IsObject(application) Then
Set SapGuiAuto = GetObject(„SAPGUI“)
Set application = SapGuiAuto.GetScriptingEngine
End If

If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, „on“
WScript.ConnectObject application, „on“
End If
'user = InputBox(„SAP User eingeben“)
'pwd = InputBox(„SAP Passwort eingeben“)
session.findById(„wnd[0]“).maximize
session.findById(„wnd[0]/usr/txtRSYST-MANDT“).text = 101
session.findById(„wnd[0]/usr/txtRSYST-BNAME“).text = „Username“

session.findById(„wnd[0]/usr/pwdRSYST-BCODE“).text = „XXXXXXXX“
session.findById(„wnd[0]/usr/pwdRSYST-BCODE“).setFocus
session.findById(„wnd[0]/usr/pwdRSYST-BCODE“).caretPosition = 6
session.findById(„wnd[0]“).sendVKey 0

If Not IsObject(application) Then
Set SapGuiAuto = GetObject(„SAPGUI“)
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
If Not IsObject(session) Then
Set session = connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, „on“
WScript.ConnectObject application, „on“
End If

session.findById(„wnd[0]“).sendVKey 0

Ich habe schon gehört dass dies möglich ist(VBS oder nicht), aber ich komme nicht voran und hoffe von euch Hilfe zu bekommen.
Gruß
Gustave

Hallo Gustave,
davon habe ich leider keine Ahnung. Sorry.

LG Wolf-Dieter

Hallo Gustave,

ich vermute die Anfrage ist bei mir gelandet, weil SAP-Script in meinem Profil steht. Damit ist aber der Formulardruck im SAP gemeint … :wink:
Mit VBScript und Versuchen sich darüber im SAP anzumelden kenne ich mich leider überhaupt nicht aus.

Allerdings würde ich auch grundsätzlich anders vorgehen, wenn es darum geht Daten aus einem SAP-System auszulesen und an ein anderes System zu übergeben.
Wenn sich beide Systeme im Unternehmensetz befinden, gibt es zwei gängige Lösungsansätze, die mir auf die Schnelle einfallen.

  1. Aufruf eines RFC-fähigen Funktionsbausteins im SAP, der über die definierte Schnittstellenvariablen die erforderlichen Parameter übernimmt, die Datenselektion durchführt und das Ergebnis zurückmeldet. Dafür muß das Partnersystem und dessen Programmiersprache fähig sein Remote-Function-Calls bzw. Remote-Procedure-Calls auszuführen. Hab das vor Urzeiten (1995) schon mal mit C++ unter Unix und einem SAP R/2 gemacht … :smile:
    Heute ist es gängig, z.b. für Intranetanwendungen, dass ein Java-Programm über den Java-Connector solche RFC-Aufrufe an’s SAP sendet.
    Stichwort zum Suchen also „Java-Connector“ und „Remote Function Call“.
    Deine SAP-Admin-Kollegen müssen allerdings die RFC-Destinationnen und entsprechenden RFC-User (keine Dialog-User) eingerichtet haben. Ist dann auch schon wieder ein Kapitel für sich.

  2. Eine modernere Methode, die sich mittlerweile immer mehr verbreitet, ist die Bereitstellung von Web-Services im SAP (dürfte ab Rel. 7.0 oder 7.10 funktionieren). Das wird von vielen Programmiersprachen unterstützt und läuft über standardisierte Schnittstellen.
    Ein Webservice bietet eine gewisse Funktionalität (z.B. Melde den aktuellen Lagerbstand zur übergebenen Materialnummer), die in einem Directory bekannt gegeben wird. Dieser Service kann dan von anderen Programmen mit den definierten Parametern aufgerufen werden und liefert das entsprechende Ergebnis zurück.
    Unter dem Stichwort „Web-Services“ findest Du im Internet sicher eine Flut von Informationen. Da musst Du dich leider erst mal durchbeissen/-lesen.
    Ich hab’s selbst noch nicht verwendet, werde mich aber demnächst auch damit vergnügen dürfen …

Hoffe, das hilft wenigstens ein klein wenig weiter.

Viele Grüße
Holger

aber ich komme nicht voran und hoffe von euch Hilfe zu
bekommen.
Gruß
Gustave

Hallo Gustave,

konkret kann ich dir auch nicht helfen, da ich bei VBS total keine Ahnung habe. Eventuell wäre der GUIXT von Synactive etwas für dich, der ja bei der SAP-Software integriert ist. Mit dieser Skript-Sprache lassen sich viele direkte SAP-Aufrufe realisieren.

Viele Grüße

Gerd

Tut mir leid, da kann ich nicht helfen!

Gruß
Enno

Hallo Gerd,
Danke schon mal für den Hinweis.
Wie schaffe ich es mit dem GUIXT.
Kannst du mir bitte bizzl mehr erzählen?
Hast du ein Beispiel Aufruf?
Danke
Bboli

Hallo,

ich habe jetzt schon längere Zeit nicht mehr Skripte für den GUIXT entwickelt, aber auf der Seite von

http://synactive.com/index_d.html

findest du ein gutes Tutorial, in dem eine Vielzahl von Beispielen erläutert sind.

Kleiner Hinweis:
Du musst dir noch bei Synactive einen Lizenzkey geben lassen, damit die Anwender auch GUIXT nutzen können.

Die Standardmodule, die mit SAP ausgeliefert werden, sind im Übrigen ausreichend, um solche Skripte zu entwickeln.

Viele Grüße

Gerd

Hallo!

Ich hatte Dir bereits im Januar auf Deine Anfrage geantwortet, hatte aber nicht mitbekommen, dass wer-weiss-was.de die Funktion „Antwort mit Protokoll“ nicht mehr unterstützt. Deswegen antworte ich Dir zu diesem sehr späten Zeitpunkt nochmal auf dem neuen, dafür vorgesehenen Weg, auch wenn ich davon ausgehe, dass Du jetzt keine Antwort mehr benötigst. Ich will dat Teil aber aus meiner www-Inbox rausbekommen.

Meine Antwort von damals hätte Dir aber eh nix gebracht. SAP Script ist nicht mein Fachgebiet. ;o)

Grüße
Oli