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

Bedingte Dateneingabe bei der Planung

Gute Planungsanwendungen zeichnen sich unter anderem durch einen hohen Vorfertigungsgrad der Planmasken aus. Dies wurde bereits im Beitrag zum Thema „Automatisches Generieren von Planungsmappen“ herausgestellt. Um den Planungsprozess noch einfacher zu gestalten und um Eingabefehler zu vermeiden, ist ein Freigabemechanismus innerhalb einer Planungsmaske erforderlich. Dieser Mechanismus sollte in Abhängigkeit bestimmter Faktoren eine Dateneingabe entweder freigeben oder sperren. Der folgende Blogbeitrag erläutert ein Vorgehensmodell, mit dem eine bedingte Dateneingabe in die Planungsmasken integriert und dadurch der Planer bei der Planeingabe noch mehr an die Hand genommen wird. Fünf Beispiele aus der Planungspraxis zeigen, welche Varianten der Eingabesteuerung typischerweise zum Einsatz kommen.

Grundkonzept

Eine Datenzelle in einer Planungsmaske kann hinsichtlich der Eingabe von Werten entweder gesperrt oder freigegeben sein. So sollten Zellen mit Ist-Werten grundsätzlich gesperrt sein, während Zellen mit Planwerten in den meisten Fällen für Dateneingaben freigegeben sind.

Derartige Eigenschaften einer Datenzelle lassen sich in DeltaMaster anhand von Flexreports abbilden. Für jede Zelle eines Flexreports kann in den Zelleigenschaften auf der Karte Dateneingabe beispielsweise festgelegt werden, dass eine Eingabe nie zugelassen wird. Selbst wenn mittels Berechtigungen in der Datenbank sichergestellt ist, dass Ist-Werte grundsätzlich schreibgeschützt sind, so erwirkt diese Einstellung im Flexreport, dass keine Werte in die entsprechende Zelle eintragen werden können.

Knifflig wird es nun bei Datenzellen, die Planwerte beinhalten. Hier kann es in bestimmten Fällen erforderlich sein, dass diese ebenfalls gesperrt sein müssen. Auch hierfür findet sich in den Zelleigenschaften die Lösung: Eingaben können von einer Bedingung abhängig gemacht werden. Das ermöglicht das Zusammenspiel von zwei Registerkarten in den Zelleigenschaften: Die zu prüfende Bedingung wird als bedingte Formatierung auf der entsprechenden Karte definiert. Eine weitere Option Dateneingabe zulassen, wenn … auf der Karte Dateneingabe nimmt darauf Bezug und erlaubt das Eingeben in die Zelle nur dann, wenn die gewählte Bedingung erfüllt ist; andernfalls wird die Dateneingabe gesperrt. Um eine Dateneingabe zu tätigen, muss die Bedingung also erfüllt sein.

Bleibt noch die Frage offen, wie der Eingabestatus einer Flexreport-Zelle, der in der bedingten Formatierung abgefragt wird, hinterlegt werden kann. Hierfür eignen sich Analysewerte, deren Werte den jeweiligen Status repräsentieren. Eine 1 steht beispielsweise für den Status Freigegeben, während eine 0 den Status Gesperrt widerspiegelt. In der Praxis bezeichnet man Analysewerte, die eine Freigabelogik abbilden, auch als „Freigabeflag“.

Analysewerte bieten eine Fülle von Möglichkeiten, um den Eingabestatus einer Flexreport-Zelle zu steuern. Einerseits kann der Status datengetrieben berechnet werden. Benutzerdefinierte Analysewerte erlauben diesbezüglich die Anwendung des kompletten MDX-Funktionsschatzes, um den Eingabestatus zu ermitteln. Andererseits kann der Planer den Eingabestatus auch manuell über eine Dateneingabe direkt auf dem Freigabeflag erfassen.

Freigabeflags, die manuell erfasst werden, orientieren sich oft an wenigen Dimensionen aus dem gesamten Datenmodell (bspw. Planjahr und Produkt oder Planjahr und Planer). Daher sollten sie in eigenen Measuregroups abgebildet werden. Der folgende Screenshot zeigt eine solche Measuregroup Sys_Freeze_DataEntry, in der die Freigabeflags nur im Kontext der Dimensionen Zeit, Wertart und Planer erfasst werden.

