16:54 Uhr
Mehrjahresvergleich im ReportWriter/Painter mit variabler Spaltenanzahl je Jahr dank Variablen
Dieses funktioniert auch relativ gut, weist aber Probleme auf, wenn man einen Berichtszeitraum größer als fünf Jahre betrachten möchte und möglicherweise manchmal auch weniger Jahre betrachten möchte. Sofern ein Zeitraum von 10 Jahren betrachtet wird ist es immer möglich, dass (zum Beispiel bei der Auswertung von Kostenarten) manche Zeilen nur in einen Jahr dargestellt werden und somit bei einer mehrmaligen Auswertung eines Fünfjahresbericht dieser nicht exakt übereinstimmt, da bestimmte Zeilen in einen Zeitraum nicht ausgegeben werden.
Grundüberlegung:
Es soll ein Zeitrum "von Geschäftsjahr" "bis Geschäftsjahr" ausgegeben werden und dabei für jedes Jahr dazwischen eine Spalte mit den einzelnen Jahreswerten ausgegeben werden. Hierbei sollen auch tatsächlich nur so viele Spalten ausgegeben werden, wie auch Jahre zwischen dem übergegeben "von Geschäftsjahr" und "bis Geschäftsjahr" liegen.
Variablen für Report Writer anlegen
Über die Transaktion GS11 (im SAP Menü unter Infosystem-> Ad-Hoc-Berichte-> Report Painter -> Report Writer -> Variable -> Anlegen (Transaktion GS11)) können eigene Variablen angelegt werden.Bei der Anlage einer Variable bekommen wir die Frage gestellt auf welches Bezugfeld sich die Variable beziehen soll. Hierbei kann es hilfreich sein, sich vorab schon vorhandene Variablen anzusehen. Je nach verwendeter Berichtsbibliothek können wir dabei auf unterschiedliche Tabellen Bezug nehmen. Für die Bibliothek 1VK wäre dieses zum Beispiel die Tabelle CCSS "Berichtstabelle Gemeinkostencontrolling" und das Feld GJAHR "Geschäftsjahr".
Innerhalb der Bibliothel 8A2 wird auf die Tabelle GLPCT "EC-PCA: Summentabelle" und das Feld RYEAR "Geschäftsjahr" Bezug genommen.
Im folgenden Beispiel möchten wir einen Mehrjahresvergleich innerhalb der Profit-Center-Rechnung durchführen. Daher werden alle folgenden Variablen mit Bezugsfeld auf die Tabelle GLPCT und Feldname RYEAR angelegt. Bei allen folgenden Variablen handelt es sich um Formelvariablen. Neben einer Formelvariable kann hier auch eine Wertvariable (für einen festen Wert) oder eine Setvariable angelegt werden (hierdurch können Gruppen hinterlegt werden). Ein Beispiel für eine Setvariable wäre die Variable 6-AUFGR die innerhalb der Tabelle CCSS über das Feld AUFNR eine Auswertung von Innenauftragsnummern ermöglicht.
Variable für aktuellstes Geschäftsjahr über Benutzer-Exit (Userexit)
Die erste Variable die wir anlegen erhält die Bezeichnung ZPJAHR und soll das aktuellste Geschäftsjahr (entspricht "Bis Geschäftsjahr") darstellen. Hierzu haben wir im Einstiegsbild der Transaktion die Variablen ZPJAHR angegeben mit den Bezugsfeld GLPCT (Tabelle) und RYEAR (Feldname) sowie als Variablentyp FORMEL gewählt.Im Folgenden Screen können wir dann die Beschreibung und eine Formel angegeben.
Als Beschreibung nehmen wir "aktuellstes Geschäftsjahr" und als Formel '#S001'.
Durch die Anweisung '#S001' wird das aktuelle Geschäftsjahr über den Benutzer-Exit S001 als Vorschlagswert ausgegeben.
Wertvariable für ältestes Geschäftsjahr
Als nächste Variable legen wir eine Wertvariable (ebenfalls über Tabelle GLPCT und RYEAR) mit der Bezeichnung ZPJAHRE an. Bei einer Wertvariable kann ein Vorschlagswert angegeben werden. Dieser könnte zum Beispiel auf 2007 gesetzt werden. Bei der späteren Verwendung im Bericht wird dann das aktuelle Jahr für die Variable ZPJAHR vorgeschlagen (heute also 2014) und für die Variable ZPJAHRE das Jahr 2007. Dieses kann je nach Einrichtung natürlich auch auf ein anderes sinnvolles Datum gesetzt werden und später auch bei der Ausführung eines Berichtes überschrieben werden.Hiermit haben wir unseren Auswertungszeitraum passend eingeschränkt. Da es aber auch sein kann, dass wir nur ein Jahr auswertn wollen, sei hier schon vorab darauf hingewiesen, dass es sich bei der Variable ZPJAHRE um eine Hilfsvariable handelt, die später im Bericht nur zur Selektion, aber nicht zur Ausgabe genutzt wird.
Formelvariablen für Einzelne Jahre abhängig von der Selektion
Die Überlegung hinter den folgenden Variablen ist, dass im Jahr 1999 keine Buchungen in SAP erfasst sind. Sollten Sie auch in 1999 schon in SAP gebucht haben, wäre hier ggf. das Jahr 1899 eine gute Idee.Alle folgenden Variablen beziehen sich auf die Tabelle GLPCT und den Feldnamen RYEAR, In der folgenden Tabelle sind die Variable, Beschreibung und die dahinterliegende Formel aufgeführt. Die Formel zieht immer 1 von der vorherigen Variable ab, sofern der Abstand zwischen dem auszuwertenden Jahren noch der Bedingung der Variable entspricht. Ich denke, dass die Formeln selbst erklärend sein dürften. Die Variablen sind für 12 Jahre ausgelegt und können durch weitere Variablen natürlich erweitert werden.
Variable | Beschreibung | Formel |
---|---|---|
ZPJAHR | aktuellstes Geschäftsjahr | '#S001' |
ZPJAHRE | ältestes Geschäftsjahr | Wertvariable (Vorschlagswert 2007) |
ZPJR-01 | Aktuellstes Geschäftsjahr - 1 | IF (1+'ZPJAHR'-'ZPJAHRE')> 1 THEN 'ZPJAHR' -1 ELSE 1999 |
ZPJR-02 | Aktuellstes Geschäftsjahr - 2 | IF (1+'ZPJAHR'-'ZPJAHRE')> 2 THEN 'ZPJAHR' - 2 ELSE 1999 |
ZPJR-03 | Aktuellstes Geschäftsjahr - 3 | IF (1+'ZPJAHR'-'ZPJAHRE')> 3 THEN 'ZPJAHR' -3 ELSE 1999 |
ZPJR-04 | Aktuellstes Geschäftsjahr - 4 | IF (1+'ZPJAHR'-'ZPJAHRE')> 4 THEN 'ZPJAHR' -4 ELSE 1999 |
ZPJR-05 | Aktuellstes Geschäftsjahr - 5 | IF (1+'ZPJAHR'-'ZPJAHRE')> 5 THEN 'ZPJAHR' -5 ELSE 1999 |
ZPJR-06 | Aktuellstes Geschäftsjahr - 6 | IF (1+'ZPJAHR'-'ZPJAHRE')> 6 THEN 'ZPJAHR' -6 ELSE 1999 |
ZPJR-07 | Aktuellstes Geschäftsjahr - 7 | IF (1+'ZPJAHR'-'ZPJAHRE')> 7 THEN 'ZPJAHR' -7 ELSE 1999 |
ZPJR-08 | Aktuellstes Geschäftsjahr - 8 | IF (1+'ZPJAHR'-'ZPJAHRE')> 8 THEN 'ZPJAHR' -8 ELSE 1999 |
ZPJR-09 | Aktuellstes Geschäftsjahr - 9 | IF (1+'ZPJAHR'-'ZPJAHRE')> 9 THEN 'ZPJAHR' -9 ELSE 1999 |
ZPJR-10 | Aktuellstes Geschäftsjahr - 10 | IF (1+'ZPJAHR'-'ZPJAHRE')> 10 THEN 'ZPJAHR' -10 ELSE 1999 |
ZPJR-11 | Aktuellstes Geschäftsjahr - 11 | IF (1+'ZPJAHR'-'ZPJAHRE')> 11 THEN 'ZPJAHR' -11 ELSE 1999 |
ZPJR-12 | Aktuellstes Geschäftsjahr - 12 | IF (1+'ZPJAHR'-'ZPJAHRE')> 12 THEN 'ZPJAHR' -12 ELSE 1999 |
Die dahinterliegende Logik besagt, dass bei jeder Variable geprüft werden soll, ob eine Ausgabe noch erforderlich ist (der Berichtszeitraum sich also noch über die entsprechende Jahre zwischen ZPJAHR und ZPJAHRE erstreckt, oder ob alternativ das Jahr 1999 als Dummy verwendet werden soll.
Verwendung der Variablen im Report Painter
Nachdem diese Variablen definiert worden sind, können diese auch als Spalten im Reportpainter genutzt werden.
Hierfür werden folgende Berichtsspalten in der Bibliothek 8A2 über die Basiskennzahl "Betrag in PCTR-Hauswährung" für das Merkmal Geschäftsjahr angelegt.
Geschäftsjahr (Variable) ZPJAHR und als Beschreibung &ZPJAHR so dass der Variablenwert als Spaltenbezeichnung ausgegeben wird.
Die oben beschriebene Einbindung der Spalte ZPJAHRE für das Endjahr ist obsolet, da durch Bezug der einzelnen Variablen automatisch ZPJAHRE ebenfalls im Bericht mit eingebunden wird und damit im Selektionsbild aufgezeigt wird.
In der nächsten Spalte wird das Merkmal Geschäftsjahr ebenfalls mit Variable markiert und die Variable ZPJAHRE zugewiesen. Hier wird als Beschreibung "&ZPJAHRE ausblenden" festgelegt.
Nachdem die Spalte angelegt wurde kann diese direkt markiert werden (auf die Spaltenüberschrift klicken) und über BEARBEITEN -> SPALTE -> AUSBLENDEN diese Spalte ausgeblendet werden.
Hierdurch wird diese Variable zwar im Selektionsbild erscheinen (um den Berichtszeitraum einzugrenzen) wird aber später in der Berichtsausgabe nicht erscheinen.
Als weitere Spalten legen wir dann für das Merkmal die Variablen ZPJR-01 bis ZPJR-12 mit entsprechender Bezeichnung (Kurz-, Mittel- und Langtext) von &ZPJR-01 bis &ZPJR-12 als einzelne Spalten an.
Insgesamt dürften nun im Report Painter 13 Spalten vorhanden sein, womit wir insgesamt auch 13 Jahre auswerten könnten. Sofern der Berichtszeitraum kürzer ist würde für die hinteren Tabellen kein Wert ausgegeben werden, da im Jahr 1999 (wir erinnern uns, dieses Jahr wurde in der Variable zugewiesen, wenn der Berichtszeitraum kürzer ist) keine Buchungen erfolgt sind.
Damit sind wir dem Berichtswunsch schon sehr nahe, allerdings sind leere Spalten eigentlich nicht sehr informativ. Daher können wir über:
FORMATIEREN-> BERICHTSLAYOUT
im Register Spalten festlegen über den Punkt Nullspaltenbehandlung bestimmen Nullspalten zu unterdrücken.
Fazit
Damit werden die leeren Spalten des Jahres 1999 nicht mehr angezeigt. Somit werden tatsächlich nur so viele Spalten ausgegeben, wie zwischen dem ältestens und den aktuellsten Geschäftsjahr liegen. Eine Ausnahme wäre nur der Fall, wenn mehr als 13 Jahre ausgewertet würden. Allerdings stellt sich auch die Frage, ob eine Jahresangebe von 99 Jahren außer bei bestimmten Gesellschaftsspielen als Altersangabe auch noch ein überschaubarer Zeitraum sein können. Insgesamt handelt es sich hierbei um einen sehr flexiblen Bericht, der sowohl für größere als auch kleinere Zeiträume geeignet ist.Ein weiteres Beispiel kann eine Variable für das Quartal sein. Hier wird nur mit Formelvariablen gearbeitet. Hierbei wird die Variable QUARTAL als Wertvariable definiert und die einzelnen Perioden des Quartals mit folgenden Formeln versehen:
Variable | Formel |
---|---|
QPER1 | ‘QUARTAL’ * 3 - 2 |
QPER2 | ‘QUARTAL’ * 3 - 1 |
QPER3 | ‘QUARTAL’ * 3 |
Gerade bei Zeiträumen zeigen solche Variablen einige neue und sicherlich spannende Möglichkeiten auf. Innerhalb des Berichtes müssen dann nur noch die Spalten mit den Variablen QPER1 bis QPER3 versehen werden und beim Berichtsaufruf wird dann im Selektionsbild die Variable QUARTAL abgefragt. In dieser Logik könnte die Variable ZPJAHRE, die wir im Report Painter Bericht ausgeblendet hatten, auch einfach nicht verwendet werden, da die anderen Variablen direkten Bezug zu ihr nehmen und damit diese über eine indirekte Definition ebenfalls abgefragt wird. Als Bonus könnte im Report dann auch noch die Summe von QPER1 bis QPER3 ermittelt werden und das Ergebnis des selektierten Quartals im Bericht mit ausgegeben werden.
Erweiterung für Gemeinkostencontrolling
Sollen statt Profit-Center lieber Innenaufträge oder Kostenstellen (bspw. über die Bibliothek 6o1 "Innenaufträge" oder 1VK "Kostenstellen - Vollkostenrechnung" ausgewertet werden bieten sich vergleichbare Variable mit Bezug auf die Tabelle CCSS "Berichtstabelle Gemeinkostencontrolling" und den Feld GJAHR "Geschäftsjahr" an. Entsprechend bietet es sich an die Variablen dann statt mit ZP für Profit-Center-Rechnung mit ZK oder ZI (gemeinsamer Nenner wäre wohl ZG für Gemeinkosten) beginnen zu lassen. Zwar beziehen sich die Variablen auf eine Tabelle, da diese aber zur reinen Wertermittlung herangezogen werden und dann in einen Merkmal der passenden Berichtstabelle verwendet werden könnten aber auch die ZP* Variablen in den anderen Bibliotheken verwendet werden.Im Buch »Berichtswesen im SAP®-Controlling« bin ich ausführlich auf dies Thema eingegangen.
(01. Juni 2017) Paperback ISBN: 9783960127406
Für 19,95 € direkt bestellen
Oder als SAP Bibliothek-Flatrate *
Oder bei Amazon *
Hinweis:
Eine kurze Einführung in das Thema Report Painter und Report Writer habe ich im Artikel "Grundlagen Kurzeinführung und Handbuch Report Painter Report Writer" beschrieben und hoffe Ihnen hier eine Einführung ins Thema bieten zu können.
ein Angebot von Espresso Tutorials
unkelbach.link/et.books/
unkelbach.link/et.reportpainter/
unkelbach.link/et.migrationscockpit/
Diesen Artikel zitieren:
Unkelbach, Andreas: »Mehrjahresvergleich im ReportWriter/Painter mit variabler Spaltenanzahl je Jahr dank Variablen« in Andreas Unkelbach Blog (ISSN: 2701-6242) vom 25.10.2014, Online-Publikation: https://www.andreas-unkelbach.de/blog/?go=show&id=564 (Abgerufen am 26.12.2024)
14 Kommentare - Permalink - SAP
Artikel datenschutzfreundlich teilen
🌎 Facebook 🌎 Twitter 🌎 LinkedIn