Nichts hält ewig – oder Dauerbuchungen in SAP etwa schon?

Nichts hält ewig – sollte man meinen. Heute geht es um das Thema Dauerbuchungen. SAP bietet an vielen Stellen die Möglichkeit, wiederholende Tätigkeiten zu automatisieren und damit den Aufwand für bspw. die monatliche Buchung der Miete zu minimieren.

Klingt auf den ersten Blick sehr gut und hilfreich, doch wo Licht ist, da ist auch Schatten. Was, wenn zu diesen Vorlagen keine Urbelege mehr existieren und die auf diesen Vorlagen basierenden Buchungen weiterhin durchgeführt werden? Oder was, wenn sich Bilanzkonten in Ihrem SAP System ändern, die Vorlagen aber weiter wie bisher ausgeführt werden? Im ersten Falle haben wir Buchungen ohne Beleg, der letzte Fall führt ggf. zu Falschausweisen in der Bilanz und GuV.

Ein regelmäßiger Check auf Dauerbuchungen ist daher also angeraten und wir empfehlen eine Auswertung im Rahmen des Journal Entry Testings.

Wie lassen sich Dauerbuchungen in SAP aufspüren?

Bekanntermaßen führen alle Weg nach Rom. So auch im Fall einer Analyse von Dauerbuchungen. Zunächst werfen wir einen Blick auf die Auswertung per SQL, bevor wir zum Ende des Artikels das manuelle Vorgehen mit den Transaktionen „SE16N“ und „SQVI“ vorstellen. Hier springen sie direkt zur Anleitung ohne SQL.

Ein einfaches „SELECT“ auf die Tabelle „BKPF“ (Belegkopf für Buchhaltung) mit dem Blick auf das Datenfeld „BSTAT“ gibt einen Überblick der aktuell im System hinterlegten Dauerbuchungsvorlagen:

SELECT BKPF.BUKRS, BKPF.BELNR, BKPF.GJAHR, BKPF.BUDAT FROM BKPF WHERE BKPF.BSTAT = 'D' ORDER BY BKPF.GJAHR, BKPF.BUKRS ASC

BUKRSBELNRGJAHRBUDAT
10009100000000199519950127
10009100000004199619960702
30009100000000200320030411
10009100000000200420040319
30009100000001201220121103
22229100000000201420140407

In diesem Falle zeigt „BUDAT“ das Datum, an dem diese Vorlage erstellt wurde. Diese sind noch nicht als Geschäftsvorfall verbucht, da es sich lediglich um Vorlagen / Blaupausen handelt.

Mehr Details zu diesen einzelnen Vorlagen offenbart ein Blick in die Tabelle „BKDF“ (Belegkopfergänzung für Dauerbuchung):

SELECT BKDF.BUKRS, BKDF.BELNR, BKDF.GJAHR, BKDF.DBMON, BKDF.DBTAG, BKDF.DBBDT, BKDF.DBEDT, BKDF.DBZHL FROM BKDF ORDER BY BKDF.GJAHR, BKDF.BUKRS ASC

BUKRSBELNRGJAHRDBMONDBTAGDBBDTDBEDTDBZHL
100091000000001995012819950101199631121
100091000000041996031519960215202011150
300091000000002003010320030101200512310
100091000000002004011520040312200412282
300091000000012012013020121130201512311
222291000000002014010120140101201812312

Das Datenfeld „DBMON“ zeigt die geplante Ausführung in Monaten an. 01 steht bspw für monatliche Durchführung. 00? „DBBDT“ zeigt, wann diese Dauerbuchung erstmalig, „DBEDT“ zeigt, wann sie letztmalig angewendet werden soll. Hier fällt auf, dass einige Einträge in „DBZAHL“ – dem Feld, das anzeigt, wie häufig aus diesen Vorlagen Buchungsstoff erstellt wurde, dass sie nie (0) oder sehr selten (1-mal, 2-mal) genutzt wurde. Hier stellt sich also die Frage, warum überhaupt Vorlagen angelegt und dann nicht genutzt werden. Des Weiteren ist die zweite Zeile in dem Ergebnis erwähnenswert, hier wurde noch nie ein Beleg erzeugt, die Vorlage kann aber noch bis zum 15.11.2020 genutzt werden. Hier stellt sich also die Frage, ob im Falle einer auf dieser Vorlage basierenden Buchung, überhaupt noch ein Urbeleg vorhanden ist.

Die Verbindung aus der Tabelle „BKDF“ und „BKPF“ mit einem „left join“ listet die aus jeder Vorlage erzeugten Buchungsbelege auf und zeigt damit, wann konkret ein Geschäftsvorfall aus der Vorlage erstellt wurde.

