SAP ECC readiness2026-11-09

What the custom code is worth before the migration

Built from the custom object list and a twelve-month usage log: 2,400 objects, 2,886,517 lines.

815 objects have never been executed, 112 are modified standard, and 61% of the estate is actually in use.

Objects2,400 Lines2,886,517 Dead code815 Modified standard112 Effort888.0 days PathBrownfield conversion

By object type

TypeObjectsNever usedModifiedLines
REPORT900330481,079,094
CLASS45015226558,724
FUNCTION3001068348,484
TABLE220859258,670
FORM2006911222,499
ENHANCEMENT180645226,651
INTERFACE150545192,395

Where the code lives

PackageObjects
ZSD332
ZMM316
ZFI300
ZLEGACY297
ZWM294
ZPP290
ZCUSTOM287
ZHR284
A package with a high share of dead objects is the first candidate for decommissioning. Legacy packages usually hold the oldest code and the least ownership.

Findings

HIGH Custom code that nothing has executed in twelve months

815 of 2400 objects (33%, 962,650 lines) have zero executions. Every one of them is migration scope you are about to pay for and do not need.

Do this: Retire before the migration, not during it: deactivate, monitor for a quarter, then delete. It is the cheapest scope reduction available and it makes the business case smaller.

HIGH Modified standard objects

112 objects carry a modification flag. These are the expensive ones: each has to be re-implemented as a BAdI, an enhancement, or a clean extension in S/4, and each needs a functional owner to say what it was for.

Do this: Inventory them with their business reason first. A modification nobody can justify is a deletion, not a migration item.

MEDIUM Interfaces that need a new home

150 interface objects. In S/4 these move to APIs, CPI or event-driven integration, and the target is a design decision, not a rewrite.

Do this: Group by partner and protocol; one modern integration can often replace several IDoc or file drops.

LOW A small number of objects carry the load

The busiest custom objects are REP_0621 (89,963 runs), FOR_0047 (89,893 runs), FOR_0141 (89,873 runs), CLA_0048 (89,826 runs), TAB_0190 (89,826 runs).

Do this: These are the ones that must be regression-tested hardest; everything else is a volume problem.

Scope reduction, quantified

Retiring the 815 dead objects removes 962,650 lines and roughly 40.8 days of migration effort at the model below, before any functional conversation. The re-implementation of 112 modified standard objects is the expensive half: 168.0 days on its own.

How the estimate is built

Effort = used objects × 0.4 days + dead objects × 0.05 + modified standard × 1.5 + interfaces × 0.6. It is a planning floor, not a quote: it excludes functional design, data migration, testing cycles, and the S/4 licence change.

What this cannot see

An object list and a usage log do not show code quality, data volume, customising (SPRO) changes, or which objects are legally required. Ask for the ATC / SQLM check results, the customising inventory, and one business owner per package before committing to a path.