Hallo zusammen,
Mit folgendem Code öffne ich im SAP eine Transaktion.
Wurde dann die Transaktion wie gewünscht geöffnet, kann ich ganz normal im SAP weiter arbeiten.
Aufklappen meinen Projektbaumes geht dann z. B. mit STRG + F11
Und genau das würde ich noch gerne lösen:
1.) Aufrufen der Transaktion => funktioniert
2.) Aufklappen des Projektbaumes
Habe versucht das mit Timer zu machen, aber letztendlich gibt es Projekte die dauern länger zum öffnen wie andere.
Das wurde nichts.
Habt ihr eine Idee?!
Private Sub Button_SAP_Click(ByVal sender As System.Object, ByVal e As _
System.EventArgs) Handles Button_SAP.Click
Dim strSelectBox As String
strSelectBox = Me.LandTextBox.Text & "." & Me.ProjectTextBox.Text
'###########################################
'hier die Ausführung der Funktion
'der erste String ist die SAP-Transaktion
'derzweite String das SAP-Feld
'der Name des SAP Felds kann wie folgt ermittelt werden
'Transaktion öffnen, in das entsprechende Feld klicken, "F1" drücken,
' dort den Button "technische Informationen" anklicken, der Feldname
' steht dann unter "Dynproeld"
'##############################################
fnStarteSAPTransaktion("Y02CPS_CP", "P_PSPID", strSelectBox)
End Sub Public Function fnStarteSAPTransaktion(ByVal sSAPTransaktion As String, _
ByVal sSAPDynprofeld As String, ByVal strSelectBox As String)
' SAP öffnen''''''''''''''''''''''''''
'######################################################################
' ####
On Error Resume Next
'Windows-Username ermitteln
Dim sUser As String
sUser = Environ("UserName")
Dim strSAP, strSAP64BIT, strSAP32BIT As String
'prüfen ob 64 oder 32 Bit Rechner
strSAP64BIT = "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe" & _
"/INI_FILE=\\festo.net\dfs06\int\Application\SAP\de_SAP_PROD_SNC.INI"
strSAP32BIT = "C:\Program Files\SAP\FrontEnd\SAPgui\sapshcut.exe" & _
"/INI_FILE=\\festo.net\dfs06\int\Application\SAP\de_SAP_PROD_SNC.INI"
If Dir("C:\Program Files (x86)\SAP\FrontEnd\SAPgui\sapshcut.exe") = "" _
Then
strSAP = strSAP32BIT
Else
strSAP = strSAP64BIT
End If
' ausführen
Shell(strSAP & " -system=P02 -language=DE -client=001 -user=" & sUser & _
" -command=*" & sSAPTransaktion & " " & sSAPDynprofeld & "=" & _
strSelectBox, vbMaximizedFocus)
'System.Threading.Thread.Sleep(3000)
'SendKeys.SendWait("^{F11}")
'If LCase(strSAP & " -system=P02 -language=DE -client=001 -user=" &
' sUser & " -command=*" & sSAPTransaktion) = True Then
'SendKeys.Send("^{F11}")
'End If
'SendKeys.SendWait(String:="%{F4}", Wait:=True)
End Function Grüße
Stefan |