Andreas Unkelbach
Werbung
Dropbox Cloudspeicher mit Synchronisation


Mittwoch, 23. Oktober 2013
18:35 Uhr

Query FI Einzelposten als Belegjournal - Belegsegment (BSEG) und Belegkopf (BKPF) verknüpfen

Ausgangslage

Wie im Artikel Einzelposten FI Hauptbuch (Auswertung Buchungen Partnergesellschaft) beschrieben besteht die Möglichkeit der Auswertung von Einzelposten des Moduls FI durch eine Query über die Tabelle BSEG "Belegsegment Buchhaltung". Hier sind alle einzelnen Belepositionen der Buchungsbelege im SAP System hinterlegt.

Wie beschrieben wurden die absoluten Buchungswerte (ohne Vorzeichen) in Kombination mit den "Soll-/Haben-Kennzeichen" ausgewertet, so dass hier das Ergebnis (der gebuchte Wert) bei einer Habenbuchung negativ und bei der Sollbuchung positiv dargestellt wird. Dieses entspricht auch der Darstellung in Einzelpostenlisten.

Der Nachteil an der Verwendung der Tabelle BSEG ist, dass hier als Belegdatum lediglich das Feld Valutadatum vorhanden sind. Die Information über Belegdatum und Buchungsdatum ist im Belegkopf des Buchungsbeleg zu finden und wird in der Tabelle BKPF gespeichert.

Clustertabellen versus transparente Tabellen

Ein Join über die Tabellen BSEG und BKPF ergibt als Fehlermeldung den Hinweis, dass Pool- und Cluster-Tabellen nicht in einem Tabellen-Join verwendet werden können.

Bei der Tabelle BSEG handelt es sich um eine Clustertabelle, die dem Cluster RFBLG zugeordnet ist. Innehrlab eines Cluster werden Felder anderer Tabellen komprimiert in einer einzelnen Spalte gespeichert. Hierdurch ist eine Verwendung von Cluster-Tabellen ebenso wie Pool-Tabellen nicht in Joins möglich.
Clustertabellen sammeln hierdurch mehrere Einzeltabellen in einer Tabelle.

Die Einzelpostenbelege sind je nach Kontenarten in transparenten Sekundärtabellen (als Sekundärindizes) zu finden. Diese sind entsprechend schneller auszuwerten und können auch einzeln in einer Query verwendet werden.
Hierbei werden von der Art her Tabellen für ausgeglichene Posten (BSA*) und für offene Posten (BSI*) unterschieden. Dabei können folgende transparente Tabellen relevant sein:
  • BSIS "Buchhaltung: Sekundärindex für Sachkonten" (Sachkonten offene Einzelposten)
  • BSAS "Buchhaltung: Sekundärindex für Sachkonten (ausgegl. Posten"
    (Sachkonten ausgeglichene Posten)
  • BSID "Buchhaltung: Sekundärindex für Debitoren"
    (Debitoren Offene Einzelposten)
  • BSAD "Buchhaltung: Sekundärindex für Debitoren
    (ausgebl. Posten)" (Debitoren ausgeglichene Posten)
  • BSIK "Buchhaltung: Sekundärindex für Kreditoren"
    (Kreditoren Offene Einzelposten)
  • BSAK "Buchhaltung: Sekundärindex für Kreditoren (ausgegl. Posten"
    (Kreditoren ausgeglichene Posten)
Der Vorteil der Clustertabelle BSEG ist jedoch, dass diese alle Belegpositionen enthält unabhängig davon ob diese offen oder schon ausgeglichen sind (gleiches gilt natürlich auch für den Belegkopf in der Tabelle BKPF).

Tabellen-Joins können dennoch nur über Transparente Tabellen ausgeführt werden, so dass hier eine Möglichkeit wäre sowohl die oben erwähnten Tabellen mit der Tabelle BKPF zu verknüpfen (outer join). Dieses hat jedoch den Nachteil, dass hier nicht über Felder wie Kostenstelle, Innenauftrag oder Profit-Center selektiert werden können, da diese Informationen ja wiederum in den Einzeltabellen gespeichert sind (auf der Belegposition).

Um nun dennoch die Informationen aus den Belegkopf (Tabelle BKPF) wie zum Beispiel das Belegdatum beziehungsweise Buchungsdatum zu erhalten und gleichzeitig auf die Merkmale der Belegposition (Tabelle BSEG) wie Kostenträger oder Sachkonto zuzugreifen bietet es sich an statt einzelne Tabellen zu verknüpfen eine logische Datenbank zu verwenden.