SELECT BKDF.BUKRS, BKDF.BELNR DBBLG, BKDF.GJAHR, BKPF.BELNR, BKPF.BUDAT, BKPF.BKTXT FROM BKDF LEFT JOIN BKPF ON (BKDF.MANDT = BKPF.MANDT AND BKDF.BUKRS = BKPF.BUKRS AND BKDF.GJAHR = BKPF.GJAHR AND BKDF.BELNR = BKPF.DBBLG) ORDER BY BKDF.GJAHR, BKDF.BUKRS, BKPF.BUDAT ASC

BUKRSDBBLGGJAHRBELNRBUDATBKTXT
100091000000001995190000003119950128Miete Lager
100091000000041996   
300091000000002003   
100091000000002004190000696120040315Haftpflichtversicherung
100091000000002004190000913520040415Haftpflichtversicherung
300091000000012012190000530020121130 
222291000000002014190000001320140101 
222291000000002014190000001420140201 

Das Ergebnis zeigt abschließend, dass auch die Buchungstexte (Spalte BKTXT) deutliches Optimierungspotenzial hinsichtlich der Vollständigkeit und Nachvollziehbarkeit haben.

Auswertung von Dauerbuchungen mit der SE16N und SQVI in SAP

Nachdem wir einen Blick auf die recht unkomplizierte Auswertung per SQL geworfen haben, nutzen wir jetzt die Transaktion „SE16N“ für eine weitere Möglichkeit der Auswertung. Das Feld „BSTAT“ (Belegstatus) wird auf die Dauerbuchungen eingegrenzt (D = Dauerbuchungen). Das Pendant zum ersten SQL Query sieht dann in der „SE16N“ Maske folgendermaßen aus:

Dauerbuchungen SE16N Felder

Entsprechend zeigt das Ergebnis (F8) die komplette Liste der vorhandenen Vorlagen für Dauerbuchungen:

Dauerbuchungen Übersicht in SAP

Um jetzt zu prüfen, ob die Vorlagen auch verwendet wurden, wird die Tabelle „BKDF“ benötigt. Dafür selektieren wir in der Maske der „SE16N“ die nachfolgenden Felder:

BKDF Maske für Dauerbuchungen und notwendige Felder

Im Ergebnis (F8) zeigen sich dann alle Vorlagen für Dauerbuchungen und die Anzahl der Nutzungen (Feld DBZHL – Anzahl):

BKDF Anzahl an Dauerbuchungen in SAP

Soweit so gut. Versucht man jetzt den Tabellen Join der „BKPF“ auf die „BKDF“ in SAP mit der Transaktion „SQVI“ (Quickviewer) durchzuführen, fällt schnell auf, dass auch die „Left outer join“ Funktion nur in eine Richtung funktioniert. Aus unerklärlichen Gründen „joined“ SAP im Standard allerdings die „BKPF“ auf die „BKDF“ und nicht wie gewollt die „BKDF“ auf „BKPF“. Aus diesem Grund ist eine Analyse auf diesem Wege nicht möglich und ich schien auf dem Holzweg zu sein. Stattdessen bin ich einem Hinweis eines treuen Lesers aus den Kommentaren nachgegangen und beschreibe die Alternative mit einem InfoSet Query im Folgenden. Kennen Sie weitere Möglichkeiten? – Dann lassen Sie es uns in den Kommentaren wissen.

Dauerbuchungen mit einem InfoSet Query in SAP analysieren

Um eine Auswertung mit einem InfoSet in SAP vorzunehmen müssen wir zunächst eines anlegen. Das geschieht in SAP über die Transaktion „SQ02“ (InfoSet: Einstieg). Im oberen Bereich der Maske vergeben wir dann einen Namen für das InfoSet, wie z.B. „Dauerbuchungen“ und legen es schließlich mit einem Klick auf „Anlegen“ an. Daraufhin öffnet sich ein Fenster, das nach einer Bezeichnung und der Datenquelle fragt. Wählen Sie eine prägnante Bezeichnung und wählen „Tabellen-Join über Tabelle“ unter Angabe der „BKDF“ als Datenquelle aus:

Dauerbuchungen-InfoSet-in-SAP-anlegen

Daraufhin öffnet sich eine Ansicht, die lediglich die Tabelle „BKDF“ mit ihren Feldern darstellt. Über einen Klick auf „Tabelle einfügen“, bzw. „Umschalt + F1“ fügen wir anschließend die „BKPF“ ein:

