Christian Busch

Verfasst von

Christian Busch

analyzing-recurring-entry-in-SAP

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

 

BUKRS BELNR GJAHR BUDAT
1000 9100000000 1995 19950127
1000 9100000004 1996 19960702
3000 9100000000 2003 20030411
1000 9100000000 2004 20040319
3000 9100000001 2012 20121103
2222 9100000000 2014 20140407
... ... ... ...

 

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

 

BUKRS BELNR GJAHR DBMON DBTAG DBBDT DBEDT DBZHL
1000 9100000000 1995 01 28 19950101 19963112 1
1000 9100000004 1996 03 15 19960215 20201115 0
3000 9100000000 2003 01 03 20030101 20051231 0
1000 9100000000 2004 01 15 20040312 20041228 2
3000 9100000001 2012 01 30 20121130 20151231 1
2222 9100000000 2014 01 01 20140101 20181231 2
... ... ... ... ... ... ... ...

 

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

 

BUKRS DBBLG GJAHR BELNR BUDAT BKTXT
1000 9100000000 1995 1900000031 19950128 Miete Lager
1000 9100000004 1996      
3000 9100000000 2003      
1000 9100000000 2004 1900006961 20040315 Haftpflichtversicherung
1000 9100000000 2004 1900009135 20040415 Haftpflichtversicherung
3000 9100000001 2012 1900005300 20121130  
2222 9100000000 2014 1900000013 20140101  
2222 9100000000 2014 1900000014 20140201  

 

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:

 

sap-zurueck

 

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.

 

sap-zurueck

 

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.

 

zapliance Newsletter

Erhalten Sie wertvolle
News und Angebote zur Prüfung von SAP direkt in Ihr Postfach!

zapliance Kunden

Unsere Empfehlungen für Sie

Kommentare