Donnerstag, 19. November 2015

Analysis Office: Best Practice Verbindung

Nachdem der Artikel "Fehler beim Herstellen einer Verbindung in Analysis for Office per VBA" sehr oft gelesen wird, möchte ich hier nach und nach ein paar Tipps & Tricks zu dem Arbeiten mit Analysis Office veröffentlichen.

Das wichtigste, wenn man mit VBA in Analysis Office arbeitet, ist das aktualisieren der DataSource. Sonst funktioniert nichts. Sobald eine Verbindung zum Business Warehouse besteht, muss jede DataSource einmal aktualisiert werden.

Wenn man nur eine DataSource hat, geht das mit dem Befehl:

Call Application.Run("SAPExecuteCommand", "Refresh", "DS_1")

Wenn man mehr als eine DataSource hat, gibt es den Befehl:

Call Application.Run("SAPExecuteCommand", "Refresh")

Damit man aber anschließend weiß, ob die Aktualisierung erfolgreich war, sollte man den Befehl folgendermaßen nutzen:

Dim lResult As Long
lResult= Application.Run("SAPExecuteCommand", "Refresh")

bzw.

Dim lResult As Long
lResult= Application.Run("SAPExecuteCommand", "Refresh", "DS_1")

Somit kann man lResult auf 1 bzw. 0 prüfen und weitere Aktionen erledigen.

Wenn man jedes Mal die DataSource(s) aktualisiert, wird sehr viel Zeit verschwendet. Um diesem entgegenzuwirken gibt es den Befehl:

Call Application.Run("SAPGetProperty", "IsDataSourceActive", "DS_1")

Mit diesem Befehl wird überprüft, ob die DataSource schon aktiv ist. Anschließend noch einmal ein Beispiel Coding

Sub AnalysisOfficeStart()

Dim lResult As Long

'Besteht eine Verbindung zum Business Warehouse
If Application.Run("SAPGetProperty", "IsConnected", "DS_1") Then

    'Ist die DataSource aktiv?
    If Not Application.Run("SAPGetProperty", "IsDataSourceActive", "DS_1") Then
    
        'Aktualisieren der DataSource
        lResult = Application.Run("SAPExecuteCommand", "Refresh", "DS_1")
    
    Else
    
        'Zeige Variablenmaske
        lResult = Application.Run("SAPExecuteCommand", "ShowPrompts", "DS_1")
        
    End If
    
Else

    lResult = Application.Run("SAPLogon", "DS_1", "Mandant", "Benutzer", "Passwort")
    lResult = Application.Run("SAPExecuteCommand", "Refresh", "DS_1")

End If

End Sub

Anschließend kann das nächste Coding ausgeführt werden.

Donnerstag, 12. November 2015

Analysis Office 2.1 Logoff via VBA

Seit Version 2.1 stellt Analysis Office nun endlich einen VBA Befehl für das Ausloggen aus dem jetzigen System zur Verfügung.

Bisher steht davon noch nichts in der Hilfe, aber es wird im SCN Forum unter "Whats new in Analysis Office 2.1" genannt.

Der Befehl lautet:

Public Sub Logoff()
Call Application.Run("SAPLogoff",Parameter)
End Sub

Parameter:
  • True: Mit diesem Wert wird die Verbindung zum System neugestartet
  • False: Mit diesem Wert wird die Verbindung zum System nicht neugestartet
Ergebnis:
  • 0: Ausführung fehlerhaft
  • 1: Ausführung erfolgreich

Logoff mit Parameter False



Logoff mit Parameter True