Dauerbuchungen-InfoSet-Tabelle-einfuegen

Im Standard verknüpft SAP die beiden Tabellen „BKDF“ und „BKPF“ über den sogenannten Primärschlüssel. Da wir allerdings den Link der Belegnummer aus der „BKDF“ auf die Belegnummer der Dauerbuchung benötigen, müssen wir den bestehenden Link zunächst löschen:

Dauerbuchungen-InfoSet-Link-loeschen

Nachdem wir den Link gelöscht haben, verbinden wir die Belegnummer (BELNR) der Tabelle „BKDF“ mit der Belegnummer der Dauerbuchung (DBBLG) der Tabelle „BKPF“ indem wir den linken Mauszeiger auf der „BELNR“ der „BKDF“ gedrückt halten und zum Feld „DBBLG“ der „BKPF“ ziehen. Anschließend ändern wir noch den „inner join“ auf einen „left outer join“ entsprechend der Abbildung:

Dauerbuchungen-InfoSet-Link-zur-Dauerbuchung

Bevor wir schlussendlich das InfoSet generieren, lassen wir SAP die Verknüpfungsbedingungen nochmal prüfen. Das kann über den gleichnamigen Button, oder die Taste „F8“ geschehen:

Dauerbuchungen-InfoSet-Verknuepfung-pruefen

In dem nachfolgenden Dialog wählen wir die Option „Keyfelder aufnehmen“. Die Datenfelder erweitern wir im darauffolgenden Schritt noch um das Belegdatum und den Belegkopftext. Dafür selektieren wir im mittleren Bereich der Maske zunächst die Feldgruppe „02 Belegkopf für Buchhaltung“ und wählen anschließend die Felder „Belegdatum im Beleg“ und „Belegkopftext“ aus der linken Spalte aus und nehmen diese mit in die Feldgruppe, wie dargestellt auf:

Feldgruppen-fuer-Dauerbuchungen

Mit dem Schritt ist die Erstellung des InfoSets soweit abgeschlossen. Jetzt müssen wir dieses nur noch mit einem Klick auf den rot weißen Button oder „Umsch + F6“ generieren und mit einem Klick auf „Lokales Objekt“ speichern. Um das InfoSet entsprechend verwenden zu können, müssen wir dieses noch einer Benutzergruppe zuordnen. Dafür verlassen wir die aktuelle Maske über den grünen Globus mit dem Pfeil zurück:

In der Übersicht „InfoSet: Einstieg“ wählen wir dann den Button „Zuordnung zu Rollen / Benutzergruppen“. Sollten Sie sich nicht sicher sein, welcher Benutzergruppe Sie das InfoSet zuordnen sollen, kontaktieren Sie den zuständigen SAP Administrator, oder legen ggf. mit diesem Vorgehen eine neue Gruppe an.

In dem vorliegen Fall verwende ich die Benutzergruppe mit der Bezeichnung „Test für generierte InfoSets“:

Zuordnung-von-Benutzergruppen-fuer-Infoset

Anschließend können wir die Transkation „SQ02“ komplett über den roten Globus mit dem Kreuz verlassen.

Die Nachfrage, ob Sie die Zuordnung vor dem Verlassen speichern wollen, bestätigen Sie mit „Ja“. Auf dem Startbildschirm von SAP müssen wir dann in die Transaktion „SQ01“, um das InfoSet auch auszuführen. Mit einem Klick auf „InfoSet Query“ können wir dann das zuvor angelegte InfoSet aus der jeweiligen Benutzergruppe auswählen:

Query-anlegen-SQ01-SAP

In der nachfolgenden Maske müssen wir dann nur noch die Ausgabe für die Ergebnisse entsprechend der Abbildung definieren:

Ausgabe-InfoSet-Query

Was lange währt wird endlich gut und so nutzen wir zum Abschluss die Taste „F8“ oder einen Klick auf „Ausgabe“, um das folgende Ergebnis zu produzieren:

SAP-InfoSet-Query-fuer-Dauerbuchungen

Zusammenfassend zeigt sich, dass eine regelmäßige Prüfung der Dauerbuchungen im internen Kontrollsystem verankert werden sollte. Folgende Punkte helfen dabei, Fehler zu vermeiden:

  • Begrenzen Sie Dauerbuchungsbelege von der Laufzeit
  • Nutzen Sie nachvollziehbare Buchungstexte in der Vorlage und der generierten Belege
  • Prüfen Sie regelmäßig, welche Vorlagen es gibt und wie sie genutzt werden.

Artikel teilen

Facebook
Twitter
XING
LinkedIn

Auch interessant