Show TOC

Integration mit Visual Basic for ApplicationsLocate this document in the navigation structure

Verwendung

Sie können den BEx Analyzer auch mit VBA-Funktionen (Visual Basic for Applications) erweitern. Dabei steuern Sie aus VBA-Routinen Funktionen des BEx Analyzers an. Die von SAP ausgelieferten VBA-Funktionen finden Sie im Visual Basic-Editor im Modul xBEXapi.

Beachten Sie, dass nicht mehr alle VBA-Funktionen des BEX Analyzer 3.x zur Verfügung stehen. Die meisten dieser Funktionen wurden in den Designmodus und in den Formelmodus integriert. Sie sollten daher immer diese integrierten Funktionen nutzen, bevor Sie VBA-Funktionen verwenden.

Für die Migration bestehender Arbeitsmappen bedeutet das, dass nur VBA-Funktionen, die auch in SAP NetWeaver 7.0 zur Verfügung stehen, migriert werden können. Für die anderen Funktionen ist eine manuelle Anpassung notwendig.

Weitere Informationen:

Designmodus

Im Formelmodus arbeiten

Funktionsumfang

Im Visual Basic-Editor stehen Ihnen im Modul xBEXapi folgende VBA-Funktionen zur Verfügung:

  • Function SAPBEXgetWorkbookID(wbName As String) As String

    Bestimmen der ID, unter der eine Arbeitsmappe gespeichert ist.

    Die Arbeitsmappe muss in Excel geöffnet sein; ihr derzeitiger Name in der Collection Application.Workbooks muss im Parameter wbName eingegeben werden. Beachten Sie, dass der technische Name der Arbeitsmappe im Allgemeinen verschieden von dem im Fenster angegebenen Titel sein wird.

    Die Funktion liefert einen leeren String zurück, wenn die Arbeitsmappe nicht in der Collection Application.Workbooks gefunden wird, oder aber wenn festgestellt wird, dass sie noch nicht gespeichert wurde.

  • Function SAPBEXreadWorkbook(wbID As String) As String

    Lesen einer Arbeitsmappe aus Favoriten oder Rollen.

    Im Parameter wbID muss die ID eingegeben werden, die für die Arbeitsmappe in den Favoriten oder Rollen vergeben wurde.

    Zur Bestimmung der ID einer Arbeitsmappe kann die Funktion SAPBEXgetWorkbookID verwendet werden. Wenn das Lesen erfolgreich war, liefert die Funktion als Resultat den Excel-Namen der geöffneten Arbeitsmappe zurück; ansonsten den leeren String.

    Wenn noch keine Verbindung zu einem Server besteht, startet die Funktion einen Logon-Dialog.

  • Function SAPBEXsaveWorkbook(wbName As String) As Integer

    Sichern einer Arbeitsmappe in Favoriten oder Rollen.

    Im Parameter wbName muss der Excel-Name der zu speichernden Arbeitsmappe eingegeben werden. Beim Sichern erscheint der Sichern-Dialog, um einen Ordner in den Favoriten oder Rollen auszuwählen.

    Ein Sichern der Arbeitsmappe ohne Dialog ist nicht möglich. Dies ist insbesondere bei der Vorberechnung der Arbeitsmappe mithilfe des BEx Precalculation Server zu beachten.

    Wenn noch keine Verbindung zu einem Server besteht, startet die Funktion einen Logon-Dialog.

  • Function SAPBEXgetErrorText() As String

    Für alle API-Funktionen, die ein Resultat vom Typ Integer liefern, ist dieser Rückgabewert als Fehlercode zu interpretieren:

    • -1Kontextfehler, d.h. die Funktion ist auf der fraglichen Zelle nicht anwendbar
    • 0  Die Funktion wurde ohne Fehler ausgeführt
    • > 0     Die Funktion läuft auf einen Fehler

    Im letzteren Fall kann anschließend (bis zum nächsten Aufruf einer API-Funktion) der Text zum Fehler mit SAPBEXgetErrorText abgefragt werden.

  • Function SAPBEXsetFilterValue(intValue As String, Optional hierValue As String, Optional atCell As Range) As Integer

    Filtern bei Zelle atCell (fehlt dieser Parameter, so wird die aktive Zelle zugrunde gelegt)

    Im ParameterintValue muss der interne Filterwert eingegeben werden. Beachten Sie, dass dieser Wert unterschiedlich von dem in der Filterzelle angezeigten, externen Wert sein kann. Zur Bestimmung des internen Wertes zu einem bekannten externen Wert können Sie entweder SAPBEXgetFilterValue verwenden oder Sie führen den Filtervorgang einmal bei angeschalteter Logbuchfunktion manuell durch. Der interne Filterwert wird im Logbuch vermerkt.

    Der Parameter hierValue ist anzugeben, wenn es sich bei dem Filterwert um einen Knoten einer bestimmte Merkmalshierarchie handelt.

    "intValue = <blank>" bedeutet "nicht mehr filtern"

    Sofern noch keine Verbindung zu einem Server besteht, startet die Funktion einen Logon-Dialog.

    Die Funktion liefert einen Kontextfehler, falls atCell keine Filterzelle ist.

  • Function SAPBEXgetFilterValue(intValue As String, hierValue As String, Optional atCell As Range) As Integer

    Bestimmen des internen Filterwertes (und gegebenenfalls der verwendeten Merkmalshierarchie) bei Zelle atCell (fehlt dieser Parameter, so wird die aktive Zelle zugrunde gelegt).

    Das Ergebnis wird in den Parameter intValue und hierValue zurückgeliefert, die folglich "byRef" übergeben werden müssen. Da beim Aufruf dieser Funktion mit der Excel-Methode "Run" keine byRef-Parameterübergabe unterstützt wird, können die beiden Werte alternativ nach Aufruf von SAPBEXgetFilterValue mit den Hilfs-Funktionen SAPBEXgetFilterValue_intValue und SAPBEXgetFilterValue_hierValue abgefragt werden, z.B.:

