Ihr Datentemplate für die Purchase-to-Pay-Rechnungsverarbeitung
Ihr Datentemplate für die Purchase-to-Pay-Rechnungsverarbeitung
- Empfohlene Attribute für die Datenerfassung
- Wichtige Aktivitäten für die Nachverfolgung
- Hinweise zur Datenextraktion aus SAP ECC
Attribute der Purchase-to-Pay-Rechnungsverarbeitung
| Name | Beschreibung | ||
|---|---|---|---|
| Aktivität Activity | Bezeichnung eines konkreten Geschäftsschritts oder Ereignisses im Lebenszyklus der Rechnungsverarbeitung. | ||
| Beschreibung Das Attribut Aktivität bezeichnet einen bestimmten Schritt oder eine Handlung im Workflow der Rechnungsverarbeitung. Die Aktivitäten werden aus verschiedenen Systemereignissen abgeleitet, etwa aus der Belegerstellung, Statusänderungen, Genehmigungen oder Benutzeraktionen, die in SAP-Änderungsprotokollen erfasst sind. Die Analyse der Aktivitäten bildet den Kern von Process Mining. Sie ermöglicht die Visualisierung von Prozessmodellen sowie das Erkennen von Engpässen (z. B. lange Wartezeiten nach „Rechnung zur Genehmigung eingereicht“), Nacharbeitsschleifen (z. B. wiederholte Abläufe von „Zahlungssperre gesetzt“ und „Zahlungssperre aufgehoben“) und Compliance-Abweichungen. Reihenfolge und Häufigkeit der Aktivitäten zeigen den tatsächlichen Prozessablauf. Warum das wichtig ist Das Attribut definiert die Schritte im Prozessmodell. So lassen sich Prozessabläufe visualisieren, Engpässe erkennen und Nacharbeit aufdecken. Woher beziehen Dieses Attribut wird üblicherweise aus mehreren Quellen abgeleitet, darunter Transaktionscodes (SY-TCODE), Statusfelder in Tabellen wie RBKP (z. B. RBSTAT) und Änderungsereignisse aus den Tabellen CDHDR und CDPOS. Beispiele Rechnung geparktRechnung zur Genehmigung eingereichtRechnung genehmigtRechnung gebuchtRechnung ausgeglichen | |||
| Ereigniszeit EventTime | Der genaue Timestamp mit Datum und Uhrzeit, zu dem eine Aktivität stattgefunden hat. | ||
| Beschreibung Die Ereigniszeit erfasst den genauen Zeitpunkt, zu dem eine Geschäftsaktivität im Quellsystem ausgeführt und protokolliert wurde. Dieser Timestamp bildet die chronologische Grundlage des Prozesses und ordnet alle Aktivitäten jeder Rechnung zu einer nachvollziehbaren Abfolge. Für die Analyse ist die Ereigniszeit unverzichtbar, um zeitbasierte Kennzahlen wie Zyklus-, Warte- und Bearbeitungszeiten zwischen Aktivitäten zu berechnen. Sie liefert die Daten für Dashboards wie „End-to-End-Zykluszeit der Rechnung“ und „Dauer bis zur Behebung einer Zahlungssperre“ und ermöglicht so die Messung der Zeit zwischen beliebigen Prozessschritten. Genaue Timestamps sind entscheidend, um Verzögerungen und Leistungsengpässe zu erkennen. Warum das wichtig ist Dieser Timestamp ist wichtig, um Ereignisse korrekt zu ordnen und alle Leistungskennzahlen wie Zykluszeiten und Engpassdauer zu berechnen. Woher beziehen Dieser Wert wird üblicherweise aus dem Änderungsdatum (UDATE) und der Änderungszeit (UTIME) im Änderungsbelegkopf der Tabelle CDHDR gebildet. Bei bestimmten Erstellungsereignissen können Datum und Uhrzeit aus Tabellen wie RBKP (ERNAM, ERZET) stammen. Beispiele 2023-03-15T10:30:00Z2023-03-16T14:05:21Z2023-03-28T09:00:00Z | |||
| Rechnungsnummer InvoiceNumber | Eindeutige Kennung eines Lieferantenrechnungsbelegs. | ||
| Beschreibung Die Rechnungsnummer dient als eindeutige Case-ID für den Ablauf der Rechnungsverarbeitung. Jede Nummer steht für eine einzelne Rechnung eines Lieferanten. So lassen sich alle zugehörigen Aktivitäten von der Datenerfassung bis zur abschließenden Zahlung als Teil eines zusammenhängenden Prozessfalls verfolgen. Bei der Process-Mining-Analyse ist dieses Attribut grundlegend, um den End-to-End-Lebenszyklus jeder Rechnung zu rekonstruieren. Es verknüpft einzelne, in SAP protokollierte Ereignisse wie Parken, Buchen, Sperren und Ausgleichen zu einer chronologischen Abfolge. Dadurch wird sichtbar, wie die jeweilige Rechnung bearbeitet wird, wie lange die Bearbeitung dauert und an welchen Stellen der Prozess vom Standard abweicht. Warum das wichtig ist Dieser Primärschlüssel verknüpft alle Ereignisse zu einer einzelnen Rechnung und bildet damit die Grundlage für die Prozessanalyse und die Untersuchung von Varianten. Woher beziehen In der Regel handelt es sich um die Belegnummer aus der SAP-Tabelle RBKP, Feld BELNR. Für eine eindeutige Kennung wird sie häufig mit dem Buchungskreis (BUKRS) und dem Geschäftsjahr (GJAHR) kombiniert. Beispiele 510004567851000456795100045680 | |||
| Ausgleichsdatum ClearingDate | Das Datum, an dem die Zahlung erfolgte und die Rechnung in der Kreditorenbuchhaltung ausgeglichen wurde. | ||
| Beschreibung Das Ausgleichsdatum kennzeichnet den letzten Schritt im Lebenszyklus einer Rechnung: die Zahlung. An diesem Datum wird der offene Rechnungsposten im System durch einen Zahlungsbeleg ausgeglichen. Es entspricht dem tatsächlichen Zeitpunkt der Zahlungsausführung. Dieses Attribut ist der Endpunkt für zahlreiche wichtige KPIs, darunter die „Durchschnittliche Rechnungsdurchlaufzeit“ und die „Pünktliche Zahlungsquote“. Der Vergleich mit dem Fälligkeitsdatum der Zahlung zeigt, wie pünktlich Zahlungen erfolgen. Bei der Skontoanalyse wird das Ausgleichsdatum mit der Skontofrist verglichen, um festzustellen, ob die Zahlung rechtzeitig für den Skontoabzug eingegangen ist. Warum das wichtig ist Das Datum kennzeichnet den Prozessabschluss und dient als Grundlage für die Berechnung der gesamten Zykluszeit, der pünktlichen Zahlungsquote und der Skontoausschöpfung. Woher beziehen Bei ausgeglichenen Posten ist dies das Feld „Clearing Date“ (AUGDT) aus der Tabelle BSAK mit den ausgeglichenen Lieferantenposten. Beispiele 2023-04-152023-05-022023-05-20 | |||
| Benutzername UserName | Die SAP-Benutzer-ID der Person, die die Aktivität ausgeführt hat. | ||
| Beschreibung Das Attribut Benutzername gibt an, welche Person für eine bestimmte Aktivität im Prozess verantwortlich war. In der Regel handelt es sich um den SAP-Benutzernamen, der bei der Transaktion oder dem Änderungsereignis protokolliert wurde. Dieses Attribut ist wichtig für Leistungsanalysen auf Benutzer- oder Teamebene. Es hilft bei Fragen wie: „Wer genehmigt am schnellsten?“ oder „Welche Benutzer verursachen die meiste Nacharbeit?“ In Dashboards dient es dazu, die Arbeitslast zu analysieren, Schulungsbedarf zu erkennen und Leistungsunterschiede zwischen Mitarbeitenden nachzuvollziehen. Warum das wichtig ist Damit lassen sich Leistung und Arbeitslast einzelner Personen oder Teams analysieren. So können Sie besonders leistungsstarke Mitarbeitende, Schulungsbedarf und eine unausgewogene Ressourcenverteilung erkennen. Woher beziehen Dies ist das Feld „Geändert von“ (USERNAME) im Änderungsbelegkopf der Tabelle CDHDR. Bei Erstellungsereignissen kann es sich um das Feld „Erfasst von“ (ERNAM) in Tabellen wie RBKP handeln. Beispiele JSMITHBWILSONCHEN | |||
| Bestellnummer PurchaseOrderNumber | Kennung der Bestellung (PO), mit der die Rechnung abgeglichen wird. | ||
| Beschreibung Die Bestellnummer verknüpft eine Rechnung mit dem ursprünglichen Beschaffungsbeleg. Sie ist grundlegend für den Drei-Wege-Abgleich (Bestellung, Wareneingang, Rechnung) und für die Analyse der Effizienz des Rechnungsprozesses mit Bestellbezug. Dieses Attribut ist wichtig für Dashboards wie „Abweichungsquote beim Rechnungs-Bestellungs-Abgleich“. Es ermöglicht, Rechnungen mit Bestellbezug von Rechnungen ohne Bestellbezug zu unterscheiden, da diese häufig ganz unterschiedliche Abläufe und Komplexitätsgrade aufweisen. Die Analyse von Problemen bei bestimmten Bestellungen kann helfen, vorgelagerte Schwierigkeiten im Beschaffungsprozess zu erkennen. Warum das wichtig ist Das Attribut verknüpft die Rechnung mit dem Beschaffungsprozess. So lassen sich Rechnungen mit und ohne Bestellbezug vergleichen und Abweichungen beim Abgleich erkennen. Woher beziehen Die Bestellnummer befindet sich üblicherweise auf Positionsebene. Das Feld „Bestellnummer“ (EBELN) steht in der Rechnungstabelle RSEG und muss gegebenenfalls auf Kopfebene aggregiert werden. Beispiele 450001756345000175644500017565 | |||
| Buchungsdatum PostingDate | Das Datum, an dem die Rechnung offiziell in der Finanzbuchhaltung gebucht wurde. | ||
| Beschreibung Das Buchungsdatum ist ein wichtiges Datum im Rechnungswesen. Es legt fest, in welcher Buchungsperiode der Rechnungsaufwand im Hauptbuch erfasst wird. In der Regel trägt die Kreditorenbuchhaltung das Datum während der Rechnungsverarbeitung ein. In der Prozessanalyse ist die durch dieses Datum gekennzeichnete Aktivität „Rechnung gebucht“ ein wichtiger Meilenstein. Die Zeitspanne vom Rechnungseingang bis zum Buchungsdatum ist ein wesentlicher Bestandteil der gesamten Durchlaufzeit. Das Datum ist außerdem entscheidend für die Finanzberichterstattung und Durchsatzanalysen, etwa wenn Sie die Zahl der pro Woche oder Monat gebuchten Rechnungen verfolgen. Warum das wichtig ist Das Datum kennzeichnet einen wichtigen Meilenstein im Prozess, bestimmt die Finanzperiode des Geschäftsvorfalls und fließt in die Berechnung der Zykluszeit ein. Woher beziehen Dies ist das Feld „Posting Date“ (BUDAT) aus der Tabelle RBKP mit den Kopfdaten des Rechnungsbelegs. Beispiele 2023-03-202023-04-052023-04-11 | |||
| Fälligkeitsdatum der Zahlung PaymentDueDate | Das Datum, bis zu dem die Rechnung gemäß den Zahlungsbedingungen an den Lieferanten bezahlt werden muss. | ||
| Beschreibung Das Fälligkeitsdatum der Zahlung wird anhand des Basisdatums der Rechnung und der vereinbarten Zahlungsbedingungen berechnet. Es bezeichnet den Termin, bis zu dem die Zahlung erfolgen muss, damit sie nicht verspätet eingeht und dadurch möglicherweise Gebühren anfallen oder die Geschäftsbeziehung zum Lieferanten belastet wird. Dieses Attribut ist wichtig für Leistungs- und Compliance-KPIs wie die „Pünktliche Zahlungsquote“ und den „Verlust durch nicht genutzte Skontomöglichkeiten“. Durch den Vergleich des tatsächlichen Zahlungsdatums (Ausgleichsdatum) mit dem Fälligkeitsdatum lässt sich automatisch feststellen, ob eine Zahlung pünktlich, vorzeitig oder verspätet erfolgt ist. Das Attribut bildet eine wichtige Grundlage für das Dashboard zur Einhaltung der Zahlungsbedingungen. Warum das wichtig ist Es dient als Grundlage, um die Pünktlichkeit von Zahlungen zu messen und Möglichkeiten für Skonto bei vorzeitiger Zahlung zu erkennen. Woher beziehen Dieses Datum wird häufig berechnet. Das Basisdatum für die Zahlung (ZFBDT) steht in der Tabelle BSEG. Die Berechnung des Fälligkeitsdatums hängt außerdem von den Zahlungsbedingungen (BSEG-ZTERM) ab. Beispiele 2023-04-192023-05-052023-05-11 | |||
| Grund für Zahlungssperre PaymentBlockReason | Ein Code, der angibt, warum eine Rechnung für die Zahlung gesperrt ist. | ||
| Beschreibung Bei Unstimmigkeiten oder wenn eine Rechnung genauer geprüft werden muss, wird eine Zahlungssperre gesetzt. Der Code für den Grund der Zahlungssperre gibt an, warum die Sperre eingerichtet wurde, zum Beispiel wegen einer Mengen- oder Preisabweichung oder durch eine manuelle Sperre. Dieses Attribut ist für das Dashboard zur Dauer der Klärung von Zahlungssperren unverzichtbar. Wenn Sie Häufigkeit und Dauer der Sperren nach Grund analysieren, lassen sich die Ursachen für Zahlungsverzögerungen ermitteln. Ist beispielsweise „Preisabweichung“ der häufigste Grund für lang andauernde Sperren, kann das auf ein Problem mit den Stammdaten oder im Bestellprozess hinweisen, das behoben werden sollte. Warum das wichtig ist Das Attribut erklärt, warum sich Rechnungen verzögern. So können Sie die Ursachen von Zahlungssperren analysieren und Verbesserungsmaßnahmen gezielt priorisieren. Woher beziehen Der Grund für die Zahlungssperre ist auf Positionsebene in der Tabelle RSEG (Feld SPGRS) oder in der Buchhaltungsbelegtabelle BSEG (Feld ZLSPR) zu finden. Beispiele RIM | |||
| Lieferantennummer VendorNumber | Eindeutige Kennung des Lieferanten, der die Rechnung eingereicht hat. | ||
| Beschreibung Die Lieferantennummer ist der Stammdatenschlüssel zur Identifizierung des Lieferanten. Sie verknüpft den Rechnungsvorgang mit einem bestimmten Geschäftspartner und ermöglicht Analysen nach Lieferantenmerkmalen. Eine Analyse nach Lieferantennummer kann wichtige Erkenntnisse zu Lieferantenbeziehungen und deren Leistung liefern. Sie zeigt beispielsweise, welche Lieferanten regelmäßig problematische Rechnungen einreichen, die zu Zahlungssperren oder Abweichungen führen, und wessen Rechnungen besonders effizient verarbeitet werden. Diese Informationen sind für das Lieferantenmanagement und die strategische Beschaffung wertvoll. Warum das wichtig ist Das Attribut ermöglicht lieferantenspezifische Analysen, mit denen sich Muster, Probleme und Effizienzpotenziale bei einzelnen Lieferanten erkennen lassen. Woher beziehen Dies ist das Feld „Rechnungsaussteller“ (LIFNR) im Kopf der Rechnungstabelle RBKP. Beispiele 100345100876200112 | |||
| Rechnungsbetrag InvoiceAmount | Der Bruttogesamtbetrag der Rechnung in der ursprünglichen Belegwährung. | ||
| Beschreibung Der Rechnungsbetrag gibt den Gesamtwert der vom Lieferanten eingereichten Rechnung an. Er ist eine wichtige Finanzkennzahl für jeden Rechnungsfall. Beim Process Mining ist dieses Attribut für wertbezogene Analysen unverzichtbar. Damit lässt sich der Prozess nach Rechnungswert filtern und segmentieren, der häufig mit Prozesskomplexität und Genehmigungsanforderungen zusammenhängt. Rechnungen mit hohem Wert können beispielsweise einen anderen, strengeren Genehmigungsweg durchlaufen. Das Attribut dient auch der Compliance-Analyse, etwa um zu prüfen, ob bei Rechnungen mit hohem Wert erforderliche Genehmigungsschritte umgangen werden. Warum das wichtig ist Das Attribut ermöglicht wertbezogene Analysen. So können Sie Rechnungen mit hohem Wert priorisieren und nachvollziehen, wie sich der Rechnungsbetrag auf Prozessablauf und Compliance auswirkt. Woher beziehen Dies ist das Feld „Bruttorechnungsbetrag“ (RMWWR) im Kopf der Rechnungstabelle RBKP. Beispiele 1500.7512500.00850.20 | |||
| Ablehnungsgrund RejectionReason | Ein Code oder Text, der erklärt, warum eine Rechnung im Freigabe-Workflow abgelehnt wurde. | ||
| Beschreibung Wenn eine prüfende Person eine Rechnung ablehnt, sollte sie idealerweise einen Grund angeben. Das kann ein standardisierter Code oder ein Freitextkommentar sein, etwa „Falsche Bestellnummer“, „Doppelte Rechnung“ oder „Falscher Betrag“. Diese Daten sind für das Dashboard zu Ablehnungsgründen und Trends bei Rechnungen wichtig. Durch die Analyse der Häufigkeit verschiedener Ablehnungsgründe kann das Unternehmen wiederkehrende Probleme erkennen und Gegenmaßnahmen ergreifen. Ist beispielsweise „Falsche Bestellnummer“ ein häufiger Grund, kann das auf Verbesserungsbedarf bei der Kommunikation mit Lieferanten oder auf Schulungsbedarf bei der Dateneingabe hinweisen. Eine solche Analyse hilft, Nacharbeit im Prozess zu verringern. Warum das wichtig ist Das Attribut zeigt die Ursachen für Ablehnungen auf. So lassen sich gezielte Prozessverbesserungen umsetzen, die Nacharbeit verringern und die Quote korrekt bearbeiteter Vorgänge beim ersten Durchlauf erhöhen. Woher beziehen Diese Information wird häufig nicht in einem einzelnen Standardfeld gespeichert. Sie kann in Workflow-Protokollen, Langtextfeldern zum Beleg oder in speziellen Feldern einer kundenspezifischen Workflow-Lösung stehen. Beispiele DUPLICATE_INVWRONG_AMTNO_PO_MATCH | |||
| Belegart DocumentType | Ein Code zur Klassifizierung des Buchhaltungsbelegs, zum Beispiel als Lieferantenrechnung oder Gutschrift. | ||
| Beschreibung In SAP dient die Belegart dazu, verschiedene Arten von Geschäftsvorfällen zu klassifizieren. Bei der Rechnungsverarbeitung sind beispielsweise „RE“ für Standardrechnungen und „KG“ für Lieferantengutschriften üblich. Die Belegart steuert bestimmte Buchungseigenschaften, etwa den verwendeten Nummernkreis. In der Analyse können Sie mit diesem Attribut nach bestimmten Transaktionsarten filtern. Die Verarbeitung einer Gutschrift kann sich beispielsweise deutlich von der einer Standardrechnung unterscheiden. Wenn Sie diese Abläufe anhand der Belegart getrennt betrachten, erhalten Sie eine genauere und aussagekräftigere Prozessansicht. Warum das wichtig ist Das Attribut ermöglicht es, unterschiedliche Geschäftsvorfälle wie Rechnungen und Gutschriften getrennt zu analysieren, da sie verschiedene Prozesse durchlaufen. Woher beziehen Dies ist das Feld „Document Type“ (BLART) aus der Tabelle RBKP mit den Kopfdaten des Rechnungsbelegs. Beispiele REKRKG | |||
| Buchungskreis CompanyCode | Die Kennung der juristischen Person oder des Unternehmens, für das die Rechnung verarbeitet wird. | ||
| Beschreibung Der Buchungskreis ist eine grundlegende Organisationseinheit in SAP Financials und steht für eine eigenständige juristische Person. Alle Finanztransaktionen, einschließlich Rechnungen, werden einem bestimmten Buchungskreis zugeordnet. Mit diesem Attribut können Sie Prozesse nach juristischer Person analysieren. Es ist entscheidend, um Prozessleistung, Compliance und Effizienz verschiedener Unternehmen innerhalb einer Unternehmensgruppe zu vergleichen. Filtern Sie Dashboards nach Buchungskreis, um die KPIs der Rechnungsverarbeitung für ein bestimmtes Unternehmen anzuzeigen. Warum das wichtig ist Das Attribut ermöglicht den Prozessvergleich und das Benchmarking der Leistung verschiedener juristischer Personen innerhalb eines Unternehmens. Woher beziehen Dies ist das Feld „Company Code“ (BUKRS) aus der Tabelle RBKP mit den Kopfdaten des Rechnungsbelegs. Beispiele 10002000US01 | |||
| Endzeit EndTime | Timestamp für den Abschluss einer Aktivität. Bei Ereignissen ohne Dauer entspricht er der Startzeit. | ||
| Beschreibung Das Attribut Endzeit kennzeichnet den Abschluss einer bestimmten Aktivität. Viele Ereignisse in SAP werden als einzelne Zeitpunkte protokolliert, sodass Endzeit und Startzeit identisch sind. Bei Aktivitäten mit messbarer Dauer, etwa einem aktiv bearbeiteten Genehmigungsschritt, kann die Endzeit dagegen den Abschluss der Arbeit angeben. Eine separate Endzeit ermöglicht in der Prozessanalyse, die Bearbeitungszeit einer Aktivität unabhängig von der vorangehenden Wartezeit zu messen. So lässt sich unterscheiden, wie lange eine Aktivität tatsächlich dauert und wie lange ein Case auf ihren Beginn wartet. Das liefert genauere Erkenntnisse zur Ressourceneffizienz. Warum das wichtig ist Damit lässt sich die Bearbeitungszeit einer Aktivität berechnen und von den Wartezeiten zwischen Aktivitäten unterscheiden. Das verbessert die Engpassanalyse. Woher beziehen Häufig entspricht dieser Wert der Startzeit und wird aus CDHDR-UDATE und CDHDR-UTIME abgeleitet. In manchen Fällen lässt er sich aus Workflow-Protokollen ermitteln, in denen Beginn und Ende einer Aufgabe ausdrücklich erfasst sind. Beispiele 2023-03-15T10:35:10Z2023-03-16T14:10:00Z2023-03-28T09:02:45Z | |||
| Letzte Datenaktualisierung LastDataUpdate | Timestamp der letzten Aktualisierung der Prozessdaten aus dem Quellsystem. | ||
| Beschreibung Dieses Attribut erfasst Datum und Uhrzeit der letzten Datenextraktion oder -aktualisierung. Es bezieht sich auf den gesamten Datensatz und nicht auf einzelne Ereignisse und zeigt an, wie aktuell die Daten sind. Dieses Metadatenattribut ist für Dashboard-Benutzer und Analysten besonders wichtig. Es zeigt, welchen Zeitraum die Analyse abdeckt, und hilft sicherzustellen, dass Entscheidungen auf aktuellen Informationen beruhen. Üblicherweise wird es gut sichtbar auf Dashboards angezeigt. Warum das wichtig ist Das Attribut zeigt, wie aktuell die Daten sind, und hilft sicherzustellen, dass Analysen und Entscheidungen auf dem neuesten Stand beruhen. Woher beziehen Dieser Wert wird beim Aktualisieren der Daten vom Extraktions- oder ETL-Tool erzeugt und in den Datensatz eingefügt. Beispiele 2024-05-20T08:00:00Z2024-05-21T08:00:00Z2024-05-22T08:00:00Z | |||
| Quellsystem SourceSystem | Gibt an, aus welchem Quellsystem die Daten extrahiert wurden. | ||
| Beschreibung Das Attribut Quellsystem gibt den Ursprung der Ereignisdaten an, zum Beispiel den Namen einer bestimmten SAP-ECC-Instanz. Das ist besonders wichtig, wenn mehrere ERP-Systeme im Einsatz sind oder Daten aus verschiedenen Quellen zusammengeführt werden. Bei der Analyse hilft dieses Attribut, Prozesse und ihre Leistung über verschiedene Systeme, Regionen oder Geschäftseinheiten hinweg zu unterscheiden, die möglicherweise auf separaten Instanzen arbeiten. Es sorgt für eine nachvollziehbare Datenherkunft und ermöglicht systembezogene Filter und Analysen. Warum das wichtig ist In Umgebungen mit mehreren Systemen liefert das Attribut wichtigen Kontext und ermöglicht eine korrekte Datentrennung sowie systembezogene Leistungsanalysen. Woher beziehen Dieser statische Wert wird üblicherweise bei der Datenextraktion ergänzt. Er steht für die SAP-System-ID (TADIR-SRCSYSTEM) oder eine manuell zugewiesene Kennung der jeweiligen SAP-Instanz. Beispiele SAPECC_PROD_EUECC_US_FINSAP_ERP_6_EHP8 | |||
| Sachkonto GeneralLedgerAccount | Die Nummer des Sachkontos, auf das der Rechnungsaufwand oder die Kosten gebucht werden. | ||
| Beschreibung Das Sachkonto ist das Zielkonto im Kontenplan, auf dem die finanziellen Auswirkungen der Rechnung erfasst werden. Es ist eine wichtige Datengrundlage für die Finanzberichterstattung und das Kostenmanagement. Beim Process Mining ergänzt die Analyse des Sachkontos den Prozessfluss um eine finanzielle Dimension. Das Dashboard zur Analyse der Sachkontennutzung kann Ausgabenmuster aufdecken, mögliche Fehlkontierungen von Rechnungen erkennen und prüfen, ob Kosten den richtigen Abteilungen oder Projekten zugeordnet werden. So werden Prozessausführung und finanzielle Auswirkungen miteinander in Beziehung gesetzt. Warum das wichtig ist Das Attribut ergänzt den Prozess um eine finanzielle Dimension und ermöglicht die Analyse von Kostenverteilung, Ausgabenmustern und möglichen Fehlkontierungen von Rechnungen. Woher beziehen Das Sachkonto steht auf Positionsebene. Die „Sachkontonummer“ (HKONT) finden Sie bei Bestellrechnungen in der Rechnungstabelle RSEG und bei direkten FI-Rechnungen in der Tabelle BSEG. Beispiele 630000655100741000 | |||
| Skonto nicht genutzt IsCashDiscountLost | Ein berechnetes Kennzeichen, das angibt, ob ein verfügbares Skonto nicht in Anspruch genommen wurde. | ||
| Beschreibung Dieses boolesche Attribut wird anhand der Zahlungsbedingungen und des tatsächlichen Zahlungsdatums berechnet. Es erhält den Wert „true“, wenn die Zahlungsbedingungen ein Skonto für vorzeitige Zahlung vorsehen und das Ausgleichsdatum nach Ablauf der Skontofrist liegt. Damit werden finanzielle Verluste durch ineffiziente Prozesse direkt erfasst. Dieses Attribut bildet die Grundlage für das Dashboard zum „Verlust durch nicht genutzte Skontomöglichkeiten“. Damit lässt sich die finanzielle Auswirkung von Verzögerungen bei der Verarbeitung einfach beziffern. Filtern Analysten nach Fällen mit dem Wert „true“, können sie die Prozessvarianten und Engpässe untersuchen, die am häufigsten zum Verfall von Skontomöglichkeiten führen. Das liefert eine fundierte Grundlage für Verbesserungen. Warum das wichtig ist Das Attribut beziffert die finanziellen Verluste durch Prozessverzögerungen und liefert damit ein überzeugendes Argument für die Optimierung des Rechnungsverarbeitungs-Workflows. Woher beziehen Dieses Attribut ist in SAP nicht vorhanden. Es wird bei der Datentransformation berechnet, indem die Zahlungsbedingungen ausgewertet und das ClearingDate mit dem Skonto-Fälligkeitsdatum verglichen wird. Beispiele truefalse | |||
| Überfällig IsOverdue | Ein berechnetes Kennzeichen, das angibt, ob die Rechnung nach ihrem Fälligkeitsdatum bezahlt wurde. | ||
| Beschreibung Dieses boolesche Attribut wird berechnet, indem das Ausgleichsdatum (tatsächliches Zahlungsdatum) mit dem Fälligkeitsdatum der Zahlung verglichen wird. Liegt das Ausgleichsdatum nach dem Fälligkeitsdatum, ist der Wert „true“, andernfalls „false“. Damit lässt sich die Pünktlichkeit jeder Rechnungszahlung direkt messen. Das Attribut vereinfacht die Analyse und Visualisierung in Dashboards. Damit können Sie einfach filtern und aggregieren, um den KPI „Pünktliche Zahlungsquote“ zu berechnen. Außerdem lassen sich Prozessabläufe überfälliger Rechnungen mit denen pünktlich bezahlter Rechnungen vergleichen. So können Sie Prozessmuster erkennen, die zu verspäteten Zahlungen führen. Warum das wichtig ist Das Attribut vereinfacht die Analyse der Zahlungspünktlichkeit und den Vergleich von Prozessen mit pünktlich beziehungsweise verspätet bezahlten Rechnungen. Woher beziehen Dieses Attribut ist in SAP nicht vorhanden. Es wird bei der Datentransformation anhand der Formel ClearingDate > PaymentDueDate berechnet. Beispiele truefalse | |||
| Währung Currency | Währungscode des Rechnungsbetrags. | ||
| Beschreibung Das Attribut „Währung“ gibt an, in welcher Währung der Rechnungsbetrag ausgewiesen ist, zum Beispiel USD, EUR oder JPY. Dieses Attribut liefert den nötigen Kontext zum Rechnungsbetrag. So lassen sich Finanzdaten korrekt interpretieren und aggregieren, insbesondere in international tätigen Unternehmen, die mit mehreren Währungen arbeiten. Die Analyse kann nach Währung gefiltert werden, um die Verarbeitungseffizienz oder Probleme in verschiedenen Währungsräumen zu vergleichen. Für aussagekräftige Finanzaggregationen müssen Beträge gegebenenfalls in eine einheitliche Berichtswährung umgerechnet werden. Warum das wichtig ist Das Attribut liefert den nötigen Kontext zu Finanzbeträgen, damit diese korrekt interpretiert und nach Währung gefiltert und analysiert werden können. Woher beziehen Dies ist das Feld „Currency Key“ (WAERS) aus der Tabelle RBKP mit den Kopfdaten des Rechnungsbelegs. Beispiele USDEURGBP | |||
| Zahlungsbedingungen PaymentTerms | Der Code für die mit dem Lieferanten vereinbarten Zahlungsbedingungen, etwa Skontofristen und Fälligkeitstermine. | ||
| Beschreibung Die Zahlungsbedingungen legen fest, wann eine Rechnung bezahlt werden muss und ob bei vorzeitiger Zahlung Skonto gewährt wird. Beispiele sind „30 Tage netto“ oder „2 % in 10 Tagen, netto 30 Tage“. Im zweiten Fall gilt ein Skonto von 2 % bei Zahlung innerhalb von 10 Tagen, andernfalls ist der volle Betrag innerhalb von 30 Tagen fällig. Dieses Attribut bildet die Grundlage für das Dashboard zum „Verlust durch nicht genutzte Skontomöglichkeiten“ und den KPI „Skontoausschöpfungsquote“. Die Analyse wertet die Zahlungsbedingungen zusammen mit Buchungs- und Zahlungsdaten aus, um festzustellen, ob ein Skonto verfügbar war und tatsächlich in Anspruch genommen wurde. Das Attribut ist auch für das Dashboard zur Einhaltung der Zahlungsbedingungen wichtig. Warum das wichtig ist Das Attribut ist unverzichtbar, um die Ausschöpfung von Skontomöglichkeiten zu analysieren und die finanziellen Auswirkungen von Prozessverzögerungen zu verstehen. Woher beziehen Dies ist das Feld „Terms of Payment Key“ (ZTERM) aus der Tabelle RBKP mit den Kopfdaten des Rechnungsbelegs. Beispiele Z0010001NT30 | |||
Aktivitäten der Purchase-to-Pay-Rechnungsverarbeitung
| Aktivität | Beschreibung | ||
|---|---|---|---|
| Rechnung ausgeglichen | Diese Aktivität kennzeichnet den letzten Schritt eines erfolgreich abgeschlossenen Rechnungslebenszyklus: Die offene Verbindlichkeit wird durch einen Zahlungsbeleg ausgeglichen. Damit ist die Zahlung erfolgt. | ||
| Warum das wichtig ist Als wichtigstes Endereignis ist dieser Schritt entscheidend für die Berechnung der gesamten End-to-End-Bearbeitungszeit. Er bestätigt den erfolgreichen Abschluss des Prozesses und dient zur Messung der pünktlichen Zahlungsleistung. Woher beziehen Dieses explizite Ereignis wird in der Rechnungstabelle BSEG auf Positionsebene erfasst. Das Ausgleichsdatum steht im Feld AUGDT, die Nummer des Ausgleichsbelegs im Feld AUGBL. Erfassung Verwenden Sie das Ausgleichsdatum (BSEG-AUGDT) aus der Position des Rechnungsbelegs. Ereignistyp explicit | |||
| Rechnung gebucht | Bei diesem wichtigen Finanzereignis wird die Rechnung offiziell im Hauptbuch erfasst und eine Verbindlichkeit gebildet. Der Beleg wechselt damit vom vorläufigen Status (geparkt) zu einem endgültigen Buchungssatz. | ||
| Warum das wichtig ist Die Buchung ist ein wichtiger Meilenstein, der die Gültigkeit der Rechnung bestätigt. Sie ist Voraussetzung für die Zahlung und ein wichtiger Indikator für den Durchsatz der Rechnungsverarbeitung. Woher beziehen Dieses explizite Ereignis wird im Belegkopf der Tabelle BKPF erfasst. Als Timestamp dient das Buchungsdatum BKPF-BUDAT. Der Beleg hat anschließend nicht mehr den Status 'geparkt'. Erfassung Verwenden Sie für nicht geparkte Belege (BKPF-BSTAT ist leer oder ' ') das Buchungsdatum (BKPF-BUDAT). Ereignistyp explicit | |||
| Rechnung storniert | Kennzeichnet die Stornierung eines gebuchten Rechnungsbelegs. Dabei wird ein Stornobeleg erstellt, der die finanziellen Auswirkungen der ursprünglichen Rechnung aufhebt. | ||
| Warum das wichtig ist Diese Aktivität weist auf einen wichtigen Ausnahme- und Nacharbeitsprozess hin. Die Häufigkeit und Gründe für Stornierungen können systematische Probleme bei der Rechnungsprüfung und -buchung aufdecken. Woher beziehen Dieses explizite Ereignis wird im Belegkopf der Tabelle BKPF erfasst. Der Kopf des stornierten Belegs enthält die Nummer des Stornobelegs (STBLG) und das Geschäftsjahr (STJAH). Erfassung Ermitteln Sie Belege, bei denen BKPF-STBLG gefüllt ist. Als Timestamp des Ereignisses dient das Buchungsdatum des Stornobelegs. Ereignistyp explicit | |||
| Rechnungsdaten erfasst | Kennzeichnet die erstmalige Anlage des Rechnungsbelegs in SAP, entweder als geparkter oder vollständig gebuchter Beleg. Dies ist üblicherweise das erste im System erfasste Ereignis im Lebenszyklus einer Rechnung und markiert den Startzeitpunkt des Prozesses. | ||
| Warum das wichtig ist Diese Aktivität ist der wichtigste Ausgangspunkt für die Messung der End-to-End-Bearbeitungszeit einer Rechnung. Die Dauer ab diesem Zeitpunkt zeigt Verzögerungen bei der ersten Dateneingabe und Belegerstellung. Woher beziehen Der Erstellungs-Timestamp wird in der SAP-Tabelle BKPF in den Feldern CPUDT (Datum der Erfassung des Buchhaltungsbelegs) und CPUTM (Erfassungszeit) gespeichert. Erfassung Verwenden Sie den Timestamp der Belegerstellung aus dem Kopf der Tabelle BKPF (CPUDT). Ereignistyp explicit | |||
| Zahlungssperre gesetzt | Diese Aktivität tritt ein, wenn eine Position einer Rechnung mit einer Zahlungssperre versehen wird. Die Sperre kann eine Zahlung verhindern. Sie wird entweder automatisch aufgrund von Abweichungen beim Drei-Wege-Abgleich oder manuell aus verschiedenen Gründen gesetzt. | ||
| Warum das wichtig ist Dieses Ereignis ist entscheidend, um die Dauer bis zur Behebung einer Zahlungssperre zu messen und die Ursachen von Zahlungsverzögerungen zu ermitteln. Es macht Probleme bei Preisen, Mengen oder erforderlichen Genehmigungen sichtbar. Woher beziehen Dieses explizite Ereignis lässt sich über Änderungsbelegprotokolle (Tabellen CDHDR und CDPOS) für die Tabelle BSEG, Feld ZLSPR (Zahlungssperrschlüssel), verfolgen. Erfassung Timestamp aus den Änderungsbelegen (CDHDR), wenn sich der Wert von BSEG-ZLSPR von leer zu nicht leer ändert. Ereignistyp explicit | |||
| Rechnung abgelehnt | Zeigt an, dass eine Rechnung während des Genehmigungsprozesses abgelehnt wurde. In der Regel muss sie korrigiert und erneut eingereicht werden, wodurch eine Nacharbeitsschleife entsteht. | ||
| Warum das wichtig ist Die Erfassung von Ablehnungen ist wichtig, um häufige Ursachen wie fehlerhafte Daten oder Richtlinienverstöße zu erkennen. Sie hilft, den Umfang der Nacharbeit zu messen und Ansatzpunkte für Prozessverbesserungen oder die Information von Lieferanten zu finden. Woher beziehen Dieses Ereignis ist üblicherweise als Ablehnungsschritt in den SAP-Business-Workflow-Protokollen zu finden. Es lässt sich auch aus bestimmten Statusänderungen oder Notizen zum Rechnungsbeleg ableiten. Erfassung Timestamp des Ablehnungsschritts in den Workflow-Protokollen oder einer Belegstatusänderung, die eine Ablehnung kennzeichnet. Ereignistyp inferred | |||
| Rechnung genehmigt | Zeigt an, dass die zuständige Stelle die Rechnung formell genehmigt hat. Damit kann sie gebucht und bezahlt werden. Dies ist häufig der letzte Schritt im Workflow. | ||
| Warum das wichtig ist Mit diesem Meilenstein endet die Messung der Genehmigungszykluszeit. Die Freigabe ermöglicht die fristgerechte Zahlung und hilft, die Arbeitslast der Genehmigenden zu analysieren. Woher beziehen Dieses Ereignis wird üblicherweise anhand der SAP-Business-Workflow-Tabellen erfasst, indem der Abschluss einer Genehmigungsaufgabe ermittelt wird. Alternativ lässt es sich aus der Aufhebung einer genehmigungsbezogenen Zahlungssperre ableiten. Erfassung Timestamp des abgeschlossenen Genehmigungsschritts in den Workflow-Protokollen oder Zeitpunkt der Aufhebung einer bestimmten Zahlungssperre. Ereignistyp inferred | |||
| Rechnung geparkt | Zeigt an, dass eine Rechnung in SAP erfasst, aber noch nicht im Hauptbuch gebucht wurde. Dieser vorübergehende Status ermöglicht eine Prüfung, Korrektur oder Genehmigung vor der Finanzbuchung. | ||
| Warum das wichtig ist Wenn Sie verfolgen, wann und wie lange Rechnungen geparkt bleiben, erkennen Sie Engpässe bei der Prüfung und Genehmigung vor der Buchung. Außerdem lässt sich so die Zeit für die Dateneingabe von der Zeit für die Finanzverarbeitung unterscheiden. Woher beziehen Dieser Status wird aus dem Belegstatus in der Tabelle BKPF, Feld BSTAT, abgeleitet. Der Wert 'V' (geparkter Beleg) oder 'W' (geparkter Beleg mit Änderungsfreigabe) kennzeichnet einen geparkten Beleg. Erfassung Ermitteln Sie Belege, bei denen das Statusfeld BKPF-BSTAT den Wert 'V' enthält. Als Timestamp des Ereignisses dient das Erstellungsdatum BKPF-CPUDT. Ereignistyp inferred | |||
| Rechnung wird überfällig | Dieses berechnete Ereignis tritt ein, wenn das aktuelle Datum nach dem Nettofälligkeitsdatum der Rechnung liegt und die Rechnung noch nicht bezahlt wurde. Das Fälligkeitsdatum ergibt sich aus den Zahlungsbedingungen und dem Basisdatum. | ||
| Warum das wichtig ist Diese Aktivität ist wichtig, um die Kennzahl für die pünktliche Zahlungsquote zu überwachen. Sie weist frühzeitig auf Rechnungen hin, bei denen eine verspätete Zahlung droht. Das kann Lieferantenbeziehungen belasten und Strafzahlungen nach sich ziehen. Woher beziehen Dieses Ereignis wird berechnet, indem das aktuelle Datum mit dem Nettofälligkeitsdatum verglichen wird. Das Fälligkeitsdatum ergibt sich aus dem Basisdatum (BSEG-ZFBDT) und den Zahlungsbedingungen (BSEG-ZTERM). Erfassung Das Ereignis wird ausgelöst, wenn Ereignistyp calculated | |||
| Rechnung zur Genehmigung eingereicht | Kennzeichnet den Zeitpunkt, zu dem eine Rechnung in einen formellen Genehmigungs-Workflow übergeben wird. Wie dieses Ereignis erfasst wird, hängt stark von der konkreten Implementierung des SAP Workflow oder eines Drittanbietersystems ab. | ||
| Warum das wichtig ist Mit dieser Aktivität beginnt die Messung der Kennzahl für die Genehmigungszykluszeit von Rechnungen. Sie ist entscheidend, um Verzögerungen in der Genehmigungskette zu erkennen und die Leistung der Genehmigenden zu analysieren. Woher beziehen Dieses Ereignis wird üblicherweise anhand der SAP-Business-Workflow-Tabellen (z. B. SWW_WI2OBJ, SWWLOG) erfasst, indem der Beginn einer bestimmten Genehmigungsaufgabe ermittelt wird. In einfacheren Fällen lässt es sich aus einer Statusänderung in einem benutzerdefinierten Feld ableiten. Erfassung Dazu müssen SAP-Workflow-Protokolle oder benutzerdefinierte Statusfelder analysiert werden, die mit dem Rechnungsbeleg verknüpft sind. Ereignistyp inferred | |||
| Zahlungssperre aufgehoben | Kennzeichnet die Aufhebung einer Zahlungssperre für eine Rechnungsposition, sodass diese im Zahlungslauf berücksichtigt werden kann. Damit ist ein zuvor erkanntes Problem behoben. | ||
| Warum das wichtig ist Mit dieser Aktivität endet die Messung der Sperrdauer. Die Zeit zwischen dem Setzen und der Aufhebung einer Sperre zeigt, wie effizient Probleme behoben werden. Woher beziehen Dieses Ereignis wird über Änderungsbelegprotokolle (Tabellen CDHDR und CDPOS) für die Tabelle BSEG, Feld ZLSPR (Zahlungssperrschlüssel), erfasst, wenn die Sperre aufgehoben wird. Erfassung Timestamp aus den Änderungsbelegen (CDHDR), wenn sich der Wert von BSEG-ZLSPR von nicht leer zu leer ändert. Ereignistyp explicit | |||
Anleitungen zur Datenextraktion
Schritte
- ABAP-Programm erstellen: Legen Sie mit der Transaktion
SE38oderSE80ein neues ausführbares Programm an, zum BeispielZ_PM_INVOICE_EXTRACT. Geben Sie einen passenden Titel ein und wählen Sie als Typ „Ausführbares Programm“. - Selektionsbild definieren: Richten Sie im Programm ein Selektionsbild ein, über das Benutzer die Daten filtern können. Zu den wichtigsten Parametern gehören Buchungskreis (
BUKRS), Geschäftsjahr (GJAHR), Buchungsdatumsbereich (BUDAT) und ein Parameter für den Pfad der Ausgabedatei auf dem Anwendungsserver. - Datenstrukturen deklarieren: Definieren Sie eine interne Tabellenstruktur für das endgültige Event Log. Sie muss alle erforderlichen und empfohlenen Attribute enthalten:
InvoiceNumber,Aktivität,EventTime,UserName,VendorNumber,PurchaseOrderNumber,InvoiceAmount,PostingDate,PaymentDueDate,PaymentBlockReasonundClearingDate. - Logik für die Datenauswahl implementieren: Schreiben Sie die zentrale ABAP-Logik zur Auswahl der Rechnungsdaten. Dazu führen Sie mehrere Selektionen durch und fassen die Ergebnisse in der endgültigen Event-Log-Tabelle zusammen.
- Wählen Sie zunächst anhand der Kriterien auf dem Selektionsbild Kopf- und Positionsdaten aus den primären Rechnungstabellen
BKPF,BSEG,RBKPundRSEGaus. - Erzeugen Sie für jede Rechnung grundlegende Ereignisse wie „Rechnungsdaten erfasst“ (aus dem Erstellungs-Timestamp) und „Rechnung gebucht“ (aus dem Buchungs-Timestamp).
- Fragen Sie die Änderungsbelegtabellen
CDHDRundCDPOSab, um Änderungen an Zahlungssperren zu ermitteln (FeldZLSPRinBSEG). Erstellen Sie für jede relevante Änderung die Ereignisse „Zahlungssperre gesetzt“ und „Zahlungssperre aufgehoben“. - Ermitteln Sie das Ereignis „Rechnung ausgeglichen“, indem Sie in der Tabelle
BSEGnach einem Ausgleichsbeleg (AUGBL) und einem Ausgleichsdatum (AUGDT) suchen. - Ermitteln Sie das Ereignis „Rechnung storniert“, indem Sie im Kopf der Tabelle
BKPFnach einem Stornobeleg (STBLG) suchen. - Implementieren Sie eine kundenspezifische Logik zur Erfassung von Workflow-Ereignissen wie „Rechnung zur Genehmigung gesendet“, „Genehmigt“ und „Abgelehnt“. Dieser Teil hängt stark von der jeweiligen Kundenkonfiguration ab. Passen Sie den Code an die Tabellen oder Statusfelder Ihres Workflows an.
- Wählen Sie zunächst anhand der Kriterien auf dem Selektionsbild Kopf- und Positionsdaten aus den primären Rechnungstabellen
- Berechnete Ereignisse erzeugen: Berechnen Sie in der Programmlogik das Ereignis „Rechnung wird überfällig“. Vergleichen Sie dazu bei allen unbezahlten Rechnungen das Fälligkeitsdatum (
PaymentDueDate) mit dem aktuellen Datum. Liegt das Fälligkeitsdatum in der Vergangenheit, erstellen Sie ein Ereignis mit dem Fälligkeitsdatum alsEventTime. - Event-Log-Tabelle füllen: Formatieren Sie die Daten zu jeder Rechnung aus den verschiedenen Quellen und fügen Sie sie als neue Zeilen in die endgültige interne Event-Log-Tabelle ein, eine Zeile pro Aktivität.
- Daten in eine Datei exportieren: Schreiben Sie den Inhalt der endgültigen internen Tabelle mit den Anweisungen
OPEN DATASET,TRANSFERundCLOSE DATASETin eine einfache Datei. Verwenden Sie dazu den auf dem Selektionsbild angegebenen Pfad auf dem SAP-Anwendungsserver. Legen Sie ein einheitliches Trennzeichen wie ein Semikolon oder einen Tabulator fest, um eine CSV-Datei zu erstellen. - Datenextraktion einplanen: Erstellen Sie für regelmäßige Datenextraktionen eine Variante mit den gewünschten Selektionskriterien und planen Sie die Ausführung als Hintergrundjob über die Transaktion
SM36ein. - Ausgabedatei abrufen: Öffnen Sie über die Transaktion
AL11das Verzeichnis auf dem SAP-Anwendungsserver und suchen Sie die erzeugte Datei. Laden Sie sie mit der TransaktionCG3Yauf Ihren Rechner herunter. - Upload vorbereiten: Öffnen Sie die CSV-Datei vor dem Upload in ein Process-Mining-Tool und prüfen Sie, ob die Spaltenüberschriften stimmen, das Datenformat einheitlich ist, insbesondere bei Timestamps, und das erwartete Trennzeichen verwendet wird. Speichern Sie die Datei in UTF-8-Codierung.
Konfiguration
- Selektionskriterien: Der ABAP-Report sollte ein umfassendes Selektionsbild enthalten. Besonders wichtig sind:
Company Code (BUKRS): Begrenzen Sie die Extraktion auf bestimmte rechtliche Einheiten.Posting Date (BUDAT): Legen Sie den Zeitraum für die Extraktion fest. Es empfiehlt sich, die Daten in überschaubaren Abschnitten zu extrahieren, zum Beispiel jeweils für 3 bis 6 Monate.Document Type (BLART): Nehmen Sie nur relevante Rechnungsbelegarten auf, zum Beispiel „RE“ für Logistikrechnungen und „KR“ für Kreditorenrechnungen.
- Pfad der Ausgabedatei: Ein Pflichtparameter für den vollständigen Pfad und Dateinamen auf dem SAP-Anwendungsserver, unter dem die Ausgabedatei erstellt wird. Der Benutzer, der den Report ausführt, benötigt Schreibberechtigung für dieses Verzeichnis.
- Leistungshinweise: Führen Sie den Report bei großen Datenmengen außerhalb der Spitzenzeiten als Hintergrundjob aus, um Leistungseinbußen im System zu vermeiden. Wählen Sie in der Logik nur die erforderlichen Tabellenfelder aus und verwenden Sie nach Möglichkeit die Standardindizes der SAP-Datenbank.
- Voraussetzungen und Berechtigungen: Der Benutzer oder das Servicekonto für die Extraktion benötigt:
- Berechtigungen zum Ausführen von ABAP-Reports (Teil von
S_PROGRAM). - Lesezugriff auf Finanz- und Logistiktabellen wie
BKPF,BSEG,RBKP,RSEG,CDHDRundCDPOS. - Berechtigung zum Schreiben von Dateien in das angegebene Verzeichnis auf dem Anwendungsserver (
S_DATASET). - Zugriff auf die Transaktionen
SE38,SM36,AL11undCG3Yfür Entwicklung, Einplanung und Abruf der Dateien.
- Berechtigungen zum Ausführen von ABAP-Reports (Teil von
a Beispielabfrage abap
REPORT Z_PM_INVOICE_EXTRACT.
*&---------------------------------------------------------------------*
*& Tables for Selection Screen
*&---------------------------------------------------------------------*
TABLES: BKPF, RBKP.
*&---------------------------------------------------------------------*
*& Data Declarations
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_event_log,
InvoiceNumber TYPE belnr_v,
Activity TYPE string,
EventTime TYPE timestamp,
UserName TYPE uname,
VendorNumber TYPE lifnr,
PurchaseOrderNumber TYPE ebeln,
InvoiceAmount TYPE wrbtr,
PostingDate TYPE budat,
PaymentDueDate TYPE faedt,
PaymentBlockReason TYPE rstgr,
ClearingDate TYPE augdt,
END OF ty_event_log.
DATA: gt_event_log TYPE TABLE OF ty_event_log,
gs_event_log TYPE ty_event_log.
DATA: lt_bkpf TYPE TABLE OF bkpf,
ls_bkpf TYPE bkpf,
lt_bseg TYPE TABLE OF bseg,
ls_bseg TYPE bseg.
DATA: lt_rbkp TYPE TABLE OF rbkp,
ls_rbkp TYPE rbkp.
*&---------------------------------------------------------------------*
*& Selection Screen
*&---------------------------------------------------------------------*
SELECT-OPTIONS: s_bukrs FOR bkpf-bukrs OBLIGATORY,
s_gjahr FOR bkpf-gjahr OBLIGATORY,
s_budat FOR bkpf-budat.
PARAMETERS: p_fpath TYPE string OBLIGATORY DEFAULT '/usr/sap/tmp/invoice_events.csv'.
*&---------------------------------------------------------------------*
*& Start of Program Logic
*&---------------------------------------------------------------------*
START-OF-SELECTION.
" Select FI Invoices (e.g., Doc Type KR)
SELECT * FROM bkpf INTO TABLE lt_bkpf
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat
AND blart = 'KR'.
" Select MM Invoices
SELECT * FROM rbkp INTO TABLE lt_rbkp
WHERE bukrs IN s_bukrs
AND gjahr IN s_gjahr
AND budat IN s_budat.
* --- Process FI Invoices ---
LOOP AT lt_bkpf INTO ls_bkpf.
CLEAR gs_event_log.
gs_event_log-InvoiceNumber = ls_bkpf-belnr.
gs_event_log-PostingDate = ls_bkpf-budat.
SELECT SINGLE * FROM bseg INTO ls_bseg
WHERE bukrs = ls_bkpf-bukrs
AND belnr = ls_bkpf-belnr
AND gjahr = ls_bkpf-gjahr
AND koart = 'K'. " Vendor Line Item
IF sy-subrc = 0.
gs_event_log-VendorNumber = ls_bseg-lifnr.
gs_event_log-InvoiceAmount = ls_bseg-wrbtr.
gs_event_log-ClearingDate = ls_bseg-augdt.
" Calculate Due Date
CALL FUNCTION 'DETERMINE_DUE_DATE'
EXPORTING
i_bseg = ls_bseg
IMPORTING
e_faedt = gs_event_log-PaymentDueDate.
ENDIF.
" Activity: Invoice Data Captured
gs_event_log-Activity = 'Invoice Data Captured'.
CONVERT DATE ls_bkpf-cpudt TIME ls_bkpf-cputm INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Parked (if BSTAT = 'V')
IF ls_bkpf-bstat = 'V'.
gs_event_log-Activity = 'Invoice Parked'.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Posted
gs_event_log-Activity = 'Invoice Posted'.
CONVERT DATE ls_bkpf-budat TIME ls_bkpf-cputm INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
" Activity: Invoice Cleared
IF ls_bseg-augbl IS NOT INITIAL.
gs_event_log-Activity = 'Invoice Cleared'.
CONVERT DATE ls_bseg-augdt INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_bseg-usnam_cl.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Becomes Overdue
IF gs_event_log-PaymentDueDate IS NOT INITIAL AND gs_event_log-PaymentDueDate < sy-datum AND ls_bseg-augbl IS INITIAL.
gs_event_log-Activity = 'Invoice Becomes Overdue'.
CONVERT DATE gs_event_log-PaymentDueDate INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = 'SYSTEM'.
APPEND gs_event_log TO gt_event_log.
ENDIF.
" Activity: Invoice Reversed
IF ls_bkpf-stblg IS NOT INITIAL.
DATA: ls_rev_bkpf TYPE bkpf.
SELECT SINGLE budat, usnam FROM bkpf INTO ls_rev_bkpf
WHERE belnr = ls_bkpf-stblg AND bukrs = ls_bkpf-bukrs AND gjahr = ls_bkpf-gjahr.
IF sy-subrc = 0.
gs_event_log-Activity = 'Invoice Reversed'.
CONVERT DATE ls_rev_bkpf-budat INTO TIME STAMP gs_event_log-EventTime TIME ZONE sy-zonlo.
gs_event_log-UserName = ls_rev_bkpf-usnam.
APPEND gs_event_log TO gt_event_log.
ENDIF.
ENDIF.
ENDLOOP.
* --- NOTE: The logic for MM invoices (from lt_rbkp) would be similar, joining RBKP with RSEG.
* --- NOTE: The logic for Payment Blocks and Workflow events requires reading change documents (CDHDR/CDPOS)
* --- or custom workflow tables. Below is a conceptual example for payment blocks.
* --- Conceptual Example for 'Payment Block Set' / 'Released' using Change Docs
* DATA: lt_cdhdr TYPE TABLE OF cdhdr, ls_cdhdr TYPE cdhdr,
* lt_cdpos TYPE TABLE OF cdpos, ls_cdpos TYPE cdpos.
* SELECT * FROM cdhdr INTO TABLE lt_cdhdr
* WHERE objectclas = 'BELEG' AND objectid IN (SELECT belnr FROM bkpf WHERE ...).
* LOOP AT lt_cdhdr.
* SELECT * FROM cdpos INTO TABLE lt_cdpos
* WHERE changenr = ls_cdhdr-changenr AND tabname = 'BSEG' AND fname = 'ZLSPR'.
* LOOP AT lt_cdpos.
* "... logic to create 'Payment Block Set' (if VALUE_NEW is not blank)
* "... or 'Payment Block Released' (if VALUE_NEW is blank) events.
* ENDLOOP.
* ENDLOOP.
* --- Conceptual Example for Workflow events ('Sent For Approval', 'Approved', 'Rejected')
* --- This part MUST be customized based on your specific workflow implementation (e.g., OpenText VIM, SAP WF).
* --- You would query the relevant workflow tables or status change tables here.
*&---------------------------------------------------------------------*
*& Write to File
*&---------------------------------------------------------------------*
END-OF-SELECTION.
DATA: lv_string TYPE string,
lv_header TYPE string.
" Create Header
lv_header = 'InvoiceNumber;Activity;EventTime;UserName;VendorNumber;PurchaseOrderNumber;InvoiceAmount;PostingDate;PaymentDueDate;PaymentBlockReason;ClearingDate'.
OPEN DATASET p_fpath FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
IF sy-subrc = 0.
TRANSFER lv_header TO p_fpath.
LOOP AT gt_event_log INTO gs_event_log.
CONCATENATE gs_event_log-InvoiceNumber
gs_event_log-Activity
gs_event_log-EventTime
gs_event_log-UserName
gs_event_log-VendorNumber
gs_event_log-PurchaseOrderNumber
gs_event_log-InvoiceAmount
gs_event_log-PostingDate
gs_event_log-PaymentDueDate
gs_event_log-PaymentBlockReason
gs_event_log-ClearingDate
INTO lv_string SEPARATED BY ';'.
TRANSFER lv_string TO p_fpath.
ENDLOOP.
CLOSE DATASET p_fpath.
ELSE.
MESSAGE 'Error opening file.' TYPE 'E'.
ENDIF. Möchten Sie loslegen?
Mit diesem Template können Sie wertvolle Erkenntnisse gewinnen und die Purchase-to-Pay-Rechnungsverarbeitung gezielt verbessern. Beginnen Sie noch heute mit der Datenextraktion und optimieren Sie Ihre Abläufe.
Optimieren Sie noch heute Ihre Purchase-to-Pay-Rechnungsverarbeitung
Decken Sie Ineffizienzen auf und verkürzen Sie die Rechnungsdurchlaufzeit um 30 %.
Keine Kreditkarte erforderlich. In wenigen Minuten eingerichtet.