Moving to S/4 fails when millions of Z-lines block ATC checks and Go-Live windows are counted in minutes. We show how a Micro-GCC squad automated ABAP Test Cockpit (ATC) pipelines, fixed 77 % of findings robotically, and executed a blue/green cut-over that kept the plant floor read-only for just 11 minutes. Terraform, Jenkinsfile, and a one-line Python diff-tool are included.
Every ECC customer has 0.5–3 M lines of Z-objects. In theory you:
Reality:
Solution: automate 80 % of fixes and switch traffic using blue/green so users barely notice.
| Stage | Tool | Action |
| 1. Pull | abapGit | Export Z-packages to Git (gCTS optional). |
| 2. Static Fixes | Python AST + RegEx | Auto-replace obsolete calls (CL_GUI_ALV_GRID → CL_SALV_TABLE). |
| 3. ATC Batch | sapcli atc run | Jenkinsfile executes ATC variant S4H_READINESS. |
| 4. Auto-Waive Low-Risk | Custom script | Waive findings tagged CUST_SEARCH_HELP. |
| 5. MR Creation | GitHub API | PR raised with diff + ATC HTML report. |
| 6. Peer + Architect Review | PR reviewers | Only critical findings need human fix. |
| 7. Transport Build | Jenkinsfile → CTS+ | Auto-build transport; tag with Git SHA. |
Metrics (1.2 M Z-LOC project):
| Phase | % Findings Closed | Time |
| Static fixes | 42 % | 2 h |
| Auto-waive | 35 % | < 10 m |
| Human review | 23 % | 3 work-days |
ATC report dropped from 10 230 » 1 855 critical issues—sprint scope, not death march.
Measured downtime (plant MES tests): 11 min 18 s—within agreed 15-min SLA.
python
CopyEdit
import re, pathlib, sys
OLD_NEW = {
r”(?i)cl_gui_alv_grid”: “cl_salv_table”,
r”\bws_upload\b”: “gui_upload”,
}
def fix_file(path):
txt = pathlib.Path(path).read_text(encoding=”latin1″)
for pat, repl in OLD_NEW.items():
txt = re.sub(pat, repl, txt)
pathlib.Path(path).write_text(txt, encoding=”latin1″)
if __name__ == “__main__”:
for f in pathlib.Path(sys.argv[1]).rglob(“*.abap”):
fix_file(f)
Runs in Jenkins before ATC; cut findings 18 %.
Smoke test failure at T+4 min triggers unattended rollback; plant ops never notice.
| Metric | Manual Cleanup | Automated Flow |
| Dev hours | 480 h | 72 h |
| Downtime window | 8 h | 11 min |
| Transport errors | 34 | 3 |
| Project timeline | 9 months | 5 months |
ROI: $96 k dev cost saved; Go-Live four months earlier.
| Pitfall | Fix |
| abapGit ignores SAPLINK objects | Use zabapgit_full & whitelist append structures. |
| Waived findings audit fails | Store waiver reason in PR template; auditors accept. |
| SUM downtime > 15 min | Pre-import huge tables (MARA) during mock-run; delta only at cut-over. |
| F5 DNS TTL too long | Lower TTL to 30 s two weeks before Go-Live. |
| Users cached old UI5 | Bust cache via sap-ui-cachebuster/ URL param. |