How To SAP BI – Prompt für Variablen der Planungsfunktion aufrufen
Im Planungsumfeld besteht oft die Anforderung, Variablen erst bei der Ausführung einer bestimmten Planungsfunktion abzufragen. Leider kommt die Eingabeaufforderung bei Analysis for Office (AO), im Gegensatz zum Web Application Designer (WAD), nicht automatisch bei der Ausführung. Die Elementauswahl muss explizit über das (etwas versteckte) API SAPCallMemberSelector
aufgerufen werden.
Leider steht dabei nicht der gesamte Umfang der Elementenauswahl zur Verfügung. So können Sie nicht ändern wie Elemente in der Auswahl angezeigt werden, zum Beispiel Anzeige von Schlüssel auf Text ändern. Außerdem muss das InfoObject im Aufriss oder als ein freies Merkmal verfügbar sein.
Die Funktionsweise diesen APIs möchte ich anhand eines Beispiels erläutern. Betrachten wir die folgende Planungsfunktion.
Wir wollen einen Betrag von Buchungskreis 1000 nach Buchungskreis 2000 kopieren. Zielmonat ist immer Dezember. Quellmonat wird von dem Benutzer bei der Ausführung der Planungsfunktion festgelegt. Es können mehrere Quellmonate ausgewählt werden.
Diese Planungsfunktion ist in einem Workbook gekapselt. Die Variable wird in diesem Beispiel aus einer Zelle gefüllt.
Bei der Ausführung der Planungsfunktion soll nun eine Variablenabfrage auftauchen. Dazu rufen wir über ein VBA Makro das SAPCallMemberSelector
Interface auf. Die Syntax sieht wie folgt aus:
Dim lResult As Variant
lResult= Application.Run(„SAPCallMemberSelector“, „Alias„, „Auswahltyp„, „Name der Variable oder Dimension„, „Referenzzelle„, „Anzahl Werte„)
Planung und Reporting mit SAP Analysis leicht gemacht!
Lernen Sie, wie Sie mit SAP Analysis for Microsoft Office professionelle Berichte erstellen. Dieses Praxishandbuch erklärt Ihnen, wie Sie Ihre Daten auf vielfältige Weise auswerten und darstellen. Schritt-für-Schritt-Anleitungen mit zahlreichen Screenshots unterstützen Sie – von der Implementierung bis zur Anwendung.
Alias
Geben Sie den Alias der Formel der Datenquelle oder des Planungsobjekts an. Sie können den Alias beim Konfigurieren der Datenquelle in der Registerkarte Komponenten im Designbereich festlegen.
Sie müssen diesen Parameter definieren, wenn die Variablen in der Arbeitsmappe nicht zusammengefasst sind. Wenn die Variablen in der Arbeitsmappe zusammengefasst sind, können Sie diesen Parameter definieren, müssen es aber nicht.
Auswahltyp
- PROMPT – Auswahl der Eingabeaufforderung
- FILTER – Auswahl der Dimensionselemente aus dem Filter
- FILTER_MASTERDATA – Auswahl aller Elemente der Stammdaten einer ausgewählten Dimension
- PLAN_PARAMETER – Auswahl der Variablen eines Planungsobjekts.
Name
Geben Sie den Namen der Variablen oder der Dimension ein.
Referenzzelle
Mit dem Parameter Referenzzelle können Sie die Zelle festlegen in der die Auswahl angezeigt wird. Mit ActiveCell
(ohne Anführungszeichen) wird die Auswahl in der gerade aktiven, also ausgewählten, Zelle angezeigt.
Anzahl Werte
- SINGLE – nur ein Element kann zum Filtern ausgewählt werden
- MULTIPLE – mehrere Elemente können zum Filtern ausgewählt werden.
Dieser Parameter ist optional.
Betrachten wir folgende Beispiele:
Auswahltyp PROMPT
Bei diesem Typ können Sie die Werte aus der Eingabeaufforderung übernehmen. Das Makro kann wie folgt aussehen:
Sub StartPF()
Dim vResult As Variant
Dim lResult As Long
vResult = Application.Run("SAPCallMemberSelector", "DS_1", "PROMPT", "0FISCPER3_CMMYA_001")
'schreibe Auswahl in die Zelle D2
Tabelle2.Range("D2").Value = vResult
'starte Planungsfunktion
lResult = Application.Run("SAPExecutePlanningFunction", "PF_1")
End Sub
Beim Aufrufen der Arbeitsmappe schränkt der Benutzer die gewünschten Monate ein. Diese Variable ist im Filter der Query definiert.
Über unser Makro greifen wir bei der Ausführung der Planunungsfunktion diese Auswahl auf. Die beim Aufrufen selektieren Monate sind schon ausgewählt. Der Benutzer kann die Auswahl jedoch anpassen und erweitern (kann bei Planungssequenzen Anwendung finden).
Anschließend werden die ausgewählten Werte in die definierte Zelle geschrieben und die Planungsfunktion ausgeführt.
Die selektierten Monate werden kopiert.
Anstatt die Auswahl über eine Zelle an die Planungsfunktion zu übergeben, könnten Sie auch das SAPSetPlanParameter
API nutzen.
Sub StartPF()
Dim vResult As Variant
Dim lResult As Long
vResult = Application.Run("SAPCallMemberSelector", "DS_1", "PROMPT", "0FISCPER3_CMMYA_001")
'Übergebe die Auswahl
lResult = Application.Run("SAPSetPlanParameter", "PF_1", "0FISCPER3_CMMYA_001", vResult, "INPUT_STRING")
'starte Planungsfunktion
lResult = Application.Run("SAPExecutePlanningFunction", "PF_1")
End Sub
Machen wir aber mit unserem eigentlichen Thema, SAPCallMemberSelector
API, weiter.
Auswahltyp FILTER
Oft ist es so, dass die in der Planungsfunktion verwendete Merkmale nicht über eine Variable bei Start der Mappe (Eingabeaufforderung) definiert werden. Wohl aber sind die Werte des Merkmals im Filter eingeschränkt. In diesem Fall sieht unser Makro so aus:
Sub StartPF()
Dim vResult As Variant
Dim lResult As Long
vResult = Application.Run("SAPCallMemberSelector", "DS_1", "FILTER", "0FISCPER3")
'schreibe Auswahl in die Zelle D2
Tabelle2.Range("D2").Value = vResult
'starte Planungsfunktion
lResult = Application.Run("SAPExecutePlanningFunction", "PF_1")
End Sub
Dabei werden nur vorhandenen Werte zur Auswahl angeboten, was übersichtlicher ist.
Auswahltyp FILTER_MASTERDATA
Bei diesem Auswahltyp stehen alle Stammdaten des Merkmals zur Auswahl.
Sub StartPF()
Dim vResult As Variant
Dim lResult As Long
vResult = Application.Run("SAPCallMemberSelector", "DS_1", "FILTER_MASTERDATA", "0FISCPER3")
'schreibe Auswahl in die Zelle D2
Tabelle2.Range("D2").Value = vResult
'starte Planungsfunktion
lResult = Application.Run("SAPExecutePlanningFunction", "PF_1")
End Sub
Auswahltyp PLAN_PARAMETER
Über den Parameter PLAN_PARAMETER
können Variablen, die in der Planungsfunktion enthalten sind, aufgerufen werden.
Sub StartPF()
Dim vResult As Variant
Dim lResult As Long
vResult = Application.Run("SAPCallMemberSelector", "PF_1", "PLAN_PARAMETER", "0FISCPER3_CMMYA_001")
'schreibe Auswahl in die Zelle D2
Tabelle2.Range("D2").Value = vResult
'starte Planungsfunktion
lResult = Application.Run("SAPExecutePlanningFunction", "PF_1")
End Sub
Parameter ActiveCell und SINGLE
Mit dem Parameter SINGLE
können Sie erreichen, dass nur einzelne Elemente ausgewählt werden können. Mit dem Paramter ActiveCell
wird das Auswahlfenster in der gerade aktiven Zelle aufgemacht.
Sub StartPF()
Dim vResult As Variant
Dim lResult As Long
vResult = Application.Run("SAPCallMemberSelector", "PF_1", "PLAN_PARAMETER", "0FISCPER3_CMMYA_001", ActiveCell, "SINGLE")
'schreibe Auswahl in die Zelle D2
Tabelle2.Range("D2").Value = vResult
'starte Planungsfunktion
lResult = Application.Run("SAPExecutePlanningFunction", "PF_1")
End Sub
Ihre User beklagen sich über langsame Berichte?
- In meinem Newsletter lernen Sie, wie Sie Abhilfe schaffen.
- Entdecken Sie die Möglichkeiten der Performanceoptimierung.
- Praktische Anleitungen ermöglichen Ihnen schnelle Erfolge bei der Optimierung von SAP Systemen.
- Viele Tipps und Tricks zu SAP BI Themen.
- Holen Sie die maximale Performance aus Ihrem SAP BI!
- Bei der Anmeldung zu meinem Newsletter erhalten Sie das Buch „High Performance SAP BI“ als Willkommensgeschenk.
Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.
Hinterlasse einen Kommentar
An der Diskussion beteiligen?Hinterlasse uns deinen Kommentar!