CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Schreibrechte in SSAS zeitgesteuert vergeben

In einem Kundenprojekt gab es vor einiger Zeit eine sehr interessante Anforderung: In einem monatlichen Turnus soll eine Bottom-Up Planung erfolgen, in deren Verlauf – auf drei unterschiedlichen Stufen – Planzahlen für die verkauften Stückzahlen in den folgenden sechs Monaten eingegeben werden sollen. Letztendlich soll aus diesen Informationen eine genaue Produktionsplanung erfolgen, um eine möglichst ökonomische und effiziente Produktions- und Lagerauslastung zu erreichen.

Die Erfassung soll innerhalb eines vorgegebenen Zeitkorridors stattfinden – meistens in der 3. Woche eines Monats, evtl. jedoch, abhängig von Feiertagen, auch danach. Als Prämisse gilt, dass eine Stufe abgeschlossen werden muss, bevor die nächste Stufe die Berechtigung zur Datenerfassung erhält. Übertragen auf unser Chair-Modell könnte man die drei Stufen wie folgt abgrenzen:

  • Anwender mit Regionalverantwortung: Eingabe auf alle Produkte und eine bestimmte Region
  • Anwender mit Produktgruppenverantwortung: Eingabe auf Produkte einer bestimmten Produktgruppe über alle Regionen
  • Anwender mit Globaler Verantwortung: Eingabe auf alle Produkte und Regionen

Die Eingaben auf einer Stufe sollen nicht durch die Eingabe auf einer höheren Stufe überschrieben werden, sondern auf eigenen Measures erfasst werden, sodass der gesamte Eingabeprozess auch im nachhinein noch schlüssig abgebildet werden kann.

Die Umsetzung

Als Grundlage für die zeitgesteuerte Planung war natürlich zuerst einmal ein Planungskalender nötig, in dem die Zeiten für die unterschiedlichen Erfassungsstufen hinterlegt werden können.

 

Feldname Datentyp Beschreibung
Start_Phase_1 datetime Start-Datum der ersten Planungsphase
Start_Phase_2 datetime Start-Datum der zweiten Planungsphase und gleichzeitig Ende der ersten Planungsphase
Start_Phase_3 datetime Start-Datum der dritten Planungsphase und gleichzeitig Ende der zweiten Planungsphase
End_Phase_3 datetime Ende-Datum der dritten Planungsphase

 

Um eine komfortable Eingabeunterstützung anzubieten, wurde eine relationale Erfassungsmaske in DeltaMaster zur Verfügung gestellt, mit deren Hilfe eine Datumseingabe möglich ist. Praktisch ist hierbei, dass der SQL-Durchgriff erkennt, wenn in der relationalen Tabelle ein Feld vom Datentyp “datetime” vorliegt. In diesem Fall wird automatisch ein Kalender für die Datumsauswahl eingeblendet.

Für die Rechte-Steuerung im SSAS wurde eine zusätzliche Measuregroup angelegt, in der – je nach Planungsstufe – eine bestimmte Zahl hinterlegt wird. Die Befüllung dieser Measuregroup erfolgt über eine StoredProcedure, die bei jeder Modell-Aktualisierung (die natürlich jede Nacht laufen muss) mit aufgerufen wird. Die StoredProcedure prüft, ob sich das aktuelle Datum innerhalb einer der drei im Planungskalender angegebenen Zeitpunkte befindet. Wenn ja wird ein entsprechender Wert in die Faktentabelle der Measuregroup geschrieben. Im einfachsten Fall kann die Measuregroup ausschließlich auf die Wertart-Dimension bezogen werden. Im vorliegenden Projekt wird auf das “Plan”-Element in der Wertart-Dimension einer der Werte ‘0’, ‘1’, ‘2’ oder ‘3’ auf das Measure “PlanningStatus” geschrieben.

Im SSAS wird danach für jede Planungsphase eine Rolle angelegt. Hierbei ist darauf zu achten, dass keine Einschränkungen aus einer anderen Rolle mit dieser Rolle überschrieben werden (so wie im Artikel Rechteverwaltung in SSAS – Teil 1 beschrieben).

In der Rolle sind vor allem anderen die folgenden beiden Einstellungen von Bedeutung:

  • Die Zugriffsrechte auf den Cube müssen auf Lese-/Schreibrecht eingestellt sein

  • Die Einstellung “Lese-/Schreibberechtigung aktivieren” (Enable read/write permission) muss auf der Seite “Zellendaten” (CellData) aktiviert werden und als Bedingung muss im Textfeld der entsprechende Wert in der Measure “PlanningStatus” abgeprüft werden.