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:
Im Visual Basic-Editor stehen Ihnen im Modul xBEXapi folgende VBA-Funktionen zur Verfügung:
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.
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.
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.
Für alle API-Funktionen, die ein Resultat vom Typ Integer liefern, ist dieser Rückgabewert als Fehlercode zu interpretieren:
Im letzteren Fall kann anschließend (bis zum nächsten Aufruf einer API-Funktion) der Text zum Fehler mit SAPBEXgetErrorText abgefragt werden.
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.
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.
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.
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.