How To BPC – Sprachabhängige Workbooks über VBA mit API Aufruf
Planungsmappen in BPC werden hauptsächlich auf Basis von Excel umgesetzt. Das heißt, dass wir unsere Überschriften, Reiternamen, Buttons usw. in Excel anlegen. Oft stehen wir vor der Herausforderung die Layouts zu lokalisieren, das heißt in verschiedenen Sprachen verfügbar zu machen. Wie stellen wir es am Besten an?
Eine Alternative wäre es Überschriften über eine Wenn/Dann Formel zu füllen indem man sich auf die Merkmalsbeschreibung bezieht die in verschiedenen Sprachen unterschiedliche Werte annimmt. Zum Beispiel Umsatz/Revenue. Allerdings können wir auf diese Weise keine Buttons oder Reiter umbenennen.
Die zweite Alternative wäre es, über VBA die Spracheinstellungen von Excel auszulesen und über
SELECT CASE
die Beschreibung der Elemente dementsprechend zu ändern. Das grundsätzliche Prinzip habe ich bereits im Beitrag „Sprachabhängige Meldungen ausgeben“ dargestellt.Betrachten wir das folgende Planungslayout.
In dem folgenden Coding lese ich nun beim Aufruf des Workbooks die Spracheinstellungen von Excel aus und ändere so die Beschriftung.
Function AFTER_WORKBOOK_OPEN() AFTER_WORKBOOK_OPEN = True 'Lokalisierung Select Case Application.LanguageSettings.LanguageID(msoLanguageIDUI) 'Deutsch Case 1031, 3079, 5127, 4103 With Aggregated 'Worksheet Aggregated Planning .Name = "Aggregierte Planung" .Cells(4, 1).Value = "Absatz- und Umsatzplanung: Strategische Vorgaben" .CommandButton1.Caption = "Umsatz berechnen" .Cells(12, 2).Value = "Buchungskreis" .Cells(12, 3).Value = "Verkaufsorganisation" End With 'Englisch Case Else With Aggregated 'Worksheet Aggregated Planning .Name = "Aggregated Planning" .Cells(4, 1).Value = "Sales Planning: Strategical Guidlines" .CommandButton1.Caption = "Calculate Revenues" .Cells(12, 2).Value = "Company Code" .Cells(12, 3).Value = "Sales Org." End With End Select End Function
Was ist aber wenn Sie die Beschriftung nicht von der Excel-, sondern von der BPC-Einstellung abhängig machen wollen?
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.
In diesem Fall können Sie auf die von SAP bereitgestellten APIs zurückgreifen. Zunächst müssen Sie diese aktivieren. Gehen Sie dazu in der Entwicklungsumgebung (ALT+F11
) auf Extras → Verweise (engl. Tools → References) und wählen Sie FPMXLClient
aus.
Nun können Sie alle Objekte im Objektkatalog (F2
) sehen. Wählen Sie in der Dropdown-Liste FPMXLClient
aus.
Die Klasse EPMAddInAutomation
enthält alle Makros, die für das EPM-AddIn ausgeführt werden können. Beachten Sie, dass Sie diese nicht mit der Funktion EPMExecuteAPI
verwenden können.
Die Klasse IEPMExecuteAPI
enthält Makros, die direkt aus einer Arbeitsblattzelle über die Funktion EPMExecuteAPI
ausgeführt werden können. Beispiele für diese Funktion finden Sie in den Beiträgen Script Logic über Excel Button ausführen und Automatische Aktualisierung der Inhalte nach dem Reiterwechsel.
Uns interessiert die Methode GetUserOption
. Mit dem Parameter LanguageIsoCode
können wir die Anwendungssprache und mit dem Parameter LanguageEdition
die Sprache der Daten auslesen. Diese Methode liefert uns eine Zeichenfolge (String
) im ISO 639-1 Format. So steht zum Beispiel de für Deutsch. Weitere Parameter für dieses API können Sie dem Benutzerhandbuch für das EPM-Add-In entnehmen.
Sie können dieses API wie folgt aufrufen. Beachten Sie, dassLanguageIsoCode
in Gänsefüßchen steht, da es ein Parameter und keine Variable ist.
Sub Sprache() Dim language As String Dim EPMObj As FPMXLClient.EPMAddInAutomation Set EPMObj = New FPMXLClient.EPMAddInAutomation language = EPMObj.GetUserOption("LanguageIsoCode") Debug.Print language End Sub
Unser Makro für die Lokalisierung würde nun wie folgt aussehen.
Function AFTER_WORKBOOK_OPEN() AFTER_WORKBOOK_OPEN = True 'Lokalisierung Dim language As String Dim EPMObj As FPMXLClient.EPMAddInAutomation Set EPMObj = New FPMXLClient.EPMAddInAutomation language = EPMObj.GetUserOption("LanguageIsoCode") Select Case language 'Deutsch Case "de" With Aggregated 'Worksheet Aggregated Planning .Name = "Aggregierte Planung" .Cells(4, 1).Value = "Absatz- und Umsatzplanung: Strategische Vorgaben" .CommandButton1.Caption = "Umsatz berechnen" .Cells(12, 2).Value = "Buchungskreis" .Cells(12, 3).Value = "Verkaufsorganisation" End With 'Englisch Case Else With Aggregated 'Worksheet Aggregated Planning .Name = "Aggregated Planning" .Cells(4, 1).Value = "Sales Planning: Strategical Guidlines" .CommandButton1.Caption = "Calculate Revenues" .Cells(12, 2).Value = "Company Code" .Cells(12, 3).Value = "Sales Org." End With End Select End Function
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!