Framework:Makros
Um ein neues Makro zu erstellen, wechseln Sie zunächst in den Entwicklermodus und wählen den Menüpunkt Objektverwaltung.
Ein Makro ist eine Gruppe von Aktionen, die jeweils eine bestimmte Operation ausführen, wie z.B. das Öffnen eines Formulars oder das Ausführen eines Serverbefehles. Mit Hilfe von Makros können Sie häufig vorkommende Aufgaben automatisieren. Sie können z.B. ein Makro erstellen, das einen Import ausführt, d. h. Daten löscht, diese neu importiert und z. B. im Anschluss einen Erfolgsbericht öffnet, wenn ein Benutzer dieses über einen Menüpunkt aufruft.
Um das Makro mit Eigenschaften zu versehen, öffnet man mit Klick auf die Schaltfläche „Entwurf“, per Klick mit der rechten Maustaste das Kontext-Menü oder per Doppelklick den Batchdesigner. Über den Menüpunkt „Neu“ kann hier auch ein neues Makro angelegt werden.
Zur Verfügung stehende Aktionen:
- NavAktion
- ServerBefehl
- Meldung
Die erstellten Aktionen werden im Batchdesigner dann nach einander abgearbeitet. Um die Reihenfolge der Abarbeitung zu ändern stehen der Button
als auch
zur Verfügung.

Je nach ausgewählter Aktion stehen dem Anwender verschiedene Konfigurationsmöglichkeiten zur Verfügung.
NavAktionen ermöglichen es zum Beispiel, Masken, Dimensionen etc. zu öffnen. Zusätzlich können NavAktionen auch zum Beispiel Formeln, Importe etc. ausführen. Eine Beschreibung aller NavAktionen finden Sie hier.

ServerBefehl
Hier stehen verschiedenste Serverbefehle zur Auswahl.
| Befehl | Beschreibung |
|---|---|
| DBC Execute Procedure | Es können Stored Procedures ausgeführt werden. Der Name der Stored Procedure muss dabei genau dem Namen der Stored Procedure des SQL Server entsprechen (bspw. sp_calc_table). Zusätzlich können hier auch noch Parameter der Stored Procedure übergeben werden. Die einzelnem Parameter werden dabei durch „;“ getrennt, und beginnen jeweils mit einem „@“ (bspw: @param1=ErsterParameter;@param2=ZweiterParameter). Als Parameter können auch Session Variablen übergeben werden. (bspw.: @Session_PLAN_ID@) Der Datenbank Conneciton String sieht wie folgt aus: Server=ServerName;Initial Catalog=DatabaseName;user id=MyUserId; password=MyPassword |
| Plansätze löschen | Der ServerBefehl Plansätze löschen, löscht alle Datensätze des ausgewählten Plans aller planabhängigen Tabellen. Wird der Plan auf „Aktueller Plan“ gestellt werden nur Datensätze des Planes gelöscht an den der Benutzer angemeldet ist. |
| Formula activate | Dieser Serverbefehl kann Formeln aktivieren bzw. deaktivieren. Zusätzlich kann die Formel „Makroaktiv“ gesetzt werden. |
| Formelwerk aktivieren | Aktiviert das CoPlanner Formelwerk. |
| Formelwerk deaktivieren | Deaktiviert das CoPlanner Formelwerk. |
| PlanSecurity neu laden | Lädt die Security für den aktuellen Plan neu. |
| Plan kopieren | Kopiert alle Datensätze von einem Plan in einen anderen Plan. |
| Tabellensätze kopieren | Es werden alle Datensätze innerhalb des ausgewählten Planes einer Tabelle in eine andere Tabelle kopiert. Zusätzlich können hier XML Filter für die Datensätze angegeben werden. |
| Tabellensätze löschen | Es werden alle Datensätze innerhalb des ausgewählten Planes einer Tabelle gelöscht. Zusätzlich können hier XML Filter für die Datensätze angegeben werden.
Neben der Auswahl der Tabelle muss auch ein zu löschender Plan gewählt werden. Dies kann durch explizite Auswahl eines bestimmten Plans oder mit der Funktion „Aktueller Plan“ automatisch bezogen auf den Plan der Anmeldung erfolgen. Bei Wahl der Option „planunabhängig“ werden die Daten der gewählten Tabelle aus allen Plänen gelöscht! Siehe nachfolgendes Beispiel. |
| Tabelle dieses Plans neu rechnen | Es werden alle Datensätze innerhalb des ausgewählten Planes einer Tabelle neu berechnet. Zusätzlich können hier XML Filter für die Datensätze angegeben werden. |
| Import am Server starten | Startet ein Importobjekt am Server. Da jedes Importobjekt eine Erfolgsmeldung zurückgibt, kann diese Erfolgsmeldung über den Parameter „Rückmeldung aktivieren“ unterdrückt werden. |
| Datenbank synchronisieren | Erzwingt die Synchronisation des CoPlanner Servers und des SQL Servers bevor weitere CoPlanner - Serverbefehle abgearbeitet werden. |
| Datenobjekt synchronisieren | Erzwingt die Synchronisation der angegebenen Tabelle/Dimension und des SQL Servers bevor weitere CoPlanner - Serverbefehle abgearbeitet werden. |
| OffeneBerechnungen abschliessen | Erzwingt die Abarbeitung aller offenen Berechnungen (Formeln). Anschließend wird einen Datenbanksynchronisation erzwungen, bevor weitere Serverbefehle abgearbeitet werden. |
| Formel ausführen | Führt die ausgewählte Formel aus. |
| Session Parameter ändern | Ändert Sessioneigenschaften. Hier kann bspw. angegeben werden, dass der Sessionkontext im Makromode ausgeführt wird, damit in weiterer Folge Formeln ausgeführt werden deren Eigenschaft ‚Ausführen im Makromode’ gesetzt ist. Dazu geben Sie bitte folgende Parameter an:
Um in den Makromodus zu wechseln: MakroMode=1 Um den Makromodus zu verlassen: MakroMode=0 |
| OLAP refresh | Makrobefehl zur Aktualisierung von OLAP-Verbindungen (Verbindungen vom CoPlanner-Server zu SSAS werden geschlossen und bei Bedarf neu aufgebaut). Neben dem Aktualisieren der Dimensionen zielt dieser Befehl auch darauf ab eventuelle AdoMD-Caches (Security) zuverlässig löschen zu können. Nach einem Neustart des Clients sollten geänderte Dimensionselemente im CoPlanner ersichtlich sein. |
| Log Level setzen | Zu Entwicklungszwecken kann man sich sämtliche Meldungen die im Log generiert werden in der Console/Telnet ausgeben lassen. Im Echtbetrieb wird das nicht empfohlen da es zu Performanceverschlechterungen kommen kann.
Konfiguration: |
| Skript am Server ausführen | Wenn die Option AllowBatchProcessingViaMacro in der svrconifg.xml auf true gesetzt ist, dann kann man diesen Befehl auswählen. Am Server muss dafür ein Ordner Skripts vorhanden sein, welcher die Skriptdateien enthält, die ausgeführt werden können. Zusätzlich kann man Session-Variablen als Parameter übergeben. |
Beispiel Tabellensätze löschen
Es sollen mit einem Makro alle Datensätze aus einer Tabelle gelöscht werden die zum angemeldeten Plan gehören. Legen Sie dazu ein neues Makro an und wählen Sie als Aktion „Serverbefehl“ und treffen Sie die Einstellungen wie in folgender Abbildung dargestellt.

