PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem bei SAP Anmeldung per SAP-Automation


Hardcoregamer
2016-11-14, 15:40:15
Hallo,

Ich habe hier ein Problem. Vielleicht kennt sich ja hier einer von euch aus :)

Im Moment haben wir SAP 4.6 (SAP GUI 7.40) im Einsatz. Ich schreibe SAP-Automation Programme die sich automatisch einloggen und etwas tun in SAP. Das programmieren findet "über Excel" in visual basic statt. Bis jetzt hat auch immer alles funktioniert, aber bei dem neuen SAP (ECC 6.0) gibt es ein Problem beim einloggen. Es funktioniert nicht.

Hier mal das wichtigste aus dem Script:

Global Sap As Object
Dim Passwordbox As DialogSheet
Global UseCode As Boolean
Global OnOff As Boolean
Dim ConnectTo As Integer
Dim HostName As String
Dim SystemNumber As String
Dim Client As String
Dim UserID As String
Dim Password As String
Dim Language As String
Global OK As Boolean
Global OkCode As String
...
Set Passwordbox = Application.ThisWorkbook.DialogSheets("Kippi's")
Set Sap = CreateObject("SapAutoGui.Event")
Zeile = 2 'Line 1 is header

Passwordbox.Show
UserID = Passwordbox.EditBoxes("Edit Box 2").Text 'Enter UserID
Password = Passwordbox.EditBoxes("Edit Box 3").Text 'Enter Password
Passwordbox.EditBoxes("Edit Box 3").Text = "" 'Delete Password in DialogSheet
...
Die Daten zum einloggen:

z.B.
HostName = "xxx" 'PN1
SystemNumber = "25"
Client = "025"
Language = "EN"

und dann:

OK = Sap.Connect(HostName, SystemNumber, SapGuiMerlin Or SapGuiFront) 'With SAP-Screen

Und dann geht der SAP Screen auf und es geht weiter...
So war es bisher

Jetzt bei dem neuen SAP.... Also ECC 6.0 funktioniert das aber nicht mehr.
Und ich habe keine Ahnung warum.

Im Internet habe ich ein script gefunden das funktioniert. Das wäre das hier:

Shell ("C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe")

Set SapGui = GetObject("SAPGUI")

Rem Create the GuiApplication object
Set Applic = SapGui.GetScriptingEngine

Rem Open a connection
Set connection = Applic.OpenConnection("03. RE1 - ECC Pre - Prod (Regression) System", True) '<=== here you need to fillin your connection description

Set session = connection.Children(0)

'session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/txtRSYST-MANDT").text = "025"
session.findById("wnd[0]/usr/txtRSYST-BNAME").text = "xxx"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").text = "xxx"
session.findById("wnd[0]").sendVKey 0

Rem Do something: Either fill out the login screen
Rem or in case of Single-Sign-On start a transaction.
session.SendCommand ("MM03")

Die Art der Programmierung ist aber total anders. Das heisst ich müsste alles der letzten 10 Jahre neu programmieren. :(

wie schaffe ich es mit meinem alten script? Ich hoffe ihr habt Ideen. Sonst haben wir hier ein echtes Problem... Mir gehen langsam die Ideen aus.


Gruß
Hardcoregamer