Anzahl der Bedingungen

In der Praxis hängt die Freigabe zur Erfassung von Werten oft von mehreren Faktoren ab. So könnte eine Eingabe beispielsweise von einem Merkmal des Planobjektes und vom generellen Eingabestatus des jeweiligen Planers abhängen. In diesem Fall wären zwei Flags erforderlich, die beide gleichermaßen für die Freigabe berücksichtigt werden müssten. Die Steuerung der Dateneingabe ist jedoch stets an eine einzige Bedingung geknüpft. Mehrere Flags, die miteinander kombiniert werden müssen, lassen sich folglich nicht durch die schrittweise Prüfung mehrerer Bedingungen abbilden. Alle Prüfungen zur Freigabe müssen stattdessen in die Berechnung eines einzigen Flags eingehen. Typische Beispiele aus der Praxis, in der mehrere Freigabelogiken miteinander kombiniert werden, finden sich im letzten Kapitel dieses Beitrags.

Freigabetypen

Freigaben können sowohl grob als auch detailliert erfolgen. Je nachdem, auf welcher Ebene eine Freigabe erfolgt und wie viele Zellen davon betroffen sind, lassen sich zwei Grundtypen unterscheiden. Einerseits kann sich eine Freigabe auf die gesamte Planungsmaske beziehen. In diesem Fall steuert ein einziger Wert sämtliche Eingabezellen. Andererseits können Freigaben auch auf einzelne Zellen innerhalb einer Planungsmaske referenzieren. In diesem Fall sind mehrere Werte erforderlich – meist einer für jedes der angezeigten Planobjekte.

Einbau der Freigabeflags in die Planungsmaske

Unabhängig davon, ob ein oder mehrere Freigabeflags benötigt werden, erfolgt der Einbau in die Planungsmasken stets nach dem gleichen Prinzip. Im Falle einer Freigabe der gesamten Planungsmaske wird das entsprechende Flag in einer einzigen Zelle des Flexreports angezeigt. In der bedingten Formatierung erfolgt dessen Prüfung durch die Angabe der entsprechenden Zellkoordinaten (absolut referenziert, Zeile 1 und Spalte 1, „R1C1“). Bei einer zellbasierten Freigabelogik werden die jeweiligen Werte des Flags in einer separaten Spalte neben den Eingabefeldern zeilenweise mitgeführt. Sofern sich diese direkt rechts neben den Eingabefeldern befindet, ließe sich die Prüfung anhand relativer Zellkoordinaten „R(0)C(1)“ durchführen. Sollte das Freigabeflag für den Planer nicht sichtbar sein, genügt eine entsprechende Formatierung der Zelle und des Wertes in der Farbe Weiß. Alternativ oder ergänzend kann auch die gesamte Spalte, in der das Flag geführt wird, ausgeblendet werden.

Transparenz für den Planer

Ein Planer sollte auf Anhieb erkennen, welche Zellen der Planungsmaske für die Dateneingabe freigegeben sind. Bei der Gestaltung von Planungsmasken ist es daher üblich, Eingabezellen besonders zu kennzeichnen. Bewährt hat sich hierbei die Wahl einer dezenten Hintergrundfarbe und eines breiten, weißen vertikalen Rahmens. Die Nutzung der bedingten Formatierung zur Steuerung der Datenfreigabe hat diesbezüglich den großen Vorteil, dass neben der Prüfung des Freigabeflags die Formatierung der betreffenden Zelle gleich mit angegeben werden kann.

Anwendungsbeispiele

Abschluss der Planung

Nachdem ein Planer alle Werte erfasst hat, soll er seine Planung offiziell abschließen. Durch eine unmittelbare Eingabesperre soll dann sichergestellt werden, dass eine abgeschlossene Planung im Nachgang nicht mehr verändert werden kann. Dies ist eine typische Anforderung in einem Planungsprojekt. Hierzu kann der Planer beispielsweise auf einer separaten Maske das Abschlussflag manuell erfassen. Dieses Kennzeichen steuert dann die Dateneingabe in allen Planungsmasken und in der vorliegenden Maske zum Planungsabschluss.

