Lench написал:
BORLAND написал:
BEx Analyzer: Connection to the BW Server in a VBA macro
SAP Note Number: 492561
Эта инфа устарела, так как раз и не работает (если заменить Run("SAPBEX.XLA!SAPBEXgetConnection") на Run("BEXAnalyzer.XLA!sapBEXgetConnection") )
Спасибо! Открыв SAPBEx.xla я увидел, что там производится при проверке соединения, например, если addin уже загружен, то сессия соединения анализирует зависимость от имени AddInn =
Code:
Call isAddinLoaded(loadIfNotLoaded:=True)
'Get AddinName
Dim lAddinName As String
lAddinName = addinName(pSession)
'Set server object
trace False, "Set server object"
With pServerObj
With .configuration
Set .ParentApplication = Application
.Caller = "RUN"
.eventconnected = ThisWorkbook.Name & "!SAPBEX0serverEvent"
End With
.ProgId = sessionID
trace False, "pServerObj.ProgId: " & .ProgId
.gwService = gwService
trace False, "pServerObj.gwService: " & .gwService
.gwHost = gwHost
trace False, "pServerObj.gwHost: " & .gwHost
'Get SessionID dependant on AddinName
If (lAddinName = "BExAnalyzer.xla") Then
sessionID = "_" & sessionID
End If
pSession = sessionID
trace False, "Session: " & pSession
'run sapBEXgetConnection makro of addin and retrieve connection
trace False, "Run(" & lAddinName & "!sapBEXgetConnection)"
Set pConnObj = Run(lAddinName & "!sapBEXgetConnection")
If pConnObj Is Nothing Then
trace False, "Connection Object is nothing"
GoTo unexpectedError
End If
Set .connection = pConnObj
Dim lRegResult As Boolean
lRegResult = .register
If lRegResult Then
trace False, "registered"
Else
trace False, "Error in server registration: " & Err.Description
GoTo unexpectedError
End If
End With
pWorkbookID = workbookID
pQueryID = queryID
pJumpType = jumpType
pJumpTarget = jumpTarget
'the return value should be cReturnOK, however backend does not respond to such an answer
SAPBEX0serverLaunch = cReturnNoConn
GoTo functionEnd
unexpectedError:
GoTo functionEnd
functionEnd:
Select Case SAPBEX0serverLaunch
Case cReturnOK
trace False, "SAPBEX0serverLaunch: connected, Returncode:" & SAPBEX0serverLaunch
Case cReturnNoConn
trace False, "SAPBEX0serverLaunch: connected, Returncode:" & SAPBEX0serverLaunch
Case cReturnWrongConn
trace False, "SAPBEX0serverLaunch: wrong connection, Returncode:" & SAPBEX0serverLaunch
Case cReturnError
trace False, "SAPBEX0serverLaunch: error, Returncode:" & SAPBEX0serverLaunch
Case Else
SAPBEX0serverLaunch = cReturnError
trace False, "SAPBEX0serverLaunch: unexpected error, Returncode:" & SAPBEX0serverLaunch
End Select
trace False, "<<< SAPBEX0serverLaunch():" & SAPBEX0serverLaunch
Exit Function
End Function
'Get SessionID dependant on AddinName
If (lAddinName = "BExAnalyzer.xla") Then
sessionID = "_" & sessionID
End If
pSession = sessionID Private Function addinName(iSession As String) As String
trace False, ">>> addinName(iSession=" & iSession & ")"
If InStr(iSession, "_") = 0 Then
addinName = "SAPBEX.xla"
ElseIf isLegacyOpen() Then
addinName = "SAPBEX.xla"
Else
addinName = "BExAnalyzer.xla"
End If
trace False, "<<< addinName():" & addinName
End Function