Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

SAP Logon über VBA

Forumthread: SAP Logon über VBA

SAP Logon über VBA
17.08.2020 16:20:08
Ronny
Hallo,
ich würde gerne eine gewisse Transaktion (SAP LT03) direkt über Excel starten per VBA. Bin bisher nur sehr kurz mit dem Thema VBA in Berührung gekommen. Ich habe hier schon im Forum gesucht und auch etliche VBA-Codes gefunden, nur bin ich hierzu noch zu weit weg vom Thema.
Ich mag einfach eine Schaltfläche in meinem Excel-Sheet haben auf die ich drücke und dann der SAP-Logon automatisch erfolgt und die Transaktion LT03 geöfnet wird.
Könnte mir jemand mal ein Beispiel schreiben für VBA?
Danke Euch
Gruß Ronny
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: SAP Logon über VBA
17.08.2020 17:31:28
onur
Mache über SAP einen Link zur Transaktion LT03 und starte per Button diesen Link wie jede andere Datei auch.
AW: SAP Logon über VBA
18.08.2020 08:08:15
Ronny
Hallo,
Danke Dir für die schnelle Antwort, aber ist nicht genau das was ich suche wenn ich es richtig verstehe! Die Excel Datei soll jeder verwenden, wenn ich es auf deinem Wege mache kann es nur derjenige aufführen bei dem die Verknüpfung zur Transaktion liegt oder?
Danke
Anzeige
AW: SAP Logon über VBA
18.08.2020 08:23:36
onur
Eine verknüpfung auf dem Desktop anlegen kann doch jeder, oder?
AW: SAP Logon über VBA
18.08.2020 09:14:58
MCO
Hallo Ronny!
Ich hab seinerzeit selbst auch mal den Versuch gemacht, den LOGon aus xls herauszu machen, feldabhängig sollte dann auch die Transaktion aufgerufen und gefüllt werden.
Es erwies sich als wenig praxistauglich, weil immer ein neuer Logon erzeugt wird, die Verifikation geht jedesmal verloren. :-(
Der Code sollte soweit klar kommentiert sein.
Viel Erfolg!
Gruß, MCO
Private Sub Call_SAP()
Dim command As String
Dim SAP_Dir As String
Dim SapSys As String 'SAP-System Name
SapSys = "PF1" 'hier Systemnamen eintragen oder aus einer Zelle auslesen
'64bit check
If Dir("C:\Program Files (x86)\sap\frontEnd\saPgui", vbDirectory)  vbNullString Then
SAP_Dir = "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\"
Else
SAP_Dir = "C:Program FilesSAPFrontEndSAPgui"
End If
Select Case ActiveCell.Column
Case col_Auftrag
If InStr(ActiveCell, "/") > 0 Then 'mit Slash
Anwendung = "va03"
feld = " VBAK-VBELN="
wert = Split(ActiveCell, "/")(0)
Else
If ActiveCell  40000000 Then 'Kundenauftrag
Anwendung = "va03"
feld = " VBAK-VBELN="
End If
wert = ActiveCell
End If
Case col_Qualitätsmeldung 'QM
Anwendung = "QM03"
feld = " RIWO00-QMNUM="
wert = ActiveCell
Case col_Qualitätsauftrag 'QA
Anwendung = "kkf2"
feld = " COAS-AUFNR="
wert = ActiveCell
End Select
Anwendung = "va03"
feld = " VBAK-VBELN="
command = """" & SAP_Dir & "sapshcut.exe"" -system=" & SapSys & " -client=001 -user=" &  _
Environ$("Username") & " -language=DE -Command=""*" & Anwendung & feld & wert & ";"""
Shell command
End Sub

Anzeige
AW: SAP Logon über VBA
18.08.2020 16:26:27
Ronny
Hallo,
ich habe es jetzt mal so versucht (siehe Anlage)
Er macht mir SAP auf ohne neu das Logon zu öffnen, wenn SAP noch nicht geöffnet war macht er mir das Logon auf. Soweit Top
Allerdings habe ich jetzt folgendes Problem. Ich wollte vom VBA gleich die Zelle in Excel ausgelesen haben und diesen Inhalt gleich in das richtige Feld in SAP haben, funktionierte auch soweit. Wenn ich jetzt allerdings den Wert in der Zelle in Excel ändere sollte dieser nach einem erneuten Ausführen und öffnen eines SAP-Fensters in das Feld eingetragen werden. Hier zeigt er mir allerdings nur den vorherigen Wert an, wo liegt mein Fehler?
Gruß Ronny
Userbild
Anzeige
;
Anzeige

Infobox / Tutorial

SAP Logon über VBA automatisieren


Schritt-für-Schritt-Anleitung

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor in Excel zu öffnen.

  2. Modul hinzufügen: Klicke mit der rechten Maustaste auf das Projekt, wähle Einfügen und dann Modul.

  3. Code einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Private Sub Call_SAP()
       Dim command As String
       Dim SAP_Dir As String
       Dim SapSys As String 'SAP-System Name
       SapSys = "PF1" 'hier Systemnamen eintragen oder aus einer Zelle auslesen
    
       '64bit check
       If Dir("C:\Program Files (x86)\sap\frontEnd\SAPgui", vbDirectory) <> vbNullString Then
           SAP_Dir = "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\"
       Else
           SAP_Dir = "C:\Program Files\SAP\FrontEnd\SAPgui\"
       End If
    
       command = """" & SAP_Dir & "sapshcut.exe"" -system=" & SapSys & " -client=001 -user=" & _
       Environ$("Username") & " -language=DE -Command=""*LT03"""
       Shell command
    End Sub
  4. Schaltfläche erstellen: Gehe zurück zu deinem Excel-Sheet, wähle Entwicklertools > Einfügen und füge eine Schaltfläche hinzu. Weise der Schaltfläche das Makro Call_SAP zu.

  5. Testen: Klicke auf die Schaltfläche, um den SAP Logon und die LT03-Transaktion zu starten.


Häufige Fehler und Lösungen

  • Fehler: SAP öffnet nicht
    Lösung: Stelle sicher, dass der Pfad zu sapshcut.exe korrekt ist. Überprüfe die Installation von SAP GUI.

  • Fehler: Transaktion öffnet sich nicht
    Lösung: Überprüfe, ob die Transaktion LT03 für deinen Benutzer freigegeben ist.

  • Fehler: Werte werden nicht aktualisiert
    Lösung: Stelle sicher, dass du den aktuellen Zellwert aus Excel abfragst. Verwende ActiveCell.Value im Code, um den aktuellen Wert zu erfassen.


Alternative Methoden

  1. SAP GUI Scripting: Verwende SAP GUI Scripting, um komplexere Automatisierungen zu erstellen. Dies ist besonders nützlich, wenn Du mehrere Schritte automatisieren möchtest.
  2. Hyperlinks in Excel: Erstelle Hyperlinks zu SAP-Transaktionen, die beim Klicken die Anwendung öffnen. Dies kann jedoch weniger flexibel sein als VBA.

Praktische Beispiele

  • Transaktion VA03 starten: Ändere den Code wie folgt, um die VA03-Transaktion zu öffnen:

    command = """" & SAP_Dir & "sapshcut.exe"" -system=" & SapSys & " -client=001 -user=" & _
    Environ$("Username") & " -language=DE -Command=""*VA03"""
  • Daten aus Excel an SAP übergeben: Modifiziere den Code, um Daten aus Excel zu lesen und in die entsprechenden SAP-Felder zu übertragen.


Tipps für Profis

  • SAP GUI Version herausfinden: Verwende SAPGuiAuto in deinem VBA-Code, um die installierte Version von SAP GUI zu prüfen.
  • VBA-SAP-Verbindung optimieren: Verwalte die SAP-Sitzungen effizient, um die Leistung zu steigern. Schließe nicht benötigte Sitzungen, um Ressourcen zu sparen.

FAQ: Häufige Fragen

1. Wie finde ich heraus, ob SAP GUI installiert ist?
Du kannst im Windows Explorer nach dem Installationsverzeichnis suchen oder im VBA-Code nach dem Verzeichnis prüfen.

2. Kann ich verschiedene SAP-Transaktionen über den gleichen Code starten?
Ja, passe einfach den Befehl im command-String an, um die gewünschte Transaktion zu starten.

3. Was ist der Unterschied zwischen SAP GUI und SAP Web GUI?
SAP GUI ist eine Desktop-Anwendung, während SAP Web GUI über einen Browser zugänglich ist. VBA kann nur mit der Desktop-Anwendung interagieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige