Willkommen Gast! Um alle Funktionen zu aktivieren müssen Sie sich Anmelden oder Registrieren.

Mitteilung

Icon
Error

Optionen
Gehe zum aktuellsten Beitrag Gehe zum letzten Ungelesenen
Offline SAP-Claudi  
#1 Geschrieben : Donnerstag, 13. Dezember 2018 13:38:51(UTC)
SAP-Claudi

Beiträge: 9
Hallo lieber Scriptman !

In "meinem" Access-Tool bin ich dabei ein "Batchreporting" zu realisieren bei dem hintereinander mehrere Transaktionen mit benutzereingenen Vorgaben in SAP mittels SAP-Scripting abgerufen werden.

Nun eine Frage zur VBA-Technik: Mein Gedanke war, innerhalb des "Grundgerüstes", d.h. Öffnen der SAP-Session, pro Transaktion ein Sub oder Function aufzurufen mit den Variablen Transaktion, Variante etc.

Wie muß ich dann die Objecte deklarieren, damit ich sie auch in der Function verwenden kann ?

Wahrscheinlich hab ich mich nicht ganz verständlich ausgedrückt daher hier ein Auszug aus dem Code:

'************
Public Function SAPGUI......

'**************************************************************************
' Voraussetzung soll momentan sein, dass der User im SAP angemeldet ist ***
'**************************************************************************

Dim oSapGui As Object
Dim oApp As SAPFEWSELib.GuiApplication
Dim oConn As SAPFEWSELib.GuiConnection
Dim oSession As SAPFEWSELib.GuiSession
Dim wshell As Object
Dim myError As String

Set wshell = CreateObject("Wscript.Shell")

On Error Resume Next

' Ref auf SAPGUI
Set oSapGui = GetObject("SAPGUI")
Set oApp = oSapGui.GetScriptingEngine '

myError = Err.Number
If myError <> 0 Then
MsgBox "Bitte erst SAPLogon öffnen !", , "Information"
GoTo ExitFunction
End If

Set oConn = oApp.Children(0)
myError = Err.Number
If myError <> 0 Then
MsgBox "Bitte erst in SAP anmelden !", , "Information"
GoTo ExitFunction
End If

' 1. Session der Connection
Set oSession = oConn.Children(0)
myError = Err.Number
If myError <> 0 Then
MsgBox "Bitte erst in SAP anmelden !", , "Information"
GoTo ExitFunction
End If


'Aufruf Skript
Select Case sTcode
Case Is = "FBL1N"
Call Script_FBL1N(sTcode, sBeschreibung, sVar, sLayout, sStidat)
Case Is = "XYZ"
'Call Script_XYZ
Case Else
End Select
....

Im Call Script_FBL1N soll dann das eigentliche Script stehen, das aber so im Moment nicht funktioniert:

