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


Montag, 19. Oktober 2015

Analysis Office Springen ala BEx Query

Im BEx Analyzer konnte man aus einer Query/Arbeitsmappe in eine andere Query springen. Dies war sinnvoll, um eine Query für den Überblick zu haben und eine mit Detailinformationen.



Die Funktion gibt es auch in Analysis Office, dafür muss wie vorher in der Transaktion RSBBS alle nötigen Informationen gepflegt werden. Danach erscheint in der Analysis Arbeitsmappe folgender Eintrag.


Viel Spaß beim testen.


Donnerstag, 15. Oktober 2015

Analysis Addin stürzt ab

Wenn man mit Makros in der Analysis Office Arbeitsmappe arbeitet und die Kreuztabelle einer DataSource entfernt, kann es sein, dass das Analysis Office Addin komplett abstürzt.

Daher sollten nicht mehr benötigte DataSourcen komplett entfernt werden und nicht nur deren Kreuztabelle.




Dieser Blog ist nun unter www.reyemsaibot.com erreichbar.

Mittwoch, 7. Oktober 2015

Enable Analysis Office Addin

Before you can use Analysis Office with Visual Basic for Application, you have to load the Analysis Addin. The code for this is in Analysis Office 1.4:

Private Sub EnableAnalysisOffice()

Dim addin As COMAddIn
  For Each addin In Application.COMAddIns 
   If addin.progID= "SBOP.AdvancedAnalysis.Addin.1" Then 
    If addin.Connect= False Then addin.Connect= True
   End If
  Next 

End Sub

In Analysis Office 2.0, SAP has changed the name of the addin. The command is now:

Private Sub EnableAnalysisOffice()

Dim addin As COMAddIn
  For Each addin In Application.COMAddIns 
   If addin.progID= "SapExcelAddIn" Then 
    If addin.Connect= False Then addin.Connect= True
   End If
  Next 

End Sub

Now you can continue working with the SAP Analysis commands.


You can reach this blog under www.reyemsaibot.com

Samstag, 26. September 2015

SAP Analysis mehrere Elemente filtern

Es gibt entweder die Möglichkeit direkt beim Auffrischen einer Query in Analysis for Office (AO), nach mehreren Elementen zu filtern. Dafür klickt man auf den Pfeil des Plus-Symbols. Es öffnet sich ein Menü und dort wählt man den Eintrag Zeilen über die Elementfilter hinzufügen.



Es erscheint nun folgender Dialog



Dort kann man entweder alles per Hand auswählen oder man klickt auf den kleinen Button links. Dieser fügt aus der Zwischenablage die Einträge ein. Wenn man das ganze mit VBA realisieren möchte, muss man den Befehl =SAPSetVariable verwenden. Dort ist es auch möglich mehrere Werte auszuwählen. Dafür definiert man einen Bereich und setzt diesen ein. 


Dieser Blog ist nun unter www.reyemsaibot.com erreichbar

Dienstag, 22. September 2015

SAP Analysis Datenquellen-Informationen darstellen

Wie schon im BEx Analyzer gibt es wichtige Informationen, die man gerne in der Excel Arbeitsmappe darstellen möchte. Im BEx Analyzer sah es folgendermaßen aus:


Im Analysis für Office, kann man nun diese Informationen bequem über die Ribbon Oberfläche von Microsoft einfügen.

Wem diese Informationen wie Name der Datenquelle oder Letzte Aktualisierung nicht reicht, kann mithilfe der Formel =SAPGetInfoLabel weitere Felder sich individuell in seine Arbeitsmappe bauen. Interessant ist in diesem Zusammenhang auch die Aktualität der Daten bei Multiprovidern. Da hilft die Formel =SAPGetSourceInfo weiter.