Neben der Sperrung der Dateneingabe erlaubt ein Abschlussflag auch die Überwachung des Planungsfortschritts. Hierzu bedarf es eines Reports, der die jeweiligen Status der einzelnen Planer anzeigt. Denkbar wäre, dass ein Administrator anhand eines solchen Übersichtsberichts den gesetzten Status wieder überschreibt und damit eine Planung, die zuvor durch den Planer manuell gesperrt wurde, wieder freigibt.

Ebene des Planobjektes

In einer Eingabemaske für die Absatzplanung möchte man forcieren, dass Planer ihre Eingaben ausschließlich auf Artikelebene machen und nicht für Artikelgruppen. Zu diesem Zweck definiert man per MDX einen Analysewert, der die Ebene des jeweils gezeigten Elements ermittelt: [Produkt].[Produkt].CurrentMember.Level.ordinal

Dieser Level wird neben den Eingabefeldern in einer separaten Spalte der Planungsmaske hinterlegt. Anhand der bedingten Formatierung lasst sich dann prüfen, ob ein in der Maske angezeigtes Planobjekt einen bestimmten Level besitzt. In diesem Fall greift die hinterlegte Freigabelogik und die Dateneingabe ist möglich. Andernfalls wird die Zelle automatisch gesperrt.

Top-down Eingabeprüfung

Hinter Top-down-Eingaben verbirgt sich immer das Risiko, dass Planer einen Wert für einen zuvor leeren Datenbereich erfassen. Dies würde eine Gleichverteilung von Werten in alle Basiszellen des Datenbereichs und mitunter eine sehr hohe Anzahl an Schreibprozessen auf dem Datenbankserver nach sich ziehen. Um derartige Eingaben zu vermeiden, bietet sich die zuvor beschriebene Prüfung der Ebene eines Planobjektes in Verbindung mit einer Wertabfrage an. Sofern ein Planobjekt eine bestimmte Ebene unterschreitet und darüber hinaus noch keinen Plan-, bzw. Vorschlagswert beinhaltet, wird die Dateneingabe gesperrt. Dies lässt sich durch einen per MDX definierten Analysewert leicht ermitteln: iif([Gebiet].[Gebiet].CurrentMember.Level.ordinal < 3 and [Planwert] = 0, 0, 1)). Im folgenden Screenshot zeigt der Analysewert „Eingabe_Freigeben_Umsatz_Gebiet“, dass aggregierte Planobjekte nur dann zur Dateneingabe freigegeben sind, wenn Sie bereits einen Vorschlagswert „Netto1, korr., oRV (Gebiet)“ besitzen. Basiselemente sind stets freigegeben.

Manuelles Erfassungsflag pro Planobjekt

Manchmal sollen bestimmte Planwerte nicht für jedes Planobjekt erfasst werden. So könnte beispielsweise im Rahmen einer Umsatzplanung eine Sonderposition „Rückvergütung“ für ausgewählte Produkte geplant werden. Hierzu muss lediglich anhand eines Aktivierungsflags festgelegt werden, für welche Produkte eine Rückvergütung erfasst werden soll.

Ein Aktivierungsflag wird ebenfalls neben den Eingabefeldern in einer separaten Spalte der Planungsmaske hinterlegt. Anhand der bedingten Formatierung lasst sich dann prüfen, ob ein bestimmtes Produkt zur Erfassung der Rückvergütung aktiviert ist. In diesem Fall greift die Bedingung und die Dateneingabe ist möglich. Andernfalls wird die Zelle automatisch gesperrt.

Verknüpfung mehrerer Freigabelogiken

Eingangs wurde bereits aufgezeigt, dass sich ein Freigabemechanismus in der Regel an mehreren Kriterien orientiert. Mit der hier beschriebenen Methodik zur Freigabe und Sperrung der Dateneingabe müssen alle zu prüfenden Faktoren in die Berechnung eines einzigen Flags eingehen. In der Praxis findet sich diesbezüglich oft eine Kombination aus einem generellen Flag (Planungsabschluss) und einem Flag, das von bestimmten Merkmalen des Planobjektes abhängt. Um den Freigabestatus aus mehreren Kriterien zu ermitteln, reicht in der Regel eine Multiplikation der einzelnen Faktoren. Sobald ein Kriterium auf „0“ (Gesperrt) steht, weist das Freigabeflag ebenfalls den Wert „0“ aus. Nur wenn alle Kriterien erfüllt sind, ergibt das Freigabeflag einen Wert ungleich „0“.