Logische Datenbank (LDBA)

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.

1. Infoset definieren
Bei der Anlage des Infoset über die Transaktion SQ02 wird als Datenquelle die logische Datenbank BRF definiert.

Hier sollen nach Angabe der logischen Datenbank die auszuwertenden Knoten mit ausgewählt werden. Für eine Auswertung von BKPF und BSEG würde es ausreichen nur diese beiden Knoten auszuwerten. Diese werden dann als Feldgruppen ausgewählt. Innerhalb der Struktur sind aber auch alle anderen Bestandteile der logischen Datenbank vorhanden, so dass hier einzelne Werte in Feldgruppen übernommen werden können. Wie bei jeden Infoset kann es sinnvoll sein so viele Datenfelder wie möglich zu übernehmen, da dieses Infoset dann auch für andere Queries verwendet werden kann.

Um eine vergleichbare Datengrundlage wie in der eingangs beschriebenen Query zu erhalten werden folgende Daten aus den jeweiligen Strukturen übernommen:

Aus der Struktur Belegsegment Buchhaltung (BSEG):
BSEG-VBUND Partner Gesellschaftsnummer
BSEG-PRCTR Profitcenter
BSEG-BELNR Belegnummer eines Buchhaltungsbeleges
BSEG-GJAHR Geschäftsjahr
BSEG-SHKZG Soll-/Haben-Kennzeichen
BSEG-SGTXT Positionstext
BSEG-AUFNR Auftragsnummer
BSEG-KOSTL Kostenstelle
BSEG-DMBTR Betrag in Hauswährung
BSEG-HKONT Sachkonto der Hauptbuchhaltung

Aus der Struktur Belegkopf für Buchhaltung (BKPF):
BKPF-BUDAT Buchungsdatum im Beleg
BKPF-BLDAT Belegdatum im Beleg

2. Query anlegen
Mit Bezug auf dieses Infoset kann dann eine entsprechende Query über die Transaktion SQ01 angelegt werden.

Hierbei ist zu beachten, dass in der Grundliste die einzelnen Merkmale in der Reihenfolge BKPF und danch BSEG ausgegeben werden. Es ist bspw. nicht möglich erst Daten aus BSEG und zwischen drin aus BKPF auszugeben. Jedoch kann das Layout der Query später durch eine Anzeigevariante angepasst werden.

In der späteren Query sind Buchungskreis, Belegnummer und Geschäftsjahr automatisch als Selektionskriterium vorhanden. Das Buchungsdatum und die Referenznummer sind dabei ebenfalls aktiv wie die Möglichkeit der freien Abgrenzung über weitere Parameter des Belegkopfes.

Sofern weitere Felder als Selektionsvariablen definiert werden erscheinen diese im Selektionsbild als Programmabgrenzung.

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.

Dabei werden nun auch die oben angelegten lokalen Felder mit übernommen.

Die Felder werden hier in der Reihenfolge angeben, wie diese dann auch in der Query ausgegeben werden sollen:
  • Buchungsdatum im Beleg (L,S) BKPF-BUDAT
  • Belegdatum im Beleg (L,S) BKPF-BLDAT
  • Jahr (L) BSEG-GJAHR
  • Belegnummer (L) BSEG-BELNR
  • Hauptbuch (L,S) BSEG-HKONT
  • Soll-/Haben-Kennzeichen (L) BSEG-SHKZG
  • Betrag (L) BSEG-DMBTR
  • Kostenstelle (L,S) BSEG-KOSTL
  • Auftrag (L,S) BSEG-AUFNR
  • Prctr (L,S) BSEG-PRCTR
  • Text (L) BSEG-SGTXT
  • Partnergesellschaft (L,S) BSEG-VBUND
Der Vorteil der Verwendung der logischen Datenbank ist sicherlich, dass nun auch Daten aus den Belegkopf (neben Datum sind hier auch Transaktion oder Erfasser) verfügbar sind.

Nun kann die Query ebenso, wie in der vorherigen Auswertung der Tabelle BSEG noch um lokale Felder erweitert werden, so dass hier ebenfalls das Soll/Haben Kennzeichen berücksichtigt wird.

Hierfür wird innerhalb der Query mit lokalen Feldern gearbeitet.

