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