Script Logic über Excel Button ausführen
In dem Beitrag Script Logic Befehle in BPC 10.0 habe ich die Syntax für Skriptlogik Funktionen erläutert. Sie können diese Formeln jedes Mal beim Speichern ausführen, wenn Sie die Skripte in die DEFAULT.LGF
einbinden (Administration -> Regeln -> Logikskripts -> das jeweilige Modell).
Zum Beispiel:
*INCLUDE LOGIC_1.LGF
Oft gibt es jedoch Anforderungen bestimmte Formeln bzw. Funktionen über einen Button ausführen zu lassen. In diesem How-To erfahren Sie wie es geht.
Für die zentrale Ausführung von Logikskripts werden Data Manager Packages verwendet. Legen Sie eine neue Package Group an (Data Manager -> Organize -> Organize Package List), in unserem Beispiel „Script Logic“.
Fügen Sie dann über Rechtsklick -> Add Package ein neues Paket hinzu. Ich verwende die Standard-Prozesskette /CPMB/DEFAULT_FORMULAS
. Vergeben Sie den Namen (Package Name), z.B. „Copy Actual Data“, und die Beschreibung. Stellen Sie ein, ob das Data Package von Administratoren oder Usern (entsprechend den Einstellungen in Berechtigungen) ausgeführt werden kann. Speichern Sie die Einstellungen und wählen Sie anschließend Modify Package aus. Klicken Sie auf Modify Script und dann auf Advanced.
Geben Sie den folgenden Code ein. In diesem Beispiel werden keine Variablen übergeben, daher habe ich die SELECTION
Anweisung entfernt.
TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SUSER,%USER%) TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SAPPSET,%APPSET%) TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,SAPP,ACT) //Modell bzw. Cube TASK(/CPMB/DEFAULT_FORMULAS_LOGIC,LOGICFILENAME,COP_ACT.LGF) //Name des Logikskripts
Die Script Logic soll auf dem ACT
Cube ausgeführt werden, dieser enthält die Ist-Daten. Die Datei COP_ACT.LGF
enthält neben *XDIM_MEMBERSET
die folgenden Anweisungen:
*DESTINATION_APP = PLAN //Plan-Cube *WHEN CATEGORY *IS "ACTUAL" *REC(EXPRESSION=%VALUE%) *ENDWHEN *COMMIT
Damit werden die Ist-Daten auf den Plan-Cube geschrieben.
Als nächstes bauen wir den Button. Dazu müssen Sie zunächst den Reiter für Entwicklertools (Englisch – Developer Tools) aktivieren. Gehen Sie dazu in die Registerkarte „Datei“. Klicken Sie nun auf „Optionen“ und anschließend „Menüband anpassen“. Aktivieren Sie unter Hauptregisterkarten das Kästchen „Entwicklertools“.
Nun müssen Sie Makros und VBA aktivieren. Klicken Sie nun auf den eingeblendeten Reiter „Entwicklertools“ und wählen Sie „Makrosicherh.“ aus.
Wählen Sie die folgenden Einstellungen: für Makros – Alle Makros aktivieren, Entwicklermakroeinstellungen – Zugriff auf das VBA-Projektobjektmodell vertrauen.
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.
Nun wollen wir mithilfe einer Skriptlogik Ist-Daten auf den Plan-Cube kopieren.
Dazu wird über VBA ein API ausgeführt.
Die generische Syntax lautet wie folgt:
Sub Button() Application.Run "APIName", "MethodName", "", "Arg1", "Arg2", "Arg3" End Sub
Beispiel Data Package:
APIName = EPMExecuteAPI
MethodName = DataManagerRunPackage
LinkName = wird nicht verwendet, ist jedoch notwendig. Also immer „“
Arg1 = Package Name
Arg2 = Package Group
Arg3 = Team ID (bzw. „“ für Company)
Legen Sie über Entwicklertools -> Einfügen -> Schaltfläche einen Button an. Vergeben Sie einen Makronamen, z.B. ButtonClick1 und klicken Sie auf Neu. Geben Sie den folgenden Code ein:
Sub ButtonClick1() Application.Run "EPMExecuteAPI", "DataManagerRunPackage", "", "Copy Actual Data", "Script Logic", "" End Sub
Bei einem Klick auf den Button wird nun das Data Manager Paket ausgeführt und die Daten werden rüberkopiert.
Nun möchte ich die auf einer aggregierten Ebene geplanten Daten anhand von Ist-Daten verteilen. Dazu habe ich auf dem Modell (Cube) PLAN
das Skript DIR_STRAT.LGF
mit *RUNALLOCATION angelegt. Das entsprechende Data Manager Package wurde ebenfalls angelegt. Ich möchte mit einem Klick die Daten von Ist-Cube in den Plan-Cube kopieren (wird auf dem ACT
Modell ausgeführt) und die Daten anschließend verteilen (wird auf dem PLAN
Modell ausgeführt). Daher habe ich die beiden Packages in einem Package Link zusammengefasst. Das BI IP Pendant dazu wäre eine Planungssequenz.
Die VBA Syntax für Package Links ist eine andere. Es wird die Methode DataManagerRunPackageLink
verwendet und Sie benötigen die Package Link ID sowie den Package Link Namen (in diesem Beispiel „Copy and Distribute Strat Plan“). Während Sie den Namen leicht herausfinden können (Sie vergeben ihn selbst) müssen Sie die ID im Backend nachschauen.
Lassen Sie Ihren Package Link laufen und gehen Sie anschließen in die Tabelle UJD_LINK_LOG
(Transaktion SE16
). Dort können Sie über den Namen (LINK_NAME
) die dazugehörige ID finden. Alternativ können Sie die ID über die Tabelle UJD_LINK
anhand von User und Timestamp rausfinden.
Ändern Sie nun Ihr Makro wie folgt:
Sub ButtonClick1() Application.Run "EPMExecuteAPI", "DataManagerRunPackageLink", "", "DGWPFKBVYSKTUY8BFXPDZ8UTH", "Copy and Distribute Strat Plan" End Sub
Nun wird nach einem Klick auf den Button die Sequenz ausgeführt.
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!