AW: SAP - EXCEL VBA
27.05.2014 11:47:21
Mike
Eine Beispiel...
Public Function fnSAP_Connection_CallService(lAnzahl&, iAnzahl%, sMeldung$, sWinText$, sAuArt$, _
sSysStat$) As Boolean
'*** Voraussetzungen:
'*** - SAP: verbunden
'*** - Transaktion: IW32
'*** - Auftragsarten: ZCS1;ZSM2
'*** - Auftragsstatus: nicht TABG;ABGS
'*** - Fenstertext: '*Auftrag*ändern: Kopf zentral'
'*** - Anzahl TA:IW32: 1
Dim iCon, iSes, GRID As Object
Dim lRow As Long
Dim bAuftragOK As Boolean
Dim sessionTemp As Object
On Error GoTo fnSAP_Connection_CallService_Error
Set SAPGUIAUTO = GetObject("SAPGUI")
Set SAP = SAPGUIAUTO.GetScriptingEngine
fnSAP_Connection_CallService = False
bAuftragOK = False
' Alle Verbindungen durchlaufen
For iCon = 0 To SAP.Children.Count - 1
Set CONNECTION = SAP.Children(Int(iCon))
' Alle Sessions durchlaufen
For iSes = 0 To CONNECTION.Children.Count - 1
Set sessionTemp = CONNECTION.Children(Int(iSes)) 'Session.info.systemname = P02
'Debug.Print Session.info.Systemname & " - " & Session.info.transaction & " - " & _
Session.findById("wnd[0]").Text
' Nach finden der Transaktion...
If sessionTemp.info.transaction = "IW32" Then
' Anzahl der Transaktionen ermitteln
iAnzahl = iAnzahl + 1
' Rückmeldetext zusammensetzen
sMeldung = sMeldung & iAnzahl & ") " & sessionTemp.findById("wnd[0]").Text & Chr(13) _
' Variablen initialisieren (Fenstertext, Auftragsart, Systemstatus)
sWinText = sessionTemp.findById("wnd[0]").Text
sAuArt = sessionTemp.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL: _
SAPLCOIH:1100/subSUB_KOPF:SAPLCOIH:1102/ctxtCAUFVD-AUART").Text
sSysStat = sessionTemp.findById("wnd[0]/usr/subSUB_ALL:SAPLCOIH:3001/ssubSUB_LEVEL: _
SAPLCOIH:1100/subSUB_KOPF:SAPLCOIH:1102/txtCAUFVD-STTXT").Text
' Fenstertext prüfen
If sWinText Like "*Auftrag*ändern:*Kopf zentral*" And _
"ZCS1|ZSM2" Like "*" & sAuArt & "*" And _
(sSysStat Like "*ABGS*" Or sSysStat Like "*TABG*") = False Then
' gefundene Session verwenden
If bAuftragOK = False Then
bAuftragOK = True
fnSAP_Connection_CallService = True
Set SESSION = sessionTemp
'sSAP_Fenster = Replace(sWinText, "Kopf zentral", "Komponentenübersicht")
sSAP_Fenster = Left(sWinText, InStr(1, sWinText, "änd") + 2)
End If
End If
Else
lAnzahl = lAnzahl + 1
End If
If bAuftragOK = False Then Set sessionTemp = Nothing
Next
If bAuftragOK = False Then Set CONNECTION = Nothing
Next
fnSAP_Connection_CallService_Exit:
If bAuftragOK = False Then Set SAP = Nothing
If bAuftragOK = False Then Set SAPGUIAUTO = Nothing
On Error GoTo 0
Exit Function
fnSAP_Connection_CallService_Error:
Select Case Err.Number
Case -2147221020
Debug.Print "Error " & Err.Number & " (" & Err.Description & ") in procedure _
fnSAP_Connection_CallService of Modul mdlSAP"
Case 619
Resume Next
Case Else
Debug.Print "Error " & Err.Number & " (" & Err.Description & ") in procedure _
fnSAP_Connection_CallService of Modul mdlSAP"
End Select
Resume fnSAP_Connection_CallService_Exit
End Function