Rufen Sie den Filter – Editor auf mit einem Klick auf die Schaltfläche
.

Wählen Sie aus dem Kombinationslistenfeld den Eintrag „BAB_Plan“ und im Filter „Unternehmen“ die „Bike GmbH“ aus. Mit einem Klick auf die Schaltfläche „Hinzufügen“ wird diese Einstellung übernommen. Durch das Ersetzen des Kriteriums mit der Sessionvariable @Session_Unternehmen_ID@ bezieht sich dieser Filter immer auf das angemeldete Unternehmen.
Sollten Sie diese Filter mehrmals benötigen, können Sie diesen mit dem Befehl „Filter speichern“ sichern und mit „Filter laden“ wieder einfügen.
Beispiel Tabellensätze in Abhängigkeit eines Dimensionsattributes löschen
Es sollen mit einem Makro alle Datensätze aus einer Tabelle gelöscht werden, die einer Attributausprägung in einer Dimension entsprechen. In diesem Beispiel werden aus der Tabelle "Tab1" alle Datensätze gelöscht, die in der Dimension im Attribut "AttribFeld" den Wert "True" enthalten.

| Spalte | Ausdruck |
|---|---|
| Feld | Standard Dimension Column Name |
| Vergleichstyp | Muss zum Datentyp passen (me ist =, not_me ist <>, usw.) |
| Kriterium | Muss auch zum Datentyp passen |
| Type | BY_ATTRIBVAL_FeldNameInDim (In diesem Beispiel heißt das Attributsfeld in der Dimension "AttribFeld" |
Beispiel Tabellensätze in Abhängigkeit einer Anwendungseigenschaft löschen
Es sollen mit einem Makro alle Datensätze aus einer Tabelle gelöscht werden, die einem Dimensionselement aus den Anwendungseigenschaften entsprechen.

Tabellensätze in Abhängigkeit einer anderen Tabelle löschen
Über ein FKT_GetRecord im Kriterium kann eine Eigenschaft aus einer anderen Tabelle abgerufen werden. Hier muss vor dem FKT_GetRecord ein Transform= stehen.
z.B.: Transform=FKT_GetRecord(TabRecordToDelete.Zeit_1,Unternehmen != @Session_Unternehmen_ID@)
Holt den Eintrag der Zeit aus der Zeile der Tabelle TabRecordToDelete, bei der das Unternehmen dem Unternehmen entspricht, auf dem man angemeldet ist.
Meldung
Dem Anwender können mit Meldungen Informationen über die Ausführung des Makros am Client angezeigt werden. Dazu wird der Meldungstext, Meldungstitel und der Meldungstyp eingegeben.

Meldungstypen
URL
Ab CoP 10 HF 2.5
Bietet die Möglichkeit bei im Webclient ausgeführten Makros z.B. andere Masken zu öffnen.
| ACHTUNG Nach diesem Schritt werden keine weiteren Schritte des Makros ausgeführt. Sollte es sich bei dem Makro um ein Submakro handeln, werden auch die weiteren Schritte des aufrufenden Makros nicht weiter ausgeführt. Sollte der Schritt durch z.B. eine Fortsetzungsbedingung nicht ausgeführt werden läuft das Makro wie bisher weiter. |
Der Kontext kann bei diesem Befehl verwendet werden. Wird das Makro z.B. aus einer Maske aufgerufen und es werden Filter übergeben, so kann man auf diese mit @Context.<Filtername>@ zugreifen. Wird z.B. der Filter PC/KST übergeben, dann könnte so ein Link folgendermaßen aussehen: @Session_WebAppUrl/pivottable/?pivotform=EM Umsatzerloese PLAN&contextFilters="PC/KST" mu @Context.PC/KST@
Fortsetzungsbedingung
Die Fortsetzungsbedingung dient dazu, um die Weiterführung des Makros steuern zu können. Wird sie aktiv geschalten, muss die Bedingung zutreffen, um mit dem Makro fortzufahren. Trifft die Bedingung nicht zu, wird das Makro genau an der Stelle beendet. Es besteht die Möglichkeit mittels einer Meldung auf den Abbruch hinzuweisen.


Es müssen für die Bedingung beide Ausdrucksfelder befüllt werden. Ein Ausdruck kann eine Abfrage zum CoPlanner Server mittels der Funktionen die das Rechenwerk bereitstellt, ein SQL Statement auf die CoPlanner Systemdatenbank oder ein konstanter Wert sein. Die Abfrage zum CoPlanner Server wird mittels Transform=, eine SQL Server Abfrage mittels Sql= gekennzeichnet. Ein konstanter Wert wird ohne besondere Kennung eingetragen.
Beispiele:



Bei konstanten Werten muss der Datentyp beachtet werden. Liefert die SQL bzw. CoPlanner Abfrage als Ergebnis eine Zeichenfolge, muss der Wert unter einfache Anführungszeichen gestellt werden. Liefert die Abfrage als Ergebnis einen numerischen Wert, entfallen die Anführungszeichen. Wird eine SQL Abfrage definiert, welche nicht genau einen Wert, sondern eine Ergebnistabelle liefert, wird der Wert der linken, oberen Ecke für den Vergleich herangezogen.

Im folgenden SQL Statement-Beispiel wird überprüft ob in der Tabelle CPM_TBL_BUD_PAYMENTS für den aktuellen Plan und das Project an dem der Benutzer gerade angemeldet ist Datensätze vorhanden sind:
Sql=select cast(count(*) as bigint) from CPM_TBL_BUD_PAYMENTS where COPSYS_PLAN_ID = @Session_PLAN_ID@ and Projects = (select top 1 value from tb_SessionParameters where Name = 'Projects' and COP_SESSION_ID = @Session_ID@)
Liefert die SQL Abfrage keine einzige Zeile, so kann dies mittels der Konstante ‘NULL‘ abgefragt werden.

Ausdrücke können auch mit CoPlanner Sessionvariablen versehen werden. Vor der eigentlichen Evaluierung des Ausdrucks werden diese durch den entsprechenden Wert ersetzt. Sessionvariablen können auch als konstanter Wert verwendet werden.

Ist die Option „Meldung bei Nichterfüllung“ aktiviert, wird bei Abbruch des Makros dem Benutzer die Meldung mit dem entsprechenden Text angezeigt. Ist die Option nicht aktiv, wird das Makro ohne weitere Meldung beendet.