oSession.FindById("wnd[0]").Iconify
oSession.FindById("wnd[0]/tbar[0]/okcd").Text = "/n" & sTcode
oSession.FindById("wnd[0]").SendVKey 0
oSession.FindById("wnd[0]/tbar[1]/btn[17]").Press
oSession.FindById("wnd[1]/usr/txtV-LOW").Text = sVar
oSession.FindById("wnd[1]/usr/txtENAME-LOW").Text = ""
oSession.FindById("wnd[1]/usr/txtENAME-LOW").SetFocus
oSession.FindById("wnd[1]/usr/txtENAME-LOW").CaretPosition = 0
oSession.FindById("wnd[1]/tbar[0]/btn[8]").Press
oSession.FindById("wnd[0]/tbar[1]/btn[16]").Press
oSession.FindById("wnd[0]/usr/ssub%_SUBSCREEN_%_SUB%_CONTAINER:SAPLSSEL:2001/ssubSUBSCREEN_CONTAINER2:SAPLSSEL:2000/ssubSUBSCREEN_CONTAINER:SAPLSSEL:1106/btn%_%%DYN006_%_APP_%-VALU_PUSH").Press
oSession.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpINTL").Select
oSession.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpINTL/ssubSCREEN_HEADER:SAPLALDB:3020/tblSAPLALDBINTERVAL/ctxtRSCSEL_255-IHIGH_I[2,0]").Text = sStidat
oSession.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpINTL/ssubSCREEN_HEADER:SAPLALDB:3020/tblSAPLALDBINTERVAL/ctxtRSCSEL_255-IHIGH_I[2,0]").SetFocus
oSession.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpINTL/ssubSCREEN_HEADER:SAPLALDB:3020/tblSAPLALDBINTERVAL/ctxtRSCSEL_255-IHIGH_I[2,0]").CaretPosition = 10
oSession.FindById("wnd[1]/tbar[0]/btn[8]").Press
oSession.FindById("wnd[0]/usr/ssub%_SUBSCREEN_%_SUB%_CONTAINER:SAPLSSEL:2001/ssubSUBSCREEN_CONTAINER2:SAPLSSEL:2000/ssubSUBSCREEN_CONTAINER:SAPLSSEL:1106/btn%_%%DYN007_%_APP_%-VALU_PUSH").Press
oSession.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpINTL").Select
oSession.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpINTL/ssubSCREEN_HEADER:SAPLALDB:3020/tblSAPLALDBINTERVAL/ctxtRSCSEL_255-IHIGH_I[2,0]").Text = sStidat
oSession.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpINTL/ssubSCREEN_HEADER:SAPLALDB:3020/tblSAPLALDBINTERVAL/ctxtRSCSEL_255-IHIGH_I[2,0]").SetFocus
oSession.FindById("wnd[1]/usr/tabsTAB_STRIP/tabpINTL/ssubSCREEN_HEADER:SAPLALDB:3020/tblSAPLALDBINTERVAL/ctxtRSCSEL_255-IHIGH_I[2,0]").CaretPosition = 6
oSession.FindById("wnd[1]/tbar[0]/btn[8]").Press
oSession.FindById("wnd[0]/usr/ctxtPA_VARI").Text = sLayout
oSession.FindById("wnd[0]/usr/ctxtPA_VARI").SetFocus
oSession.FindById("wnd[0]/usr/ctxtPA_VARI").CaretPosition = 12
'oSession.FindById("wnd[0]/tbar[1]/btn[8]").Press
'oSession.FindById("wnd[0]/mbar/menu[0]/menu[3]/menu[1]").Select
'im Hintergrund ausführen
oSession.FindById("wnd[0]/mbar/menu[0]/menu[2]").Select
oSession.FindById("wnd[1]/usr/subSUBSCREEN:SAPLSPRI:0600/cmbPRIPAR_DYN-PRIMM2").SetFocus
oSession.FindById("wnd[1]/usr/subSUBSCREEN:SAPLSPRI:0600/cmbPRIPAR_DYN-PRIMM2").Key = ""
oSession.FindById("wnd[1]/usr/subSUBSCREEN:SAPLSPRI:0600/txtPRI_PARAMS-PRTXT").Text = sBeschreibung
oSession.FindById("wnd[1]/usr/subSUBSCREEN:SAPLSPRI:0600/txtPRI_PARAMS-PRTXT").SetFocus
oSession.FindById("wnd[1]/usr/subSUBSCREEN:SAPLSPRI:0600/txtPRI_PARAMS-PRTXT").CaretPosition = 13
oSession.FindById("wnd[1]/tbar[0]/btn[13]").Press
oSession.FindById("wnd[1]/usr/btnSOFORT_PUSH").Press
oSession.FindById("wnd[1]/tbar[0]/btn[11]").Press


Ich danke Dir schonmal !!!

Liebe Grüße,
sap_claudi

Nehmen Sie an dieser Diskussion teil! SAP FORUM - SAP Community LoginHier registrieren.

Offline SAP-Claudi  
#2 Geschrieben : Donnerstag, 13. Dezember 2018 14:03:28(UTC)
SAP-Claudi

Beiträge: 9
Hat sich erledigt !!!!
Ich muß das gesamte Object oSession by val übergeben - es funktioniert !!
Offline ScriptMan  
#3 Geschrieben : Donnerstag, 13. Dezember 2018 15:02:53(UTC)
ScriptMan

Beiträge: 252
Hallo SAP-Claudi,

wie man sieht, du konntest dir selbst helfen. In "meinem" VBA-Projekt im Excel habe eine ähnliche Konstellation mit

Public oSession as Object

gelöst.

Grüße,
ScriptMan
Benutzer, die gerade dieses Thema lesen
Das Forum wechseln  
Du kannst keine neue Themen in diesem Forum eröffnen.
Du kannst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge nicht löschen.
Du darfst deine Beiträge nicht editieren.
Du kannst keine Umfragen in diesem Forum erstellen.
Du kannst nicht an Umfragen teilnehmen.

- Impressum / Datenschutz -