Um lokale Felder zu definieren wird nicht direkt die Grundliste der Query bearbeitet (wo auch das Layoutdesign gepflegt wird) sondern innerhalb der Querypflege (Transaktion SQ01) mit "nächstes Bild (F6)" auf die Feldauswahl der Query gewechselt.

Ü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 (in der Beschreibung ist die Bezeichnung, gefolgt von der angelegten Kurzbezeichnung und des dahinter technisch liegenden Tabellenfeldes angegeben):
  • Soll-/Haben-Kennzeichen - SHKZG (BSEG-SHKZG)
  • Betrag in Hauswährung - DMBTR (BSEG-DMBTR)
  • Kostenstelle - KOSTL (BSEG-KOSTL)
  • Auftragsnummer - AUFNR (BSEG-AUFNR)
Diese Kurzbezeichnung ist notwendig, da wir auf diese dann Bezug nehmen, wenn wir ein eigens 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. In unseren Fall also ebenfalls in der Feldgruppe der Tabelle BSEG bzw. der Bezeichnung der Feldgruppe "Belegsegment Buchhaltung".


Hierbei werden drei lokale Felder mit folgenden Eigenschaften angelegt.

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

2. Feld (Identifikation ob Innenauftrag oder Kostenstelle)
Kurzbezeichnung: IAK
Feldbezeichnung: IAK
Überschrift: Innenauftrag oder Kostenstelle
Eigenschaften: Textfeld (Anzahl Zeichen: 2)
Berechnungsvorschrift:
Hier wird eine komplexe Berechnung mit folgenden Bedingungen hinterlegt:
  • Bedingung: KOSTL>0
    Formel: 'K'
  • Bedingung: AUFNR>0
    Formel: 'IA'
  • sonst: ''

Diese Berechnung ist möglich, da auf eine Belegzeile nicht Innenauftrag und Kostenstelle gleichzeitg ausgewiesen werden.

3. Feld (Bebuchter Kostenträger)
Kurzbezeichnung: KTR
Feldbezeichnung: Kostenträger
Überschrift: Kostenträger
gleiche Eigenschaften wie: AUFNR
Berechnungsvorschrift:
Hier wird eine komplexe Berechnung mit folgenden Bedingungen hinterlegt:
  • Bedingung: KOSTL+AUFNR>0
    Formel: KOSTL+AUFNR
  • sonst: ''

Sofern Kostenstellen und Innenaufträge unabhängige Nummernkreise ohne Überschneidung haben. Dieses könnte als Beispiel der Fall sein, wenn Kostenstellen mit 1* oder 2* beginnen und etwaige Innenaufträge mit 3* bis 8*.

Diese lokalen Felder können nun ebenfalls in der Grundliste der Query mit aufgenommen werden.

Ergänzung:
Eine mögliche Erweiterung dieser Query in Richtung eines umfassenden Belegjournals für die Finanzbuchhaltung könnte dabei wie folgt gestaltet sein.

 
Beschreibung Tabellenfeld
Buchungskreis BSEG-BUKRS
Jahr BSEG-GJAHR
Geschäftsmonat BKPF-MONAT
Belegnummer BSEG-BELNR
Belegart BKPF-BLART
Belegdatum BKPF-BLDAT
Buchungsdatum BKPF-BUDAT
Soll/Haben Kennzeichen BSEG-SHKZG
Hauptbuch BSEG-HKONT
Steuerkennzeichen BSEG-MWSKZ
Profit-Center BSEG-PRCTR
Kostenstelle BSEG-KOSTL
Auftrag BSEG-AUFNR
IAK Formel siehe Beschreibung
Kostenträger Formel siehe Beschreibung
Betrag Hauswährung BSEG-DMBTR
gebuchter Wert Formel siehe Beschreibung
Text BSEG-SGTXT
Zuordnungsnummer BSEG-ZUONR
Partnergesellschaft BSEG-VBUND
Bezeichnung Partnergesellschaft Zusatzfeld TEXT_BSEG_VBUND
Debitor BSEG-KUNNR
Text Debitor Zusatzfeld TEXT_BSEG_KUNNR
Kreditor BSEG-LIFNR
Text Kreditor Zusatzfeld TEXT_BSEG_LIFNR
Referenz BKPF-XBLNR
Ausgleichsdatum BSEG-AUGDT


Fazit
Insgesamt ist bei dieser Query jedoch zu beachten, dass hier ausschliesslich FI Buchungen erfasst werden. Sofern CO Buchungen (auf sekundäre Kostenarten) erfolgen werden diese nicht mit ausgegeben.

