Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1036to1040
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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


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

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige