Kontobewegungen auf dem Prüfstand von SAP

Kontobewegungen, Cashflow, Soll, Haben, Gut- oder Lastschrift, you name it. Wir werfen heute mal einen Blick auf genau das, was alle irgendwie miteinander verbindet: Bewegungen auf Konten. Dafür werden wir uns zunächst einmal alle Konten ansehen, uns drei interessante Exemplare aussuchen und in einer Zeitreihe näher betrachten. Das klingt erstmal aufwendig und kompliziert, ist es dank der fertigen SQL Statements und ein paar Handkniffen in Excel aber gar nicht.

Die notwendigen Grundlagen für Konten in SAP

Legen wir zunächst mit den notwendigen Tabellen und Feldern los, bevor wir uns einen Export der Dateien anfertigen und in Excel visualisieren. Die nachfolgenden Queries können ganz einfach über die Transaktion „DBACOCKPIT“ und dann über die Navigation „Diagnose“ zum „SQL-Editor“ ausprobiert werden. Alle Queries wurden zudem auf einer HANA Datenbank getestet.

Um die Analyse lediglich auf Konten anzuwenden, die tatsächlich in dem zu untersuchenden Geschäftsjahr verwendet wurden, nutzen wir im ersten Schritt die Tabelle BSEG (Belegsegment Buchhaltung – FI) und schränken auf den Untersuchungsgegenstand (Mandant 800, Buchungskreis 1000 und Geschäftsjahr 2017) wie folgt ein:

SELECT DISTINCT BSEG.HKONT FROM BSEG
WHERE BSEG.MANDT = '800' AND BSEG.BUKRS='1000' AND BSEG.GJAHR=2017

Das Query liefert uns allerdings nur die Nummer des Sachkontos der Hauptbuchhaltung in SAP ohne die Bezeichnung:

HKONT
0000160000
0000790000
0000191100
0000231500

Jetzt könnte man mit der Liste zur entsprechenden Fachabteilung gehen, oder man liest einfach diesen Artikel weiter. Leider findet sich die Kontenbezeichnung nicht in der BSEG, weil SAP die Bewegungsdaten von den Stammdaten trennt. Doch ist es mit einem einfachen Join auf eine weitere Tabelle nicht getan, da wir zusätzlich den entsprechenden Kontenplan benötigen. Dieser findet sich in der Tabelle T001 (Buchungskreise – Customizing), aber nicht in der BSEG, also bauen wir den Join wie folgt:

SELECT DISTINCT BSEG.HKONT, T001.KTOPL FROM BSEG
LEFT JOIN T001 ON BSEG.MANDT = T001.MANDT AND BSEG.BUKRS=T001.BUKRS
WHERE BSEG.MANDT='800' AND BSEG.BUKRS='1000' AND BSEG.GJAHR=2017

Das Ergebnis liefert uns zusätzlich den entsprechenden Kontenplan:

HKONTKTOPL
0000160000INT
0000790000INT
0000191100INT
0000231500INT

Damit sind wir im Zusammenhang mit den Kontenbezeichnung allerdings auch noch nicht viel weitergekommen. Dafür benötigen wir zusätzlich die Tabelle SKAT (Sachkontenstamm (Kontenplan: Bezeichnung)), die wir wie folgt hinzu joinen:

SELECT DISTINCT BSEG.HKONT, T001.KTOPL, SKAT.TXT50 FROM BSEG
LEFT JOIN T001 ON BSEG.MANDT = T001.MANDT AND BSEG.BUKRS=T001.BUKRS
LEFT JOIN SKAT ON SKAT.MANDT = BSEG.MANDT AND BSEG.HKONT = SKAT.SAKNR AND T001.KTOPL = SKAT.KTOPL AND SKAT.SPRAS = 'D'
WHERE BSEG.MANDT='800' AND BSEG.BUKRS='1000' AND BSEG.GJAHR=2017

Soweit so gut. Das Ergebnis kann sich schon mal sehen lassen:

HKONTKTOPLTXT50
0000160000INTKreditoren-Verbindlichkeiten Inland
0000790000INTUnfertige Erzeugnisse
0000191100INTWE/RE-Verrechnung -Fremdbezug-
0000231500INTAufwand aus Preisdifferenzen Eigenerzeugnisse

Die Liste der zu untersuchenden Konten müssen allerdings weiter eingeschränkt werden, da allein die schiere Anzahl einen erschlägt.