Und was ist nun mit Tee Buchungen im Modul CO?

Hierfür gibt es jedoch die Möglichkeit, wie im Artikel "Query Einzelpostenliste IST über CO Objekte (Auflösen von Innenauftrag, Kostenstelle) sowie Benutzerstammdaten und Erfassungsdatum" beschrieben, die Istbuchungen im CO und somit sowohl die fortgeschriebenen FI Buchungen auf primäre Kostenarten als auch die CO internen Buchungen auf sekundären Kostenarten mit auszuwerten. Daneben können auch Planbuchungen im CO, wie im Artikel "CO Planeinzelposten Objekt und Partnerobjekt auswerten / Mehrere Felder summieren" beschrieben, ebenfalls über eine Query ausgwertet 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.




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

Tags: FI Query

7 Kommentare - - SAP

Artikel datenschutzfreundlich teilen

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


Kommentare

Anonym am 10.6.2014 um 18:30 Uhr
Meine Rettung!


Anonym am 18.6.2014 um 09:18 Uhr
Sehr hilfreich!


Thomas am 11.9.2014 um 12:05 Uhr
Wirklich eine Super Anleitung!

Mir hat noch die Kontenbezeichnung gefehlt.
Das lässt sich so realisieren:
SQ02
Zusätze (F5)
Knoten: BSEG
Anlegen
Zusatztabelle -> SKAT
SPRAS = SY-LANGU
KTOPL = 'XXXX' (4stelliger Kontoplan in einfachen Hochkomma)!
Wir arbeiten nur mit einem Kontenplan. Deshalb der Festwert.
SAKNR = BSEG-HKONT
(in diesem Fall noch "intern puffern anhaken"
Jetzt ist die Tabelle unter BSEG eingebunden und das Textfeld (SKAT-TXT20 oder TXT50) kann in das Belegsegment hineingezogen werden.
Gruß
Thomas



Andreas Unkelbach Homepage am 12.9.2014 um 06:14 Uhr
Hallo Thomas,

es freut mich, dass dir diese doch eher CO-freundliche Liste ebenfalls gefallen hat. Die Erweiterung des Infoset über die logische Datenbank mittels Zusatztabellen war mir noch nicht bekannt bzw. kannte ich bisher Zusätze nur als ABAP Coding.

Ich greife deinen Hinweis gerne auf und würde diesen dann in einen neuen Artikel mit einfliessen lassen, schon einmal vielen Dank dafür :-).

Neben SKAT für die Kostenartenbezeichnung würden sich hier auch weitere Stammdaten anbieten so zum Beispiel die CPCT für die Profit-Center über das Feld BSEG-PRCTR (vergleichbar der im Artikel Query Stammdaten CO Kontrolle Verantwortliche vorgestellten Query).

Viele Grüße
Andreas


vaqnbbjgot am 12.10.2014 um 08:07 Uhr
Meine Rettung!


Anonym am 4.3.2015 um 06:57 Uhr
Sehr hilfreich!


Anonym am 3.4.2015 um 17:44 Uhr
Hat geklappt!


Auch kommentieren?


Beim Versenden eines Kommentars wird mir ihre IP mitgeteilt. Diese wird jedoch nicht dauerhaft gespeichert; die angegebene E-Mail wird nicht veröffentlicht: beim Versenden als "Normaler Kommentar" ist die Angabe eines Namen erforderlich, gerne kann hier auch ein Pseudonyme oder anonyme Angaben gemacht werden (siehe auch Kommentare und Beiträge 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):



Ich nutze zum Schutz vor Spam-Kommentaren (reine Werbeeinträge) eine Wortliste, so dass diese Kommentare nicht veröffentlicht werden. Sollte ihr Kommentar nicht direkt veröffentlicht werden, kann dieses an einen entsprechenden Filter liegen.

Im Zweifel besteht auch immer die Möglichkeit eine Mail zu schreiben oder die sozialen Medien zu nutzen. Meine Kontaktdaten finden Sie auf »Über mich«. Ansonsten antworte ich tatsächlich sehr gerne auf Kommentare und freue mich auf einen spannenden Austausch.

Normaler Kommentar

Name:

E-Mail (wird nicht veröffentlicht und ist nicht erforderlich):

Homepage:

Kommentar:





* Amazon Partnerlink
Als Amazon-Partner verdiene ich an qualifizierten Käufen über Amazon.
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