SAP-Logon mit VBA
Guten morgen, allerseits!
Ich habe auf der Suche für die Lösung in den letzten Tagen, aber ich habe wirklich nicht gelungen: ich versuche ein vba-code ein: 1-melden Sie sich in SAP -, 2-führen Sie einige Transaktionen, 3-export nach excel.
Aber auch die "log-in SAP" - Teil ist nicht OK!
Ich habe versucht, mehrere codes, die man unten ÖFFNET sich das SAP-logon-Bildschirm, aber nicht füllen Sie alle Felder aus. Ich Verwendet CreateObject("Sapgui.ScriptingCtrl.1")
:
Sub Entrar_SAP()
If Not IsObject(SAPguiApp) Then
Set SAPguiApp = CreateObject("Sapgui.ScriptingCtrl.1")
End If
If Not IsObject(Connection) Then
Set Connection = SAPguiApp.OpenConnection("xxxxxxx)", True)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
session.findById("wnd[0]/usr/txtRSYST-MANDT").Text = "100"
session.findById("wnd[0]/usr/txtRSYST-BNAME").Text = "user"
session.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = "pass"
session.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "PT"
session.findById("wnd[0]/usr/txtRSYST-LANGU").SetFocus
session.findById("wnd[0]/usr/txtRSYST-LANGU").caretPosition = 2
session.findById("wnd[0]").sendVKey 0
Anderen, mit CreateObject("SAP.Functions")
zeigte: "RFC-Fehler empfangen. Keine RFC-Berechtigung für den Funktionsbaustein RFC-PING"
der code ist:
'Declaration
Dim objBAPIControl As Object 'Function Control (Collective object)
Dim sapConnection As Object 'Connection object
Set objBAPIControl = CreateObject("SAP.Functions")
Set sapConnection = objBAPIControl.Connection
sapConnection.Client = "xxxxx"
sapConnection.User = "xxxxxx"
sapConnection.Language = "PT"
sapConnection.hostname = "xxxxx"
sapConnection.Password = "xxxxxxxx" 'Fake password
sapConnection.SystemNumber = "4"
sapConnection.System = "xxxxxx)"
sapConnection.Logon
If sapConnection.Logon(1, True) <> True Then
MsgBox "No connection to R/3!"
Exit Sub 'End program
End If
Kann mir bitte jemand helfen? Danke!!
- Bitte Bearbeiten Sie die Frage so, dass der code lesbar ist. Lassen Sie eine Leerzeile vor dem code und Gedankenstrich jede Zeile um 4 Leerzeichen, mehr, wenn Sie wollen, um zu zeigen, eingerückten code-Blöcke.
- Danke, ich habe gerade editiert!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst RFC ist ein völlig in Ordnung, Methode für die Interaktion mit SAP. Es ist nicht zu unterstützen.
Zweite, Sie haben nicht genug Berechtigung, so kann der code nicht funktionieren, selbst wenn Sie sich die syntax Recht. "RFC-Fehler empfangen. Keine RFC-Berechtigung für den Funktionsbaustein RFC-PING". Fragen Sie Ihren SAP-team, um Ihnen den Zugang zum ausführen von RFCs aus der Ferne. Fragen Sie nach SAP_S_RFCACL.
On a side note, Ihre Haupt-Objekt, die einige Transaktionen und Export zu Excel ist ziemlich einfach zu tun in SAP. Vielleicht sollte man einfach Fragen Sie Ihren SAP-team, um es für Sie tun, statt sich zu entwickeln, es in VBA?
Ich nehme an, Ihr zieht über eine RFC-read Table. Diese Verbindung funktioniert gut für diese.
Ab diesem Zeitpunkt können Sie machen Sie Ihre RFC-Aufruf ohne Probleme.
Aber um ehrlich zu sein, obwohl, Oben ist fast genau das, was Sie haben, als das zweite Beispiel. Ihre RFC-Fehler Ihr immer scheint, wie Sie nicht über Sicherheits-Einstellungen für die SAP, um RFC-Aufrufe an welchem Tisch Ihr zieht aus und nicht ein problem mit dem login-code.
Haftungsausschluss: RFC_READ_TABLE ist NICHT von SAP unterstützt und ist mehr eine backdoor, die dann von Tag zu Tag Methode für das abrufen von Daten.
Edit1: Zur Abdeckung der Kommentare und nicht mit diesem in eine Diskussion, die ich werde versuchen und Fassen Sie hier.
Erstens
pop-up: Wenn Sie wollen, dass die pop-up für den log-in, dann müssen Sie ändern Sie diese Zeile von code
zu
Zweitens
Den Berechtigungen: RFC_Read_Table verwendet Sehr Unterschiedliche Security-Einstellungen in SAP t-Code verwendet, Der technische Unterschied ist schwer zu erklären, aber für eine Regel von Daumen, Wenn Sie keinen Zugriff auf die SAP-Tabelle (TCODE SE16), die Sie wahrscheinlich nicht in der Lage zu ziehen aus RFC-Read Table
Drittens
Wenn Ihr Unternehmen Mehrere SAP-Boxen (ENTWICKLUNG, Produktion, test) der Systemname wäre GENAU, was zeigt sich auf dem Bildschirm "Feld auswählen" von SAP unter dem Namen. vorausgesetzt, Sie waren immer ein RFC-Fehler von deinem zweiten code-block dann das Feld name, den Sie im code würde das richtige sein.