Analyse von Kontenbewegungen anhand von 3 Beispielen in SAP

Werfen wir also einen Blick auf drei verschiedene Arten von Konten: Zum einen nehmen wir uns ein Aufwandskonto, ein Bankkonto sowie ein Umsatzkonto zur Brust und veranschaulichen die einzelnen Bewegungen in einem Graph mit Excel. Fangen wir mit einem Aufwandskonto, wie z.B. Abschreibungen an. Dafür müssen wir das obere Query nur leicht anpassen:

SELECT DISTINCT BSEG.HKONT, T001.KTOPL, SKAT.TXT50 FROM BSEG
LEFT JOIN T001 ON BSEG.MANDT = T001.MANDT AND BSEG.BUKRS=T001.BUKRS
LEFT JOIN SKAT ON SKAT.MANDT = BSEG.MANDT AND BSEG.HKONT = SKAT.SAKNR AND T001.KTOPL = SKAT.KTOPL AND
SKAT.SPRAS = 'D'
WHERE BSEG.MANDT='800' AND BSEG.BUKRS='1000' AND BSEG.GJAHR=2017 AND SKAT.TXT50 LIKE '%Abschreibung%'

Die Ergänzung sucht in dem Feld TXT50 (Sachkontenlangtext) der Tabelle SKAT nach dem Schlüsselwort „Abschreibung“, wobei die % bedeuten, dass vor und nach dem Wort alles eingeschlossen werden soll. So erhält man z.B. „kalkulatorische Abschreibungen“ genau so wie „Abschreibungen auf Sachanlagen (außerplanmäßig)“, sofern es diese Art der Kontenbezeichnung gibt. In dem Fall ist auf Groß- und Kleinschreibung zu achten, da Hana es in dem Zusammenhang sehr genau nimmt. Im IDES Testsystem bekomme ich für das Query lediglich 3 Konten aufgelistet, wobei ich das Geschäftsjahr ebenfalls anpassen musste:

HKONTKTOPLTXT50
0000211100INTPlanmaessige Abschreibung auf Sachanlagen
0000211200INTAusserplanmaessige Abschreibung auf Sachanlagen
0000481000INTKalkulatorische Abschreibungen

Und jetzt musste ich auf den Prof. Gehrke zurückgreifen, denn nun wird es komplex. Mit der Nummer des Sachkontos führen wir das folgende Query aus:

SELECT D.MONAT, SUM(CASE WHEN SHKZG='S' THEN DMBTR ELSE 0 END) SALDO_DEBIT, SUM(CASE WHEN SHKZG='H' THEN DMBTR ELSE 0 END) SALDO_CREDIT, SUM(CASE WHEN SHKZG='S' THEN DMBTR ELSE 0 END) - SUM(CASE WHEN SHKZG='H' THEN DMBTR ELSE 0 END) TOTAL FROM
(SELECT MONAT, HKONT
FROM BKPF
JOIN BSEG ON (BKPF.MANDT = BSEG.MANDT AND BKPF.BUKRS = BSEG.BUKRS AND BKPF.GJAHR = BSEG.GJAHR AND BKPF.BELNR=BSEG.BELNR)
WHERE HKONT='0000211200' GROUP BY MONAT, BSEG.HKONT) D
JOIN BSEG B ON D.HKONT = B.HKONT
JOIN BKPF BK ON (B.MANDT = BK.MANDT AND B.BUKRS = BK.BUKRS AND B.GJAHR = BK.GJAHR AND B.BELNR = BK.BELNR AND B.HKONT = D.HKONT)
WHERE BK.MONAT<=D.MONAT AND B.MANDT='800' AND B.BUKRS='1000' AND B.GJAHR=2017
GROUP BY D.MONAT
ORDER BY D.MONAT;

Was macht das Query im Wesentlichen? Grundsätzlich geht es alle Buchungen auf einem definierten Konto (orange markiert) durch, addiert alle Soll und Haben Posten und bildet die Differenz der beiden, wobei die Werte bis zu einem einen Monat kumuliert werden. Im Ergebnis ergibt sich für das Konto der planmäßigen Abschreibungen auf Sachanlagen demnach:

