Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Excel Daten nach SAP senden SAP akt. Fenster

Excel Daten nach SAP senden SAP akt. Fenster
13.01.2009 10:45:14
Lutz
Hallo,
mit dem nachfolgendem Code soll von Excel aus eine Transaktion in SAP gestartet,
und mit einem Wert vorbelegt werden.
Das funktioniert auch.
Wie kann ich den Rechner jetzt so steuern, dass SAP als aktives Fenster angezeigt wird?
Danke für die Hilfe.
Lutz
'Technischen Platz in SAP-PM aufrufen

Private Sub CommandButton2_Click()
Dim thnr As String
Dim sh As Worksheet
Dim actzell As Range
Dim fehleranzeige
thnr = ActiveCell.Offset(0, 5)
Set sh = ActiveWorkbook.Sheets("Prüftabelle_TH")
Set actzell = ActiveCell
On Error GoTo fehler 'SAP-PM nicht aktiv
Dim SapGuiAuto, Application, connection, session, WScript
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]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nil02"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtIFLO-TPLNR").Text = thnr
session.findById("wnd[0]/usr/ctxtIFLO-TPLNR").caretPosition = 10
session.findById("wnd[0]").sendVKey 0
'Hier soll das SAP-Fenster aktiviert werden
Exit Sub
fehler:
Hide
actzell.Select
MsgBox "Bitte erst SAP-PM starten!    ", vbExclamation, "Fehler"
End Sub


Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Excel Daten nach SAP senden SAP akt. Fenster
13.01.2009 13:01:17
Tino
Hallo,
so kannst Du ein Windowsfenster aktivieren.
AppActivate "Fenstertitel von deinem SAP Fenster", True
Ist dieser Fenstertitel nicht vorhanden, kommt es zum Fehler!
Gruß Tino
AW: Excel Daten nach SAP senden SAP akt. Fenster
13.01.2009 15:14:00
Lutz
Hallo Tino,
danke erstmal für den Tip.
Ich habe aber immer noch ein kleines Problem damit.
Ich habe mal den kompletten Codeblock unten angehängt.
Funktionsweise:
Als Erstes starte ich eine Userform "fehleranzeige" von dieser aus wird über den CommandButton2,
das Makro gestartet.
Ich weis jetzt nur nicht, wie ich den Focus auf den CommandButten2 setze, wenn die Daten nach SAP übertragen wurden. Denn wenn ich den Button oder die Userform danach anklicke, dann wechselt das Fenster.
AppActivate "Techn.Platz ändern: Stammdaten", True (ohne True blinkt der Button SAP... am unteren Bildrand nur ein paar mal, und das Fenster wechselt überhaupt nicht)
Option Explicit
Dim fehleranzeige As UserForm
Dim merker1

Private Sub CommandButton1_Click()
Hide
End Sub


'vor Anzeige Attribute in Textfelder fehleranzeige einlesen.
Sub ReadAttributes()
Set merker1 = Application.ActiveWindow.ActiveCell.Offset(0, -1)
TextBox1.ControlSource = merker1.Address
Set merker1 = Application.ActiveWindow.ActiveCell.Offset(0, 5)
TextBox2.ControlSource = merker1.Address
Set merker1 = Application.ActiveWindow.ActiveCell.Offset(0, 6)
TextBox3.ControlSource = merker1.Address
Set merker1 = Application.ActiveWindow.ActiveCell.Offset(0, 4)
TextBox4.ControlSource = merker1.Address
End Sub


'TH-Nummer in Zwischenablage übernehmen
'Variante1


Private Sub TextBox2_Change()
Dim TB As New DataObject
Set TB = New DataObject
On Error Resume Next 'Fehlermeldung bei Datenlöschung unterdrücken
TB.SetText TextBox2.Text
TB.PutInClipboard
Set TB = Nothing
End Sub


'Technischen Platz in SAP-PM aufrufen


Private Sub CommandButton2_Click()
Dim thnr As String
Dim sh As Worksheet
Dim actzell As Range
thnr = ActiveCell.Offset(0, 5)
Set sh = ActiveWorkbook.Sheets("Prüftabelle_TH")
Set actzell = ActiveCell
actzell.Activate
On Error GoTo fehler1 'SAP-PM nicht aktiv
Dim SapGuiAuto, Application, connection, session, WScript
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]").maximize
On Error GoTo fehler2 'SAP-PM Abfrage derzeit aktiv
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nil02"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtIFLO-TPLNR").Text = thnr
session.findById("wnd[0]/usr/ctxtIFLO-TPLNR").caretPosition = 10
session.findById("wnd[0]").sendVKey 0
'Hier soll das SAP-Fenster aktiviert werden
On Error Resume Next
AppActivate "Techn.Platz ändern: Stammdaten", True
Exit Sub
fehler1:
Hide
actzell.Select
MsgBox "Bitte erst SAP-PM starten!    ", vbExclamation, "Fehler"
Exit Sub
fehler2:
Hide
actzell.Select
MsgBox "In SAP-PM läuft derzeit eine Abfrage," & Chr(13) & "bitte neuen Modus starten!    ",  _
vbExclamation, "Fehler"
End Sub


