Lesson 3 of 5
Custom Code Migration app
12 min
Listen to this lesson
The Custom Code Migration app is SAP's Fiori app for running this process end to end. It started on SAP S/4HANA as a central check system and is also offered in the SAP BTP ABAP environment, where SAP provides an automated setup. SAP lists it among the tools included with RISE with SAP, alongside SAP Readiness Check. It uses remote ATC underneath, so lesson 2 still applies; the app adds scoping, analytics and tracking on top.
The app runs in two places. In the SAP BTP ABAP environment, SAP provides the setup described below. On premise, an SAP S/4HANA system (1809 or later) can act as the central check system and run the app itself. Either way, the checked ECC system needs the remote stubs from lesson 2.
What the app does
| Area | What you can do | Why it matters |
|---|---|---|
| Scoping | Upload usage data, define scope from it, adjust by hand, remove complex packages, save the scope as a transport request | Turns usage evidence into a scope and a deletion list |
| Analysis | Run remote ATC on the scope; view findings by SAP Note, scope, priority and quick fix availability | Shows where effort sits and what can be fixed semi-automatically |
| Tracking | Findings burn-down over time; download of results, for example for SAP Readiness Check | Gives the PMO a progress measure |
| Navigation | Detail of each finding and direct navigation to the source code | Speeds the developer's work |
Setting it up in SAP BTP
- Use an SAP BTP ABAP environment instance (SAP's tutorial notes a trial account is not enough, because the app needs connectivity to your system).
- Connect the ECC system through the SAP Cloud Connector and create a destination.
- Implement the SAP Notes that provide remote stubs and analysis support in the checked system.
- Create a communication system and the communication arrangement for the custom code migration scenario.
- Assign the custom code migration business catalog to the right business role so the app appears in the launchpad.
- Create a custom code migration project: target release, destination and transition scenario.
A project in the app, step by step
- Create a project with the destination to ED1, the transition scenario (system conversion) and the target release (SAP S/4HANA 2025).
- Load the SUSG usage snapshot and let the app propose a scope: used objects in, unused objects out.
- Adjust the scope by hand with the owners’ decisions from lesson 1, and save it.
- Start the analysis. The app runs remote ATC on the scope; a large scope takes hours, so Contoso runs it overnight.
- Work the results by SAP Note, quick fix availability and priority, and navigate from a finding to the code.
- Re-run after each batch of fixes and after each simplification database update; the burn-down moves with every run.
- Before the conversion, build the deletion transport from the out-of-scope objects, after the gCTS backup.
Basis owns most of this. At Contoso, Sam's team connected ED1 through the Cloud Connector, and Kenji's developers use the app in a browser. The project setting that matters most is the transition scenario and target: a system conversion to SAP S/4HANA 2025 runs different checks than an analysis for moving code to SAP BTP.
Reading the results
Start with findings by SAP Note: it shows which simplification areas carry most of the work and lets one developer fix the same pattern everywhere. Then look at findings by quick fix availability: those are candidates for semi-automatic adaptation in lesson 4. Findings by priority separates errors that break the code from information you can schedule later. The burn-down chart becomes the custom code line on Grace's weekly program dashboard.
- Is the object in scope?Yes → next question · No → leave it to the deletion transport
- Is a quick fix available?Yes → batch it in ADT, then review · No → next question
- Can the fix be made in ECC and still work?Yes → fix before conversion · No → plan it for the converted development system
- Is the object complex or heavily modifying SAP code?Yes → review for redesign or back to standard · No → assign to the package owner
Complexity and clean core
SAP positions the app as a way to reinforce a clean core during a conversion. Beyond findings, it helps spot complex developments that drive cost: candidates to return to standard, to remove, to rebuild as small in-app extensions, or to move side-by-side as loosely coupled extensions. A conversion does not require you to redesign everything, but each object you adapt as it is becomes something you maintain on every future upgrade.
SAP now sorts extensions into four clean core levels, and names the ABAP Test Cockpit as the key tool for governing them in code. Level A uses only publicly released, stable interfaces (ABAP Cloud). Level B also uses SAP’s classic APIs and technologies, such as BAPIs. Level C accesses SAP internal objects and is partially compliant. Level D uses explicitly non-recommended objects or techniques, such as modifications or direct writes to SAP tables. An extension takes the level of its least clean part: one modification makes it level D.
| Level | Objects | Extensions | Contoso’s plan |
|---|---|---|---|
| A | 1,200 | 18 | Keep; the model for all new development |
| B | 4,000 | 64 | Keep; classic APIs SAP treats as stable |
| C | 2,000 | 121 | Keep for now; retest on every upgrade and move to released successors when touched |
| D | 300 | 37 | Reduce: none left in order to cash and finance by the end of year 1, under 20 extensions by the end of year 2 |
Contoso’s 7,500 in-scope objects in 240 extensions, by clean core level. The level D targets are post-go-live goals, not conversion blockers.
AI assistance. SAP’s Joule for developers in ABAP Development Tools can explain legacy code, support custom code migration with analysis, explanations and suggestions, and generate ABAP Unit tests. Treat its output like a quick fix: a proposal that a developer reviews and a test confirms. What your landscape can use depends on release, deployment and SAP’s AI terms, so verify it before you plan effort around it.
Keep one source of truth. Findings live in the app, but decisions often get made in meetings and spreadsheets. At Contoso, every scoping and triage decision (retire, back to standard, redesign, adapt) is recorded against the object in the app or in a single list linked to it, with the owner's name. When the auditors or a new developer ask why an object was deleted or rewritten, the answer is one click away instead of buried in an email thread.
What would you do?
Grace wants one custom code number for the steering committee. The app shows 3,900 findings, 1,700 of them with a quick fix, on 7,500 in-scope objects. Which measure should Kenji report?
- The Custom Code Migration app adds scoping, analytics and tracking to remote ATC.
- In SAP BTP it connects to ECC through the Cloud Connector; a trial account is not enough.
- Read findings by SAP Note, quick fix availability and priority; track the burn-down.
- Use it to spot complex code for back to standard, redesign or side-by-side extension.
- Clean core levels A to D classify what you keep; one modification makes an extension level D.
Check your understanding · not graded
Lesson check
1. What does the Custom Code Migration app use underneath for its analysis?
2. How does the BTP-based app reach an on-premise ECC system?
3. Which view helps one developer fix the same pattern everywhere?
4. Which measure best reports custom code progress to a steering committee?
5. Which clean core level fits an extension that modifies SAP code?