MONATSALDO_DEBITSALDO_CREDITTOTAL
01112155,970,00112155,97
02112155,970,00112155,97
03112155,970,00112155,97
04112155,970,00112155,97
05112155,970,00112155,97
06112155,970,00112155,97
07112155,970,00112155,97
08112155,970,00112155,97
09112155,970,00112155,97
10112155,970,00112155,97
11112155,970,00112155,97
121354655,060,001354655,06

Das Konto entspricht wohl erstmal der gängigen Praxis, wobei die zeitnahe Verbuchung von Abschreibungen für Monats-, bzw. Quartalsabschlüsse durchaus empfehlenswert ist. Kritisch im Sinne des Jahresabschlusses ist es allerdings nicht.

Entsprechend dem Verfahren habe ich mir noch die folgenden zwei Konten näher angeguckt:

  • Deutsche Bank Inland (0000113100)
  • Umsatzerlöse Inland Eigenerzeugnisse (0000800000)

Dafür habe ich das Query mit dem LIKE ‚%Abschreibung%‘ entsprechend auf LIKE ‚%Bank%‘ und LIKE ‚%Umsatz%‘ angepasst, die Nummer der Sachkonten kopiert und in das Query vom Professor eingefügt. Die drei Ergebnisse habe ich dann nach Excel exportiert und wie folgt nebeneinander gelegt:

Planmäßige Abschreibungen
MONATSALDO_DEBITSALDO_CREDITSALDO
01112.155,970,00112.155,97
02112.155,970,00112.155,97
03112.155,970,00112.155,97
04112.155,970,00112.155,97
05112.155,970,00112.155,97
06112.155,970,00112.155,97
07112.155,970,00112.155,97
08112.155,970,00112.155,97
09112.155,970,00112.155,97
10112.155,970,00112.155,97
11112.155,970,00112.155,97
121.354.655,060,001.354.655,06
Deutsche Bank
MONATSALDO_DEBITSALDO_CREDITSALDO
01000
020,001.789,52-1.789,52
030,0013.211,24-13.211,24
040,0013.211,24-13.211,24
050,0013.211,24-13.211,24
060,0024.510,79-24.510,79
070,0024.510,79-24.510,79
080,0058.204,92-58.204,92
090,0058.210,03-58.210,03
100,0058.210,03-58.210,03
1118.968,93111.972,37-93.003,44
125.243.255,274.364.440,71878.814,56
Umsatzerlöse Inland Eigenerzeugnisse
MONATSALDO_DEBITSALDO_CREDITSALDO
0125.839,67218.339,79-192.500,12
0225.839,67454.773,72-428.934,05
0325.839,67519.837,58-493.997,91
0425.839,67884.841,46-859.001,79
0525.839,671.022.669,98-996.830,31
0625.839,671.076.643,02-1.050.803,35
0725.839,671.113.846,64-1.088.006,97
0825.839,671.239.086,20-1.213.246,53
0925.839,671.362.847,61-1.337.007,94
1025.839,671.507.697,83-1.481.858,16
1125.839,671.654.096,21-1.628.256,54
1225.839,671.797.220,47-1.771.380,80

Die Monate habe ich anschließend in Klartext umgewandelt, damit sie im Graphen leichter lesbar sind und anschließend ein Liniendiagramm der Monate und Salden eingefügt. Das Ergebnis sieht dann wie folgt aus:

Kontobewegungen

Zu den Abschreibungen hatte ich bereits ein paar kurze Worte verloren, sodass wir uns das Sachkonto der Deutschen Bank als nächstes angucken. Auffällig ist die leicht negative Tendenz bis November, als dann schlagartig über 5 Millionen eingezahlt werden. Natürlich ist mir bewusst, dass es sich dabei um ein Testsystem handelt, aber solche Auffälligkeiten sind auf jeden Fall zu hinterfragen. Ähnlich würde es sich mit starken Ausschlägen in die ein oder die andere Richtung verhalten. In dem Fall wäre es dann interessant zu untersuchen, wie stark die Abweichungen vom Durchschnitt abweichen, um von einer signifikanten Abweichung sprechen zu können.

Die Umsatzerlöse entwickeln sich hingegen genauso, wie man es sich wahrscheinlich wünschen würde (Das negative Vorzeichen bedeutet hier nicht fallende Umsätze, sondern steigende). Der Wareneinsatz ist mit knapp 26.000€ konstant, wohingegen die Erlöse stetig auf bis zu knapp 1.8 Millionen € anwachsen.

Artikel teilen

Facebook
Twitter
XING
LinkedIn