Back to projects

SAP Cleanup Cockpit

A dashboard for managing open scheduling agreements during an S/4HANA transformation.

A walkthrough of the KPIs, the 3,596-item worklist, and the columns used to suggest, confirm, and track cleanup decisions.

This self-tested MVP uses an SAP-like extract of 3,596 open scheduling agreement items. It has no live SAP connection yet. The suggestions are rule-based and reviewers can override them; the prototype tests a review process rather than a production AI recommendation system.

Why I built it

I have done SAP cleanup work through queries, Excel extracts, and a sprawl of formulas. The spreadsheet had to normalize the data, suggest what to do, track ownership, and record what had already been resolved. It worked, but it was slow and fragile, and most of the context lived with the person maintaining the file.

I could not find an off-the-shelf product for this part of SAP migration work. I built a prototype around an SAP-like extract with 3,596 open scheduling agreement items.

This version uses SD scheduling agreements. The same review process could also work for deliveries, sales orders, and other SAP documents.

What I built

I built and tested the MVP myself. It is intended for SAP migration and cleanup teams that would otherwise coordinate this work in a shared spreadsheet.

The source is the CW37 Open SA sheet, keyed by scheduling agreement number and item. The app adds KPIs, filters, pagination, and a grouped view of every item under the same agreement.

Each row has a rule-based suggestion and an explanation. A reviewer can change the decision, assign an owner, leave a comment, see the audit history, and export the results to CSV or Excel.

What the prototype showed

The dashboard was straightforward. The difficult part was handling free-text notes, inconsistent ownership, and the difference between “this is still needed” and “someone resolved this but never updated the file.”

The suggested action works better as a visible rule than as a black-box recommendation. Reviewers need to understand it and override it when the source data is wrong or incomplete.

The prototype clearly labels the data as an SAP-like extract. It does not have a live SAP connection yet.

What I’d change

The next step is to pull documents through an OData feed instead of a static Excel extract. After that, I would add deliveries, sales orders, and other document types.

I would also add real owner assignment, notifications, and a shared review state. In the manual process, missed updates caused as much trouble as the data itself.

How I built it

I cleaned the Excel workbook, loaded it into SQLite, and built the review interface on top.

I used Next.js and React with TypeScript, Tailwind for styling, Recharts for the charts, and ExcelJS and read-excel-file for workbook imports and exports.