Andreas Unkelbach
Werbung


Donnerstag, 12. November 2015
18:26 Uhr

SAP Query innerhalb des SAP Moduls PSM FM beziehungsweise Haushaltsmanagement

Nachdem im letzten Artikel "Grundlagen Kurzeinführung und Handbuch Report Painter Report Writer" ausführicher behandelt worden ist, soll hier das Thema SAP Query und die Nutzung im Haushaltsmanagement ausführlicher behandelt werden.

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 Ich denke, dass die in der Schulung angesprochenen Punkte tatsächlich hilfreich sind und sich die aufgezählten Punkte als Erweiterung sehr gut eignen. Entsprechend lehrreich könenn auch Schulungen neben Literatur sein und so die eigene Arbeitsweise noch ein Stück verbessern. Gerade der Schwerpunkt auf der Nutzung von SAP Query innerhalb der Rechnungswesenmodule hat hier doch einige gute Erweiterungen gebracht, auch wenn nicht alle Beispiele auf das Hochschulberichtswesen 1:1 übertragbar sind. Ansonsten sind für das Berichtswesen im Bereich PSM-FM weiterhin die im Artikel "PSM Haushaltsmanagement Budgetverwaltungssystem BCS oder klassische Budgetierung" ebenfalls erwähnten Anmerkungen zur Nutzung der Rechercheberichte erläutert.






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.



Verknüpfung der Tabellen FMFINCODE und AUFK

Während ich in meiner Artikelserie:
  1. "SAP Query ABAP Coding im Zusatzfeld für Verknüpfung Innenauftrag und Fond bzw. Finanzierungszweck oder auch Status GESPERRT bei Innenaufträgen"
  2. "Query über verantwortliche Kostenstelle des Innenauftrag - Bestimmung der Lehreinheit im Fachbereich durch Teil der Kostenstellennummer"
  3. "SAP Query - Auswertung Merkmale der Klassifizierung am Beispiel Fonds in PSM-FM"
  4. "Weitere Zusatzfelder im Infoset mit ABAP Coding zur Verwendung in SAP Query über die Tabellen AUFK und FMFINCODE"
teilweise einzelne Felder aus der Tabelle FMFINCODE einzeln übernommen habe (durch individuelles Coding je Feld), hatte Martin Peto die Idee die Tabelle FMFINCODE als Zusatztabelle einzubinden.Hierfür hat er ein Zusatzfeld ZAUFNR für die Übernahme der Auftragsnummer aus der Tabelle AUFK (Feld AUFNR)  welches als Feld mit 12 Stellen definiert ist in das zehnstellige Feld vergleichbar mit der Tabelle FMFINCODE (Feld FINCODE) für den Fond.

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:

ZAUFNR = AUFK-AUFNR+4(8).

Hierbei bedient sich das Coding der Technik eines Offsets.

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

CONCATENATE altenstring neuenstring INTO altenstring.

 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.

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:

CONCATENATE  'FIK ' ZAUFNR  INTO OBJNFOND RESPECTING BLANKS.

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.

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
der gebuchte Wert mit passenden Vorzeichen dargestellt wird, sondern auch direkt im Infoset ein Zusatzfeld (als Beispiel BETRAGVZ), dieses schon im Infoset anhand folgendes Coding verwirklicht.

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.

Reporting im SAP - Finanzwesen
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.

Praxishandbuch SAP Query-Reporting
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.




Hinweis: Aktuelle Buchempfehlungen besonders SAP Fachbücher sind unter Buchempfehlungen inklusive ausführlicher Rezenssionen und Bestellmöglichkeit zu finden.
Espresso Tutorial - die digitale SAP Bibliothek

Diesen und weitere Texte von finden Sie auf http://www.andreas-unkelbach.de


Keine Kommentare

Kommentieren?


Beim Versenden eines Kommentars wird mir ihre IP mitgeteilt. Diese wird jedoch nicht dauerhaft gespeichert (siehe auch XII. Fremde Nutzung / Kommentarfunktion in der Datenschutzerklärung).

Eine Rückmeldung ist entweder per Schnellkommentar oder (weiter unten) als normalen Kommentar möglich. Eine persönliche Rückmeldung (gerne auch Fragen zum Thema) würde mich sehr freuen.

Schnellkommentar (Kurzes Feedback, ausführliche Kommentare bitte unten als normaler Kommentar)

Name (sofern kein Name angegeben wird erscheint Anonym):


Normaler Kommentar

Name:

E-Mail (wird nicht veröffentlicht):

Homepage:

Kommentar:


Hinauf




Werbung



Logo Andreas-Unkelbach.de
© 2004 - 2018 Andreas Unkelbach
Gießener Straße 75,35396 Gießen,Germany
andreas.unkelbach@posteo.de
Andreas Unkelbach

Stichwortverzeichnis
(Tagcloud)


Aktuelle Infos (Abo)

Facebook Twitter Google+

»Schnelleinstieg ins SAP Controlling (CO)« und »Berichtswesen im SAP ® ERP Controlling«
Privates

Kaffeekasse 📖 Wunschliste