18:26 Uhr
SAP Query innerhalb des SAP Moduls PSM FM beziehungsweise Haushaltsmanagement
Im Rahmen einer SAP Schulung durch Martin Peto (Mitautor des Buch "Reporting im SAP-Finanzwesen: Standardberichte, SAP QuickViewer und SAP Query" welches ich etwas ausführlicher unter SAP Query Buch beschrieben habe) sind einige Eckpunkte zum Berichtswesen mit SAP Query und der Auswertung innerhalb des Moduls PSM-FM angesprochen worden. Die erlangten Kenntnisse habe ich in diesen Artikel festgehalten und betrachte diese als eine Ergänzung zur Einführung, die ich im Artikel "Grundlagen Kurzeinführung und Handbuch SAP Query" angefangen habe. Neben den empfehlenswerten Buch soll daher auch dieser Artikel einige Denkanstöße zur Nutzung von SAP Query bieten. Da ein besonderes Interesse an der Nutzung von SAP Query mit PSM-FM bestanden hat, sind auch die hier aufgelisteten Erkenntnisse in der Hauptsache mit Bezug zum "public sector management" aufgeführt.
Im Einzelnen konnte ich dabei folgende Punkte aus der Schulung (und der gedanklichen Weiterentwicklung) mitnehmen
- Verwendung der Logischen Datenbank FMF
- Stammdatentabellen innerhalb des SAP Modul PSM-FM
- Zusatzfeld ZAUFNR um die Stammdatentabelle FMFINCODE als Zusatztabelle im Infoset einzufügen
- Gedanklich lässt sich dieses Feld natürlich wunderbar für die Auswertung der Merkmale der Klassifizierung von Haushaltsfond verwenden
- Variablentyp bei Varianten waren für mich ebenfalls neu, was bei Selektionsvarianten gleich eine neue Dynamik reinbringen kann
- Die Möglichkeiten des Verzicht auf den grafischen Painter für Query, waren ebenfalls interessant, auch wenn ich wohl weiterhin mit der grafischen Oberfläche arbeiten werde
- Eine gute Möglichkeit des Coding im Zusatzfeld wurde anhand des Soll/Haben Kennzeichen innerhalb der Tabelle BSEG erläutert. Hier hatte ich damals tatsächlich mit lokalen Feldern und Formeln gearbeitet und bin nicht auf die Idee gekommen, dieses auf Zusatzfelder im Infoset umzustellen
- ... (sicherlich sind mir noch die ein oder andere Sache entfallen, die aber gerne als Kommentar ergänzt werden kann)
- Weitere Quellen und Literaturempfehlung
Logische Datenbank im Bereich PSM-FM
Bisher hatte ich eher mit den logischen Datenbanken BRF für die Finanzbuchhaltung oder ADA für die Anlagenbuchhaltung zu tun.Logische Datenbanken enthalten schon Verknüpfungen und können direkt als Grundlage für ein Infoset verwendet werden. Dieses hat den Vorteil, dass man nicht selbst erst einzelne Tabellenverknüpfungen erstellen muss. Die Struktur einer logischen Datenbank kann in der Transaktion SE36 eingesehen werden. Im Bereich HCM wären dieses bspw. PNP oder PCH während innerhalb des Rechnungswesen ggf. die Datenbanken ADA für die Anlegenbuchhaltung und BRF für FI Belege interessant sind.
Allerdings gibt es auch für das Modul PSM-FM eine vergleichbare Datenbank.
Innerhalb der logischen Datenbank FMF werden verschiedene Datenstrukturen mit Bewegungsdaten versorgt. Ein Blick auf diese Datenbank mit der Transaktion SE36 kann hier tatsächlich hilfreich sein.
Neben den reinen Stammdaten können hier auch Bewegungsdaten (unter anderen Summensätze und Einzelposten von Jahresbudget oder Gesamtbudget ebenso ausgewertet werden, wie die Summensätze aus Einzelposten und Obligo.
Leider handelt es sich bei den meisten zugeordneten Tabellen nicht um transparente Tabellen die direkt ausgewertet werden können sondern um Strukturen, die zur Laufzeit gefüllt werden. Immerhin kann durch die Verwendung der logischen Datenbank hier auch eine Struktur ausgewertet werden, so dass neben der Auswertung der PSM-FM Daten über Rechercheberichte auch mit SAP Query eine Einzelauswertung erfolgen kann.
Stammdatentabellen im Modul PSM-FM
Neben der Auswertung der logischen Datenbank kann aber auch der Zugriff auf einzelnen Tabellen im Bereich PSM-FM hilfreich sein.Hierzu sind folgende transparente und damit direkt auswertbare Tabellen hilfreich, insbesondere da diese auch mit anderen Tabellen in Infosets verknüpft werden können.
- FMFINCODE
"FIFM: Finanzierungscode" - hier sind die Stammdaten der Fonds inklusive Finanzierungszweck als Gegenstück zum CO Innenauftrag zu finden - FMFCTR
"Stammsatz der Finanzstelle" - hier sind die Stammdaten der Finanzstelle als Gegenstück zur Kostenstelle zu finden - FMCI und FMCIT
"Fiannzpositionen Stammdaten" und "Finanzpositionen Texte" - und damit die Stammdaten der Finanzpositionen als Gegenstück zum Sachkonto oder der Kostenart zu finden - AUSP
"Ausprägungswerte der Sachmerkmale" - für die Auswertung der Merkmale der Klassifizeriung (wie im Artikel "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM" beschrieben). - JEST
In dieser Tabelle werden die Systemstatus von einzelnen Objekten festgehalten. Hierdurch kann zum Beispiel ausgewertet werden, ob der CO Innenauftrag gesperrt ist. Auf dieses Thema bin ich im Artikel "SAP Query ABAP Coding im Zusatzfeld für Verknüpfung Innenauftrag und Fond bzw. Finanzierungszweck oder auch Status GESPERRT bei Innenaufträgen" näher eingegangen.
Verknüpfung der Tabellen FMFINCODE und AUFK
Während ich in meiner Artikelserie:
- "SAP Query ABAP Coding im Zusatzfeld für Verknüpfung Innenauftrag und Fond bzw. Finanzierungszweck oder auch Status GESPERRT bei Innenaufträgen"
- "Query über verantwortliche Kostenstelle des Innenauftrag - Bestimmung der Lehreinheit im Fachbereich durch Teil der Kostenstellennummer"
- "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM"
- "Weitere Zusatzfelder im Infoset mit ABAP Coding zur Verwendung in SAP Query über die Tabellen AUFK und FMFINCODE"
Die beiden Tabellen AUFK und FMFINCODE lassen sich nicht verknüpfen, da die Feldlänge mit 10 bzw. 12 Zeichen nicht übereinstimmen. Daher wurde innerhalb des Infoset das Feld ZAUFNR als "Auftragsnummer 10 stellig" mit LIKE-Referenz (also den gleichen Eigenschaften von FMFINCODE-FINCODE angelegt.
Zusatzfeld ZAUFNR (Übernahme AUFK-AUFNR als FMFINCODE-FINCODE
Über die Schaltfläche Zusätze (F5) bzw. innerhalb der Transaktion SQ02 (Pflege des Infosets) über SPRINGEN-> ZUSÄTZE ZUM KNOTEN können eigene Felder definiert werden. Hierzu kann im Register Zusätze die Schaltfläche Anlegen ausgewählt werden. Es erscheint eine Maske in der der Name des Zusatzfeldes angegeben werden soll (im folgenden Beispiel ZAUFNR) und die Art der Zusatzinformation. Zur Auswahl stehen: Zusatzfeld, Zusatzstruktur und Coding. In unserem Beispiel soll ein Zusatzfeld mit den Namen ZAUFNR angelegt werden.Dieses hat folgende Eigenschaften: Langtext und Überschrift haben beide Auftragsnummer 10 stellig oder einfach Auftragsnummer erhalten. Die Formatangabe wurde über LIKE-Referenz idenitsch zum Feld FMFINCODE-FINCODEgehalten. Damit entspricht dieses Feld den Formatangaben in der Tabelle FMFINCODE (Typ C (Character) Länge 010 Ausgabenlänge 010).
Damit ist das Feld angelegt, hat jedoch nur eine Datendefinition aber noch keine eigene Daten (anders bei der Zusatztabelle, die sich direkt aus der Datenbank einen passenden Datensatz liest.
Nachdem ein Feld jedoch angelegt ist kann über die Schaltfläche "Coding zum Zusatz" ein passendes ABAP Coding für das Feld hinterlegt werden über das wiederum eine Datenbankabfrage erfolgen kann.
Das in meinen Augen clevere Coding beschränkt sich auf einen Einzeiler in dem dem Feld per Offset die Auftragsnummer aus der Tabelle AUFK zugewiesen wird.
Für eine achtstellige Projektnummer (Innenauftrag) lautet das Coding wie folgt:
Hierbei bedient sich das Coding der Technik eines Offsets.ZAUFNR = AUFK-AUFNR+4(8).
Durch die optionalen Angaben eines Offsets +<o> und eine Länge (<l>) direkt hinter dem Feldnamen <f>, wird der Teil des Felds, der auf Position <o>+1 beginnt und die Länge <l> hat, als eigenes Datenobjekt angesprochen. In unseren Fall wird also für die Variable ZAUFNR das Feld AUFK-AUFNR (wir erinnern uns die zwölfstellige Auftragsnummer) eingelesen und ab der vierten Stelle insgesamt acht Stellen eingelesen. Da in der Datenbank die Auftragsnummer mit führenden 0000 hinterlegt wird erhalten wir also statt des Datenbankwerte 000012345678 die tatsächliche Auftragsnummer 12345678.
Sollten Sie eine andere Länge bei den Aufträgen oder Fonds definiert haben ist das Coding natürlich entsprechend anzupassen.
Im Ergebnis haben wir nun das Feld ZAUFNR, welches die gleichen Eigenschaften wie das Feld FINCODE innerhalb der Tabelle FMFINCODE hat.
Zusatztabelle FMFINCODE ins Infoset übernehmen (Stammdaten Fond) aus ZAUFNR
Dieses Feld kann nun zur Einbindung einer Zusatztabelle genutzt werden.Über die Schaltfläche Zusätze (F5) bzw. über SPRINGEN-> ZUSÄTZE ZUM KNOTEN innerhalb der Transaktion SQ02 (Pflege des Infosets) kann nun eine Zusatztabelle eingefügt werden. Hierzu kann im Register Zusätze die Schaltfläche Anlegen ausgewählt werden.
Hierzu tragen wir die den Namen FMFINCODE und als Art der Zusatzinformation Zusatztabelle ein.
Hier ist es nun wichtig, dass Sie bei "Reihenfolge de Codeabschnitts" eine 2 eintragen, da natürlich erst das Feld ZAUFNR definiert sein soll, bevor Sie mit der Zusatztabelle arbeiten.
Nun erfolgt eine Abfrage über SELECT SINGLE * FROM FMFINCODE WHERE ...
in der folgedene (hervorgehobene) Bedingungen erfüllt sein sollen.
WHERE FIKRS = AUFK-BUKRS
da Finanzkreis und Buchungskreis identisch sind, können hier beide Felder sowohl in der Tabelle AUFK als auch FMFINCODE verwendet werden.
AND FINCODE = ZAUFNR
Hierdurch werden dann tatsächlich Fonds und Innenauftrag miteinander verknüpft und es steht die gesamte Tabelle FMFINCODE im Infoset zur Verfügung.
Merkmale der Klassifizierung durch Definition Feld OBJNFOND
Entsprechend einfacher ist auch die Übernahme dieser Auftragsnummer zur Definition des Feldes OBJNFOND um Merkmale der Klassifizierung zu übernehmen.Auf die dahinter liegende Methode bin ich schon im Artikel "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM" eingegangen.
Allerdings muss jetzt das Zusatzfeld OBJNFOND nicht mehr per SHIFT aus der Auftragsnummer definiert werden sondern kann im Codeabschnitt 2 wie folgt definiert werden.
Per ABAP zwei Strings mit Leerzeichen verknüpfen
Nun haben wir also die Nummer des Fonds (sofern ein entsprechender Fond passend zum Innenauftrag angelegt worden ist im Feld ZAUFNR angelegt. Dieses muss nun mit "FIK " verknüpft werden.Die Abap Anweisung
verkettet getrennte Zeichenfolgen zu einer Zeichenfolge. Hier wäre nun eine Verkettung des Finanzkreises 'FIK ' mit anschliessenden Leerzeichen und des Fonds denkbar. Allerdings werden Leerzeichen innerhalb der Strings ignoriert. Bei Werten des Typs C (Character) besteht aber die Möglichkeit diese Anweisung um den Parameter RESPECTING BLANKS zu erweitern. Dieses ist nur bei Zeichenketten auch Leerzeichen berücksichtigt werden. Ohne diesen Parameter werden Leerzeichen (Zeichen 32 im ASCII Code) einfach entfernt.CONCATENATE altenstring neuenstring INTO altenstring.
Zusatzfeld OBJNFOND aus ZAUFNR ableiten
(Finanzkreis und Fond verknüpfen entsprechend AUSP-OBJEK)
Entpsprechend wird ein weiteres Zusatzfeld angelegt. Dieses Feld erhält die Bezeichnung OBJNFOND und per LIKE die gleichen Eigenschaften wie das Feld AUSP-OBJEK.Darüberhinaus wird im Feld "Reihenfolge des Codeabschnittes" statt wie bisher automatisch eine 1 eine 2 eingetragen. Hierdurch wird das Coding zum Feld OBJFOND nach erfolgreicher Wertzuweisung für das Feld ZAUFNR durchgeführt.
Nachdem ein Feld angelegt ist kann über die Schaltfläche "Coding zum Zusatz" ein passendes ABAP Coding für das Feld hinterlegt werden um das Zusatzfeld OBJNFND mit den Finanzkreis zu verknüpfen.
Hierzu ist folgende kurze Codezeile erforderlich:
Nun ist im Zusatzfeld OBJNFOND der entsprechende Fond entsprechend der Objektnummer im Tabellenfeld AUSP-OBJEK gespeichert. Entsprechend hilfreich ist hier die Definition des Feldes ZAUFNR.CONCATENATE 'FIK ' ZAUFNR INTO OBJNFOND RESPECTING BLANKS.
Nun können die einzelnen Merkmale der Klassifizierung wie im verlinkten Artikel "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM" zur Klassifizierung eingebunden werden.
Das Ergebnis ist identisch zur bisherigen Methode, allerdings erscheint es mir etwas weniger aufwändig und natürlich durch die Einbindung der Stammdatentabelle FMFINCODE als Zusatztabelle auch eleganter.
Dynamische Datumsberechnung bei Varianten
Weniger im Bereich Query selbst dafür aber in Verbindung mit der Nutzung von Varianten interessant war die Möglichkeit bei Selektionsvarianten bei Varaiblen diese als Dynamisch im Feld Variablentyp zu definieren. Hierdurch besteht bspw. die Möglichkeit über eine Variable das aktuelle Tagesdatum +30 Tage definiert werden.Auch sonst war der kurze Überblick über verschiedene Standardberichtstool im Bereich FI ein Vorteil der Schulung ebenso wie im Buch
Deaktivierung des grafischen Query Painter
Hier war der Vorteil der Schulung, dass tatsächlich nicht mit den grafischen Query Painter sondern mit der "alten" Ansicht gearbeitet wurde.Hierdurch konnten Sortierreihenfolgen und Formatierungen insbesondere für die ABAP Liste statt ALV einige Formatierungen und Zwischensummen innerhalb der Grundliste aktiviert werden. Gerade durch mehrere Ebenen ist es hier ein Vorteil, dass noch weitere Informationen ausgegeben werden können. In der Praxis (oder vielmehr in meinen Alltag) verwende ich jedoch tatsächlich eher die Query im Format einer ALV, so dass ich problemlos die Daten exportieren kann und so nur die Spaltenüberschriften als Information verwende.Trotzdem gibt es hier eine einfache Möglichkeit einzelne Datenfelder in unterschiedliche Zeilen aufzuteilen, oder Sortierkriterien festzulegen. Auch die Summenbildung kann hier sehr feinstufig festgelegt werden. Hier sind die Gruppenstufen der Grundliste einen Blick wert, aber auch die Gruppenstufentexte oder Kopf- und Fußzeilen sind ein Thema, was Berichte für die Ausgabe direkt am Screen hilfreich macht. Ferner können hier auch die Überschriftentexte auf einfache Weise angepasst werden. Nebenbei ist hier auch die Empfehlung die Überschriften schon im Infoset anzupassen. Ein Vorteil bei der Gestaltung dieser einzelnen Elemente und Formatierungen allgemein ist es auch die im System schon vorhandenen Berichte ein wenig besser zu verstehen.
Dieses ist vermutlich vergleichbar mit Kollegen, die immer die Excelintegration aktiviert haben und somit zum Beispiel bei Report Writer / Report Painter Berichten keine Zusatzinformationen sondern das Ergebnis ohne Kopfzeilen und Co dargestellt bekommen.
Coding in Zusatzfeldern
Ein weiterer, eigentlich einfacher Punkt ist in der Schulung die Idee gewesen das Soll / Haben Kennzeichen nicht nur in der Query zur Darstellung des Wertes zu verwenden. So habe ich im Artikel "Query FI Einzelposten als Belegjournal - Belegsegment (BSEG) und Belegkopf (BKPF) verknüpfen" beschrieben, wie anhand eines lokalen Feldes anhand des Soll-/Haben-Kennzeichen - SHKZG (BSEG-SHKZG) und des Betrag in Hauswährung - DMBTR (BSEG-DMBTR) nicht erst in der Query über ein lokales Feld und entsprechender Formeln, wie zum Beispiel :1. Feld (Gebuchter Wert)
Kurzbezeichnung: WERT
Feldbezeichnung: gebuchter Wert
Überschrift: gebuchter Wert
gleiche Eigenschaften wie: DMBTR
Berechnungsvorschrift:
Hier wird eine komplexe Berechnung mit folgenden Bedingungen hinterlegt:
- Bedingung: SHKZG = 'S'
Formel: 1 * DMBTR - Bedingung: SHKZG = 'H'
Formel: -1 * DMBTR
IF BSEG-SHKZG = 'H'.
BETRAGVZ = BSEG-DMBTR * -1.
ELSE
BETRAGVZ = BSEG-DMBTR.
ENDIF.
Damit steht das Betragsfeld mit "richtigen" Vorzeichen unter Berücksichtigung des Soll/Haben Kennzeichen für alle Query zur Verfügung und muss nicht jedes Mal aufs Neue berechnet werden.
Literaturempfehlung und weitere Quellen
Wie bereits erwähnt haben Martin Peto und Katrin Klewinghaus zum Thema SAP Query auch folgendes Buch geschrieben.Themen sind unter anderen
- SAP-Informationssysteme im Überblick
- Standard-Reporting mit SAP List Viewer (ALV)
- Einsatzmöglichkeiten und Grenzen des SAP QuickViewers
- Aufbau von SAP Queries mit Praxisbeispiel
Sollte sich noch jemand für das angesprochene Buch interessieren, so ist dieses auch auf meiner Unterseite zum Buch "Reporting im SAP-Finanzwesen: Standardberichte, SAP QuickViewer und SAP Query" beschrieben und kann hier auch bestellt werden.
Daneben kann ich aber auch das Buch von Stephan Kaleske (bzw. in der neuen Auflage auch von Karin Bädekerl, Heinz Forsthuber empfehlen.
ISBN: 978-3836218405
Eine ausführlichere Beschreibung dieses Buch ist auf der Seite "Praxishandbuch SAP Query-Reporting" zu finden. Dieses Buch geht sogar noch ein wenig tiefer in die Materie SAP Query ein und eignet sich damit hervorragend als Nachschlagewerk für fortgeschrittene Anwendende.
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.
ein Angebot von Espresso Tutorials
unkelbach.link/et.books/
unkelbach.link/et.reportpainter/
unkelbach.link/et.migrationscockpit/
Diesen Artikel zitieren:
Unkelbach, Andreas: »SAP Query innerhalb des SAP Moduls PSM FM beziehungsweise Haushaltsmanagement« in Andreas Unkelbach Blog (ISSN: 2701-6242) vom 12.11.2015, Online-Publikation: https://www.andreas-unkelbach.de/blog/?go=show&id=660 (Abgerufen am 23.11.2024)
Permalink - SAP
Artikel datenschutzfreundlich teilen
🌎 Facebook 🌎 Twitter 🌎 LinkedIn