09:09 Uhr
Selektionsvariablen in Spalten/Zeile ausgegeben
Innerhalb eines ReportWriter Berichtes werden über Variablen festgelegt bspw. "6-GJAH1" für Geschäftsjahr 1. Nun soll in der Bezeichnung dieser Spalte/Zeile der Variablenwer ausgegeben werden.
Lösung:
Vorangestellt mit & können diese Variablenwerte direkt in der Bezeichnung ausgegeben werden. Dieses funktioniert dann bspw. durch die Bezeichnung "&6-GJAH1".
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.
Berichtswesen im SAP®-Controlling (📖)
Für 19,95 € direkt bestellen
Oder bei Amazon ** Oder bei Autorenwelt
19:47 Uhr
SAP Query: Systemstatus CO Innenauftrag
Über die Transaktion KOK5 (Stammdatenliste Innenaufträge) ist es möglich auch das Feld Status eines Innenauftrages auszuwerten und so eine Liste aller gesperrten Innenaufträge zu erhalten. Leider ist der Auftragsstatus "gesperrt" nicht als Selektionsparameter bei der KOK5 vorhanden, so dass hier alle Aufträge ausgwertet werden müssen und später selektiert werden muss. Dieses erhöht zum Einen die Dauer der Auswertung und zum anderen werden bei der KOK5 nur bis zu 10.000 Innenaufträge angezeigt.
Dennoch möchte ich hier noch, bevor ich auf eine Lösung eingehe, auf die im Artikel "Selektionsvariante KOK5 und Statusselektionsschemata zur Auswertung gesperrter Innenaufträge" vorgestellte Vorgehensweise verweisen.
Ein weiterer Nachteil ist, dass in der Spalte Sytemstatus-Zeile alle bisher den Auftrag erteilten Statusausprägungen ausgewiesen wird.
Diese Daten stammen intern aus der Struktur MKAUF und werden im Feld SYSST ausgewiesen. Der Nachteil ist, dass hier ein Eintrag zum Beispiel "FREI ABRV SPER" genannt werden kann.
Lösungsansatz:
Auch hier hilft die Objektnummer des Innenauftrages weiter, da innerhalb der Tabelle JEST jeder Status eines SAP Objektes festgehalten wird. Somit kann hier eine Verknüpfung zu den Stammdaten der Innenaufträge erstellt werden.
Der Nachteil ist, dass hier in mehreren Zeilen die einzelnen Status eines Auftrages festgehalten werden. Daher ist es sinnvoll, sich hier ebenfalls eine SAP Query zu bedienen.
Hinweis:
Eine kurze Einführung in das Thema SAP Query habe ich im Artikel
"Grundlagen Kurzeinführung und Handbuch SAP Query" beschrieben und hoffe Ihnen hier eine Einführung ins Thema bieten zu können.
1. Infoset definieren
Tabellen:
AUFK - Auftragsstammdaten
JEST - Einzelstatus pro Objekt
TJ02 - Systemstatus
Verknüpfungen:
AUFK-OBJNR <-> JEST-OBJNR
Wie unter ABRV beschrieben wird hier wiederum die Objektnummer verwendet um die Tabellen zu verknüpfen.
In der Tabelle JEST ist nun der vorhandene Status als Nummernfeld für jedes Objekt hinterlegt. In der Tabelle TJ02 erhalten wir allerdings auch die Bezeichnung dieses Status, so dass dieses Feld gerade bei der späteren Selektion sehr hilfreich ist.
Entsprechend legen wir als weitere Verknüpfung folgende an:
JEST-STAT <-> TJ02-ISTAT
Somit kann nachher in der Query auch über den Text bzw. die Beschreibung des Status verwendet werden.
2. Query definieren
Auch hier werden die Felder wieder in der Ausgabereihenfolge angegeben mit der Kennzeichnung L als Listenfeld und S als Selektionsfeld.
Auftragsstammdaten AUFK
Innenauftragsnummer AUFK-AUFNR (S,L)
Kurztext AUFK-KTEXT (L)
Name des letzten Änderers AUFK-AENAM (L)
Änderungsdatum des Auftragsstamms AUFK-AEDAT (L)
Einzelstatus pro Objekt JEST
Einzelstatus eines Objekts JEST-STAT (L)
Kennzeichen: Status inaktiv JEST-INACT (S)
Dieses Feld Status inaktiv, ist als Selektion wichtig, da eine einmal zugewiesene Sperre auch wieder deaktiviert werden kann. Daher wird dieses als weiteres Selektionsfeld mit angegeben.
Systemstatus TJ02
Systemstatus TJ02-ISTAT (S)
Durch Verwendung des Systemstatus aus der Tabelle TJ02 wird in der F4 Auswahlhilfe der Query dann auch die Beschreibung ausgegeben.
Zusatzfeld bzw. Textfeld
Zusatzfeld:
"Text:Systemstatus" TEXT_TJ02_ISTAT (L)
Handhabung der Query
Zur Handhabung der Query können nun alle Innenaufräge ausgewertet werden. Das Feld "Kennzeichen Status inaktiv" sollte auf BLANK oder ungleich X gesetzt werden (durch die Selektionsoptionen). Ferner kann hier der Status: I0043 für gesperrt
gewählt werden, so dass alle derzeit aktiv gesperrten Innenaufträge des Systems ausgewertet werden können.
Alternative: Systemstatus in einer Zeile je Auftrag ausgeben
Der Nachteil dieser Query ist, dass wenn kein Systemstatus vorselektiert wurde je Status eine extra Zeile pro Innenauftrag ausgegeben wird.Im Artikel "SAP Query ABAP Coding im Zusatzfeld für Verknüpfung Innenauftrag und Fond bzw. Finanzierungszweck" wird alternativ eine Methode beschrieben in der in der Stammdatenliste je Innenauftrag ein Zusatzfeld GESPERRT bei gesperrten Innenaufträgen mit ausgegeben wird. Dieses ist natürlich auch für andere Phasen eines Innenauftrages möglich.
23:18 Uhr
Query Abrechnungsvorschriften Innenauftrag
Für die Auftragsabrechnung werden innerhalb der Innenauftragsstammdaten Abrechnungsvorschriften für einzelnen Innenaufträge gepflegt. Diese können über die Transaktion KOSRLIST_OR Abrechnungsvorschriften (Rechhnungswesen->Controlling->Innenaufräge->Infosystem->Berichte zu Innenaufträgen->Stammdatenverzeichnis) ausgwertet werden.
Hier können für jeden Innenauftrag unter Position folgende Daten mit angeben werden:
- Empfänger
- Kurztext Empfänger
- Prozent
- Abrechnungsart
- Abrechnungsvorgang
- Version
- Gültig bis Jahr
Grundsätzlich ist diese Transaktion zur Kontrolle von gepflegten Abrechnungsvorschriften hilfreich. Der Nachteil ist hier in Form der Berichtsdarstellung.
Innerhalb des Berichtes werden als Kopfzeile der Innenauftra und auf einzelnen Positionen die entsprechenden Abrechnungsregeln ausgegeben. Ein Export
oder Vergleich gestaltet sich daher als recht schwierig.
Lösungsansatz:
Auch die Abrechnungsvorschriften sind in einer enstprechenden Tabelle hinterlegt.
Die Aufteilungsregeln der Abrechnungsvorschriften für die Auftragsabrechnung sind hierbei in der Tabelle COBRB gespeichert.
Hier werden in einzelne Tabellenzeilen die entsprechenden Abrechnungsempfänger hinterlegt. DIese werden entweder als Objektnummer in den Felder REC_OBJNR1 bzw. REC_OBJNR2 gespeichert können aber auch in den Feldern KOSTL und AUFNR entnommen werden.
Im vorliegenden Fall erfolgt eine Abrechnung je nach Ursprungszuordnung auf eine Kostenstelle oder Innenauftrag.
Lösung:
Entsprechend bietet sich eine Query über die beiden Tabellen
1.) Infoset definieren
AUFK - Auftragsstammdaten
COBRB - Aufteilungsregeln Abrechnungsvorschrift Auftragsabrechnung an.
Hier sollte folgende Verknüpfung definiert werden.
AUFK-OBJNR <-> COBRB-OBJNR
Das Feld OBJNR hat in Tabellen eine besondere Funktion, da hier unterschiedliche Kontierungsobjekte festgehalten werden können. So werden beispielsweise Innenaufträge als OR* gespeichert, so dass hier eine entsprechende Verknüpfung erfolgen kann.
2. Query definieren
Auch hier weden die Felder wieder in der Ausgabereihenfolge angegeben mit der Kennzeichnung L als Listenfeld und S als Selektionsfeld.
Auftragsstammdaten AUFK
Auftragsnummer (L,S) AUFK-AUFNR
Kurztext (L) AUFK-KTEXT
Aufteilungsregeln Abrechnungsvorschrift Auftragsabrechnung COBRB
Version (L,S) COBRB-VERSN
Kontierungstyp (L) COBRB-KONTY
Empfangende Kostenstelle (L) COBRB-KOSTL
Auftragsnummer (L) COBRB-AUFNR
Abrechnungsart (L) COBRB-PERBZ
Ursprungszuordnung (L) COBRB-URZUO
Gültig ab Periode (L) COBRB-GABPE
Gültig ab Jahr (L) COBRB-GABJA
Gültig bis Periode (L) COBRB-GBISP
Gültig bis Jahr (L) COBRB-GBISJ
3.) Vergleich mit Innenauftragsstammdatenliste
Diese Liste der Abrechnungsvorschriften kann dann entweder mit der Stammdatenverzeichnis Aufträge (Transaktion KOK5) oder der Tabelle COAS oder einer Query (vergleichbar des vorherigen Infosets) verglichen werden, so dass hier durch einen Vergleich der erstellten Query und der vorhandenen Innenaufträge noch zu pflegende Innenaufträge erkannt werden können.
Für die Querylösung der Innenauftragsstammdaten bieten sich folgende Felder aus den Infoset über die Tabellen AUFK, CSKS, CSKT, CEPC und CEPCT an.
Auch hier weden die Felder wieder in der Ausgabereihenfolge angegeben mit der Kennzeichnung L als Listenfeld und S als Selektionsfeld.
Auftragsstammdaten AUFK
Auftragsnummer (L,S) AUFK-AUFNR
Kurztext (L) AUFK-KTEXT
Verantwortliche Kostenstelle (L,S) AUFK-KOSTV
Kostenstellentexte CSKT
Allgemeine Bezeichnung (L) CSKT-KTEXT
Auftragsstammdaten AUFK
Profitcenter (L,S) AUFK-PRCTR
Profit-Cener-Stammdaten Texte
Allgemeine Bezeichnung (L) CEPCT-KTEXT
Auftragsstammdaten AUFK
Kalkulationsschema (L) AUFK-KALSM
ACHTUNG:
Sofern es bei der Beschreibung der Kostenstellen oder Profit-Center Änderungen in der Bezeichnung gab, sind diese in den Tabellen CSKT und CEPCT mehrfach vorhanden. Hier werden dann auch die Auftragsstammdaten mehrfach mit angegeben. Entsprechend sollte ein Gültig Bis Feld als Selektionsfeld für die Bezeichnungen gewählt werden, oder alternativ die Bezeichnungen aus den Tabellen CPCT und CSKT weg gelassen werden.
Erweiterung:
Das Thema Abrechnungsvorschriften ist im Artikel "Abrechnungsvorschriften von Innenaufträgen auf identische verantwortliche Kostenstelle und empfangende Kostenstelle per Query mit Ampelfunktion prüfen" erneut aufgegriffen worden und hier ein wenig ausführlicher behandelt worden.
Hinweis:
Eine kurze Einführung in das Thema SAP Query habe ich im Artikel
"Grundlagen Kurzeinführung und Handbuch SAP Query" beschrieben und hoffe Ihnen hier eine Einführung ins Thema bieten zu können.
Unkelbach.expert - Ihr Experte für Controlling und Berichtswesen mit SAP
Aktuelle Termine zum Online-Training (Herbstkurse 2026) finden Sie hier unter:
"Grundlagen Datenmigration in SAP S/4HANA mit Migrationscockpit und Migrationsobjektmodellierer"
"Rechercheberichte mit SAP Report Painter"
08:33 Uhr
Query Stammdaten CO Kontrolle Verantwortliche
Im Rahmen der Stammdatenpflege beziehen sich die Innenaufträge über die verantwortliche Kostenstelle und das zugeordnete Profit-Center im Bereich der Verantwortlichen aufeinander, so dass für die Kostenstelle/das Profit-Center die Verantwortung identisch zum Innenauftrag ist.
Lösungsansatz:
Wie unter SAP Query Stammdaten PSM / CO Innenauftrag beschrieben würde sich eine Auswertung innerhalb der CO Tabellen anbieten.
Hierzu werden folgende Schritte erforderlich.
1.) Infoset definieren
Innerhalb der Transaktion SQ02 wird folgendes Infoset definiert. Hierfür wird als Datenquelle ein Tabellen-Join über Tabelle AUFK angelgt.
Es werden folgende Tabellen miteinander in Beziehung gesetzt:
AUFK: Auftragsstammdaten
CSKS: Kostenstellenstammsatz
CSKT: Kostenstellenelemente (für die Texte)
CEPC: Stammdatentabelle von Profit Centern
CEPCT: Profit-Center-Stammdaten Texte
Verknüpfungsbedingungen:
Die vorgeschlagenen Verknüpfungsbedingungen seitens SAP sollte hier wieder entfernt werden und folgende Verknüpfungsbedingungen definiert werden.
Folgende Tabellenfelder werden hierbei miteinander verknüpft:
AUFK-KOSTV <-> CSKS-KOSTL
Hierdurch wird die Verantwortliche Kostenstelle des Innenauftrages mit den Stammdaten der Kostenstellen verknüpft.
CSKS-KOSTL <-> CSKT-KOSTL
Hierdurch werden die Stammdaten der Kostenstelle mit der Bezeichnung der Kostenstelle verknüpft.
AUFK-PRCTR <-> CEPC-PRCTR
Hierdurch wird das Profitcenter des Innenauftrages mit den Stammdaten der Profit-Center verknüpft.
CEPC-PRCTR <-> CEPCT-PRCTR
Hierdurch werden die Stammdaten der Profit-Center mit der Bezeichnung der Profit-Center verknüpft.
Damit sind alle Verknüpfungen der Tabellen erfolgt. Der Einfachheit halber können nun alle Feldgruppen/Datenfelder übernommen werden. Dieses hat den Vorteil, dass dieses Infoset auch für weitere Queries zur Verfügung steht. Alternativ könnte man auch nur die notwendigen Felder übernehmen. Innerhalb der Query können dann die Felder auch wieder eingeschränkt werden.
1.) Query definieren
Innerhalb der Query werden nun auf folgende Felder der einzelnen Tabellen Zugriff genommen. Bzw. in der Grundliste zugewiesen. Hierbei ist L als Listenfeld und S als Selektionsfeld zu verstehen.
Die Felder werden hier in der Reihenfolge angeben, wie diese danna uch in der Query ausgegeben werden sollen:
Auftragsstammdaten AUFK
Auftragsnummer (L,S) AUFK-AUFNR
Kurztext (L) AUFK-KTEXT
Verantwortliche Kostenstelle (S) AUFK-KOSTV
Verantwortlicher (L) AUFK-USER2
Profitcenter (S) AUFK-PRCTR)
Kostenstellenstammdaten CSKS
Kostenstelle (L) CSKS-KOSTL
Kostenstellentexte CSKT
Allgemeine Bezeichnung (L) CSKT-KTEXT
Beschreibung (L) CSKT-KTEXT
Kostenstellenstammdaten CSKS
Verantwortlicher (L) CSKS-VERAK
Stammdatentabelle von Proftitcenter CEPC
Profitcenter (L) CEPC-PRCTR
Profit-Center-Stammdaten Texte (CEPCT)
Allgemeine Bezeichnung (L) CEPCT-KTEXT
Langtext (L) CEPCT-LTEXT
Stammdatentabelle von Proftitcenter CEPC
Verantwortlicher des Profitcenter (L) CEPC-VERAK
Damit sind die Grundfelder schon einmal definiert und die Query kann pronzipiel gestartet werden.
Erweiterung der Query
a) Lokales Feld anlegen / Formel
Ziel der Auswertung soll jedoch sein, dass hier auch eine Prüffunktion eingefügt wird, ob die Verantwortlichen identisch sind. Somit sollen also die Felder CEPC-VERAK, CSKS-VERAK und AUFK-USER2 miteinander verglichen werden. Ziel ist es hier entsprechende Symbole zu hinterlegen, wenn diese nicht übereinstimmen, über die dann in der Queryliste selektiert werden kann.
Hierzu gehen wir nicht in die Grundliste der Query (wo auch das Layoutdesign gepflegt wird) sondern wechselkn innerhalb der Querypflege mit nächstes Bild (F6) auf die Feldauswahl der Query.
Über
BEARBEITEN->KURZBEZEICHNUNG
kann für die einzelnen Felder eine Kurzbezeichnung eingestellt werden.
Nun werden rechts neben den Datenfeldern Eingabefelder für die Kurzbezeichnung angegeben.
Hier erhalten nun folgende Felder eine Kurzbezeichnung:
Bei den Auftragsstammdaten:
Verantwortlicher -> V_IA
Beim Kostenstellenstammsatz:
Verantwortlicher -> V_KS
Beim Stammdatentabelle von Profit Centern:
Verantwortlicher des Profit Centers -> V_PC
Diese Kurzbezeichnung sind notwendig, da wir auf diese dann Bezug nehmen, wenn wir ein eiegens Feld mit einer Formel anlegen.
Dieses geht über
BEARBEITEN->LOKALES FELD->ANLEGEN
Dieses Lokale Feld wird dann in der Feldgruppe angelegt, in der wir uns gerade befinden. Elegant wäre es natürlich, wenn wir im Infoset eine entsprechende leere Feldgruppe definiert hätten, es geht aber auch ohne
Das lokale Feld hat folgende Eigenschaften:
Kurzbezeichnung CHECKVERANT
Feldbezeichnung CheckVerant
Überschrift Checkverant
Da wir hier die Verantwortlichen kontrollieren wollen.
Innerhalb der Sachgruppe kann un die Feldgruppe des Infoset gelegt werden. Dieses ist dann der Bereich, wo das lokale Feld angelegt worden ist.
Als Feldeigenschaften könnten wir nun Textfelder, Rechnfelder etc. hinterlegen. In unseren Beispiel möchten wir als Eigenschaften allerdings IKONE hinterlegen. Über entsprechende Icons soll hier ein Unterschied ausgegeben werden. Hierzu legen wir eine Berechnungsvorschrift an. Dazu klicken wir auf "KOMPLEXE BERECHNUNG".
Nun können wir drei Bedingungen und eine sonstige Alternative angeben.
Dieses nutzen wir wie folgt:
Bedingung:
V_IA = V_KS AND V_IA = V_PC
Formel:
ICON_LED_GREEN
Wenn Verantwortliche des Innenauftrages mit Verantwortliche der Kostenstelle übereinstimmt UND Verantwortliche des Innenauftrages mit Verantwortliche des Profit-Center übereinstimmt ist alles in Ordnung und es soll eine grüne LED: so in Ordnung ausgegeben werden. Die Verfügbaren Ikons können über die untere Schaltfläche Ikonen ausgewählt werden.
Bedingung:
V_KS <> V_PC
Formel:
ICON_LED_YELLOW
Wenn die Verantwortliche der Kostenstelle mit der Verantwortlichen des ProfitCenter nicht übereinstimmt soll ein gelbes LED ausgegeben werden. Dieses wird als relativ unkritisch betrachtet.
Bedingung:
V_KS <> V_IA
Formel:
ICON_LED_RED
Als besonders kritisch wird betrachtet, wenn Verantwortliche der Kostenstelle nicht mit Verantwortliche des Innenauftrages übereinstimmt
Sonst:
ICON_LED_RED
Tritt irgendein anderer Fall auf, soll ebenfalls eine rote LED ausgegeben werden.
Sofern die Verantwortlichen in jeden Fall übereinstimmen sollen, kann natürlich auch die beiden mittleren Bedingungen weg gelassen werden. Als weitere Operatoren bieten sich neben AND auch OR an, sowie + - * und verschiedene andere Operatoren.
b) Berichtszuordnung
Durch die Auswertung dieser Query erhalten wir nun eine Liste mit den Stammdaten Innenauftrag, Kostenstelle und ProfitCenter. Sollten nun die Verantwortlichen nicht übereinstimmen müssten wir nun einzeln die entsprechende Objekte bearbeiten. Hier ist es aber möglich aus der Query direkt in die Stammdatenpflegetransaktion zu wechseln, wenn wir auf das Feld Auftragsnummer, Kostenstelle oder Profit-Center doppelklicken. Hierzu muss in der Querypflege eine Berichtszuordnung gepflegt werden.
Hierzu rufen wir wiederum über die SQ01 die Query für eine Änderung auf.
Über SPRINGEN->BERICHTSZUORDNUNG können Empfängerberichte definiert werden.
Über das „+“ (Zeile einfügen) können weitere Query eingefügt werden. Alternativ kann hier auch ein anderer Berichtstyp ausgewählt werden. Über "TR Transaktion" können hier auch die Stammdatenpflegetransaktionen hinterlegt werden.
Hier hinterlegen wir folgende Transaktionen:
KE52 Profit Center ändern
KS02 Kostenstelle ändern
KO02 Innenauftrag ändern
Nun wird die Berichtszuordnung gespeichert und auch die Query kann gespeichert und genutzt werden.
Hinweis:
Eine kurze Einführung in das Thema SAP Query habe ich im Artikel
"Grundlagen Kurzeinführung und Handbuch SAP Query" beschrieben und hoffe Ihnen hier eine Einführung ins Thema bieten zu können.
Unkelbach.expert - Ihr Experte für Controlling und Berichtswesen mit SAP
Aktuelle Termine zum Online-Training (Herbstkurse 2026) finden Sie hier unter:
"Grundlagen Datenmigration in SAP S/4HANA mit Migrationscockpit und Migrationsobjektmodellierer"
"Rechercheberichte mit SAP Report Painter"
12:28 Uhr
Parametertransaktion für Reporwriter
Auch hier bietet sich der einfache Weg über die Parametertransaktion an. Diese kann über die Transaktion SE93 angelegt werden.Hierzu sind folgende Einstellungen erforderlich:
Vorschlagswerte für Transaktion START_REPORT
D_SREPOVARI-REPORTTYPE
RW
D_SREPOVARI-REPORT
Berichtsgruppe
Hier kann die entsprechende Berichtsgruppe hinterlegt werden. Entsprechend würden auch alle in dieser Berichtsgruppe vorhandenen Reports ausgeführt werden.
D_SREPOVARI-VARIANT
Hier kann wiederum eine Selektionsvariante hinterlegt werden (bspw. Allgemein).
Ein weiteres Anwendungsbeispiele für Parametertransaktionen ist in folgenden Artikeln beschrieben: Daneben ist im Artikel "Transaktion anlegen (Report, Parameter) bspw. für SAP Query" der Unterschied zwischen Parameter und Reporttransaktion erläutert. Im Artikel "Kundeneigene Transaktionen zu Berichten in PSM FM Haushaltsmanagement zum Beispiel Belegjournal anlegen (Variantentransaktion)" ist darüber hinaus auch noch die Variantentransaktion erläutert. Wobei hierbei auch gleichzeitig anhand des Belegjournals in PSM-FM auch Varianten für Einzelpostenberichte erläutert werden, so dass direkt über eine Transaktion Einzelposten Personal oder Sachmittel ausgewertet werden können.
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.
Schnelleinstieg ins SAP®-Controlling (CO) – 2., erweiterte Auflage (📖)
Für 29,95 € direkt bestellen
Oder bei Amazon ** Oder bei Autorenwelt


Keine Kommentare - Permalink - SAP