Automating SAP from the inside, when IT can't help
Python that drives the SAP GUI directly to automate high-volume, error-prone tasks — with read-back validation and a full status log.
Context
A lot of finance work in a big-ERP shop is mechanical: re-keying hundreds of master-data changes, mass-updating fields across line items, repeating the same transaction sequence row after row. It's slow, mind-numbing, and exactly the kind of work where humans make quiet errors. The usual answer — "ask IT for a custom program" — stalls, because central IT is locked-down and over-subscribed.
Challenge
Automate these tasks without waiting on IT, without admin rights, and without the fragility of screen-coordinate clicking — while making absolutely sure the bot doesn't silently write the wrong value to a live system.
What I built
A toolkit of Python scripts that attach to the running SAP session via GUI scripting (win32com) and drive transactions the same way a user would, but at machine speed and accuracy. The pattern, reused across tasks:
- Read the work list from Excel, loop row by row.
- Navigate the transaction by field ID, not screen position, so it's robust to window size and layout.
- Read the target field back before writing, so the bot confirms it's changing the right thing.
- Write the status of every row back to Excel — done or error-with-reason — so there's a complete audit trail and a clean restart point if a run is interrupted.
It handles the realities too: locked or already-approved records are caught and skipped with a logged reason rather than crashing the run.
Outcome
Tasks that took a person hours of error-prone keying run in minutes, with a verifiable log of exactly what changed. No IT ticket, no admin password, no fragile coordinate clicking — and a reusable pattern that drops onto the next mechanical SAP task.