if run("SAPBEX.XLA!SAPBEXgetFilterValue", myValue, myHier) = 0 then

myValue = run("SAPBEX.XLA!SAPBEXgetFilterValue_intValue")

endif

Die Funktion liefert einen Kontextfehler, falls atCell keine Filterzelle ist.

  • Function SAPBEXsetDrillState(newState As Integer, Optional atCell As Range) As Integer

    Aufrißstatus ändern bei Zelle atCell (fehlt dieser Parameter, so wird die aktive Zelle zugrunde gelegt).

    "newState = 0" bedeutet    "nicht mehr aufreißen"

    "newState = 1" bedeutet    "aufreißen senkrecht"

    "newState = 2" bedeutet    "aufreißen waagerecht"

    Sofern noch keine Verbindung zu einem Server besteht, startet die Funktion einen Logon-Dialog.

    Die Funktion liefert einen Kontextfehler, falls atCell keine Filterzelle ist.

  • Function SAPBEXgetDrillState(currentState As Integer, Optional atCell As Range) As Integer

    Bestimmen des Aufrißstatus bei Zelle atCell (fehlt dieser Parameter, so wird die aktive Zelle zugrunde gelegt).

    Das Ergebnis wird in dem Parameter currentState zurückgeliefert, der folglich "byRef" übergeben werden muss. Da bei Aufruf dieser Funktion mit der Excel-Methode "Run" keine byRef-Parameterübergabe unterstützt werden, kann der Wert alternativ nach Aufruf von SAPBEXgetDrillState mit der Hilfs-Funktion SAPBEXgetDrillState_currentState abgefragt werden (vgl. SAPBEXgetFilterValue).

    Die Funktion liefert einen Kontextfehler, falls atCell keine Filterzelle ist.