Anzeige
AW: Excel Daten nach SAP senden SAP akt. Fenster
13.01.2009 15:18:46
Lutz
eine Anmerkung noch, beim Übertragen der Daten nach SAP bringt SAP eine MSGBox dass externes Programm darauf zugreift, dies kann aber mit OK bestätigt werden
AW: AppActivate... nicht möglich
14.01.2009 15:05:10
Lutz
Hallo,
ich habe mal den Code auf das wichtigste beschränkt.
Mir ist nicht klar warum der code nicht ausgeführt werden kann.
wkb = ActiveWorkbook.Name 'wird benötigt, wenn sich Name der Tabelle ändert
AppActivate "Microsoft Excel - " & wkb, True
"Irgend was hält in dem fehlerverursachendem Bereich fest und lässt nicht los"
Im Anhang ist die Arbeitsmappe mit dem Problem zu finden.
https://www.herber.de/bbs/user/58384.xls
Danke für die Unterstützung.
Lutz
Anzeige
AW: Excel Daten nach SAP senden SAP akt. Fenster
13.01.2009 15:28:08
Tino
Hallo,
kann jetzt nicht folgen, kann deinen Code jetzt auch nicht nachbauen und testet, habe kein SAP.
Du willst die Daten nach SAP übertragen und dies erfolgt doch durch drücken
auf den CommandButton2.
Warum musst Du jetzt wieder den Focus auf den Button2 setzen?
Kannst Du nicht die Excel- Datei einfach wieder aktivieren?
Gruß Tino
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Excel Daten nach SAP senden und das Fenster aktivieren


Schritt-für-Schritt-Anleitung

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

  2. Modul erstellen: Klicke auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.

  3. Code eingeben: Kopiere den folgenden VBA-Code in das Modul:

    Private Sub CommandButton2_Click()
       Dim thnr As String
       Dim sh As Worksheet
       Dim actzell As Range
       thnr = ActiveCell.Offset(0, 5)
       Set sh = ActiveWorkbook.Sheets("Prüftabelle_TH")
       Set actzell = ActiveCell
       On Error GoTo fehler 'SAP-PM nicht aktiv
       Dim SapGuiAuto, Application, connection, session, WScript
       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]").maximize
       session.findById("wnd[0]/tbar[0]/okcd").Text = "/nil02"
       session.findById("wnd[0]").sendVKey 0
       session.findById("wnd[0]/usr/ctxtIFLO-TPLNR").Text = thnr
       session.findById("wnd[0]/usr/ctxtIFLO-TPLNR").caretPosition = 10
       session.findById("wnd[0]").sendVKey 0
       'Aktiviere das SAP-Fenster
       AppActivate "Techn.Platz ändern: Stammdaten", True
       Exit Sub
    fehler:
       Hide
       actzell.Select
       MsgBox "Bitte erst SAP-PM starten!    ", vbExclamation, "Fehler"
    End Sub
  4. Button in Excel hinzufügen: Füge einen CommandButton in deine Excel-Arbeitsmappe ein und verlinke ihn mit der oben erstellten Subroutine.

  5. Testen: Stelle sicher, dass SAP geöffnet ist, und klicke auf den Button, um die Daten zu übertragen und das SAP-Fenster zu aktivieren.


Häufige Fehler und Lösungen

  • Fehler: "Bitte erst SAP-PM starten!": Dieser Fehler tritt auf, wenn SAP nicht geöffnet ist. Stelle sicher, dass SAP vor dem Ausführen des Codes geöffnet ist.

  • Fehler beim Aktivieren des Fensters: Wenn der Fenstertitel nicht korrekt ist, wird der AppActivate Befehl nicht funktionieren. Überprüfe den Fenstertitel in der Titelleiste von SAP.

  • SAP gibt eine Warnmeldung aus: Wenn SAP eine Meldung anzeigt, dass ein externes Programm zugreift, musst du diese manuell bestätigen, um fortzufahren.


Alternative Methoden

  • SAP GUI Scripting: Nutze die SAP GUI Scripting API, um direkt mit SAP aus Excel zu interagieren. Dies erfordert jedoch einige zusätzliche Einstellungen in den SAP-Optionen.

  • Excel Daten aus SAP abrufen: Anstelle von Excel nach SAP zu senden, kannst du auch Daten direkt aus SAP in Excel abrufen, indem du die SAP Excel-Integration nutzt.


Praktische Beispiele

  • Datenübertragung: Verwende den oben angegebenen Code, um die TH-Nummer aus Excel an SAP zu übertragen. Ändere den Fenstertitel in AppActivate, um sicherzustellen, dass das richtige SAP-Fenster aktiviert wird.

  • E-Mail senden aus SAP: Wenn du SAP-Daten per E-Mail versenden möchtest, kannst du den sap email versenden Befehl in dein Makro integrieren.


Tipps für Profis

  • Farbe ändern in SAP: Um die Farbe von Zellen in SAP zu ändern, kannst du VBA verwenden, um spezifische Befehle zu senden, die die Darstellung in SAP beeinflussen.

  • SAP Script aus Excel starten: Wenn du häufig bestimmte SAP-Skripte benötigst, kannst du diese direkt aus Excel heraus starten, indem du die entsprechenden Befehle im VBA-Code implementierst.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass SAP aktiv ist, bevor ich den Code ausführe?
Du kannst eine Überprüfung in deinen Code einfügen, um festzustellen, ob SAP geöffnet ist, bevor du versuchst, das Fenster zu aktivieren.

2. Was tun, wenn der Fenstertitel nicht erkannt wird?
Überprüfe den genauen Text des Fenstertitels und stelle sicher, dass er korrekt im AppActivate Befehl eingegeben wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige