Skip to Content
Technical Articles

Custom code adaptation for SAP S/4HANA – FAQ

This document tries to answer the most important questions around the custom code adaptation process for SAP S/4HANA.

For general information about custom code adaptation process to SAP S/4HANA please take a look at our central blog SAP S/4HANA System Conversion – Custom code adaptation process.

If you have common questions, which should be answered in this collection, you can propose them here, in case you are interested to discuss more specific topics please take part at the forum/discussions.

Frequently Asked Questions


Usage analysis

Custom code analysis

SAP Fiori App Custom Code Migration

Custom code adaptation

Frequently Asked Questions


Is this custom code adaptation process only for the conversion to the SAP S/4HANA or also for the database migration from Any DB to SAP HANA?

This process is only of limited use for the SAP HANA migration and is not recommended. For custom code adaptation to SAP HANA check the blog ABAP custom code adaptation for SAP HANA – The efficient way.

What is the difference between custom code analysis within SAP Readiness Check and with ATC? What do I need to use?

SAP Readiness Check should be used in the planning phase of an SAP S/4HANA conversion. SAP Readiness Check provides a high-level overview of the custom code analysis and gives you the impression about the upcoming efforts. The ATC should be used in the project phase of an SAP S/4HANA conversion. The ATC executes deep custom code analysis and detects all critical usages of simplified SAP standard objects in your custom code which must be adapted.

Can I use the Custom Code Migration Worklist instead of remote ATC? What is the advantage of remote ATC?

The custom code analysis with Custom Code Migration Worklist is only offered on SAP NetWeaver AS ABAP 7.50. It is not provided anymore on >7.50 releases and was replaced by the remote ATC. Technically the Custom Code Migration Worklist approach is based on the SYCM tool. The difference to ATC is, that SYCM is based purely on where-used list, meaning it finds e.g. all usages of simplified SAP standard code in your custom code but doesn’t analyze if this usage is critical. Consequently the false-positive rate is extremely high. The analysis if the usage is critical can do only ATC.


Usage analysis

Should I use UPL or SCMON for usage analysis? Why there are two tools?

Both tools can be used, however SCMON is recommended. SCMON is the replacement for UPL. It comes with new features (calling business process aka entry point) and can be used on the ABAP stack without SAP Solution Manager. In this way you can analyze the SCMON results directly within the ABAP stack.

The transaction SCMON is not available in my system. What should I do?

ABAP Call Monitor is available with SAP NetWeaver AS ABAP 7.50 and for the lower releases (>=7.00) you can install ST-PI Add-on and use then the transaction /SDF/SCMON. Please see also the SAP Note 2679723.

Is there a performance decrease when using SCMON? If yes, how much (roughly)?

Roughly about 5% CPU time on the application server.

What amount of data (roughly) can we expect after 12-15 months of usage data collection with SCMON in our ERP system?

Of the order of about 5 GB.

We use SAP Solution Manager with UPL. Can we switch to SCMON and how can we integrate already collected UPL data and new SCMON data?

SAP Solution Manager >=7.20 supports SCMON and collects either UPL or SCMON data depending whether the connected system is capable of SCMON or UPL. It is also possible to extract the SCMON data into Solution Manager BW. The existing already collected UPL data get also imported into Solution Manager BW and simply mixed with the new SCMON data.

Can I collect usage data for Smart Forms and/or Adobe Forms?

SCMON (and also UPL) collects only ABAP-based usage data.

 We want to replace UPL with SCMON. Are there any known functional implications?

SCMON is the SAP recommended successor for UPL. There are no functional implications.

During the conversion to SAP S/4HANA: is it possible to add the SCMON usage data to the ATC analysis to focus on used custom code?

Yes, it is possible with the SAP Fiori App Custom Code Migration, based on ATC. See also the blog Custom code analysis for SAP S/4HANA with SAP Fiori App Custom Code Migration.

Please note, that custom code that has not been adopted to the SAP S/4HANA has to be removed from the system; being left it possesses risk to data consistency.

We switched on SCMON in our system and found out, that only the data of the last 7 days is available. How to collect the usage data for a longer period of time?

The SCMON stores usage data on the system for a certain period of time (default 7 days). In order to store the usage data for a longer period of time, you should use transaction SUSG. See also the blog Aggregate usage data in your production system with SUSG transaction. The purpose of the transaction SUSG is to aggregate the usage data collected by SCMON for a longer period of time.

Can I see results of SCMON during the recording, before an SUSG snapshot was taken?

Yes, you can do it in the transaction SCMON (or /SDF/SCMON) using the Data Browser. See also the blog ABAP Call Monitor (SCMON) – Analyze usage of your code.

I haven’t found the transaction SUSG in my system. What should I do?

SUSG is provided also for older SAP NetWeaver releases (>=7.00). You need to install SUSG on your system via SNOTE. See please the corresponding SAP Notes in the “Prerequisites” chapter of the blog Aggregate usage data in your production system with SUSG transaction.

Can I use the transaction SUSG with the UPL usage data?

No, SUSG aggregates only the SCMON usage data, the UPL usage data are aggregated in the SAP Solution Manager BW.

Can I add already collected UPL usage data to the SUSG/SCMON?

No, SUSG aggregates only SCMON usage data. You use either SUSG with SCMON directly in in your production system or SAP Solution Manager with SCMON or UPL.


Custom code analysis

I want to perform SAP S/4HANA custom code checks for release SAP S/4HANA 1909 (or SAP S/4HANA 2020), but the check variant S4HANA_READINESS_1909 (or S4HANA_READINESS_2020) is not available in my central ATC check system. What should I do?

The SAP note 2812556 explains how to get the S4HANA_READINESS_1909 check variant into your central ATC check system.

The SAP note 2959341 explains how to get the S4HANA_READINESS_2020 check variant into your central ATC check system.

What is the difference between the S4HANA_READINESS_REMOTE and the SAP S/4HANA version dependent check variants (e.g. S4HANA_READINESS_2020)?

The SAP S/4HANA specific check variants (e.g. S4HANA_READINESS_2020) check your custom code for the simplification items, relevant for the target SAP S/4HANA release (e.g. S4HANA_READINESS_2020 checks only the SAP S/4HANA 2020 relevant simplification items). S4HANA_READINESS_REMOTE checks all the items of the Simplification DB.

Many customers use partner products or 3rd party coding. Are they considered within the ATC check?

It is possible to register foreign namespaces at the central ATC check system. See also the SAP Help Portal documentation: register custom namespaces of the checked systems at the central ATC system.

What needs to be adjusted in my custom code if I decide not to use the long MATNR (40) of SAP S/4HANA?

In this case after ATC run you will need to adjust only the places in your custom code where there are data lost, type or length conflicts of your MATNR (18) with the new MATNR (40), e.g. at passing it as a parameter to a method, which accepts MATNR(40), concatenation, comparison or assignment with a new MATNR (40).

SAP Fiori App Custom Code Migration

Is the SAP Fiori App Custom Code Migration the successor of the CCLM in SAP Solution Manager? Which tool should we use in the future?

The SAP Fiori App Custom Code Migration should be used only for the use case of custom code adaptation during the SAP S/4HANA conversion.

Is the SAP Fiori App Custom Code Migration also available in the SAP NetWeaver AS ABAP 7.51/7.52?

The SAP Fiori App Custom Code Migration is available only with the >=SAP S/4HANA 1809 (ABAP Platform 1809).

What is the minimum release of the SAP Fiori Frontend Server for using the SAP Fiori App Custom Code Migration?

SAP Fiori for SAP S/4HANA 1809 requires SAP Fiori Frontend Server 5.0. See also the SAP Help Portal documentation Custom Code Migration.

Do we necessarily need the SAP Fiori App Custom Code Migration for custom code analysis for SAP S/4HANA?

The SAP Fiori Custom Code Migration App is the SAP recommendation for the custom code analysis for SAP S/4HANA. However, if the required SAP S/4HANA >=1809 system is not available, the SAPGUI-based remote ATC infrastructure with the central ATC check system on SAP NetWeaver AS ABAP 7.52 can also be used for custom code analysis.

What are the prerequisites on the central ATC check system to run and operate the SAP Fiori App Custom Code Migration?

The prerequisites are the same as for the central ATC check system in remote scenario. Depending on how many custom objects you need to consider, SAP recommendation for system sizing is about 1 CPU and 4GB RAM per 16000 objects, for data volume on the DB about 400kB per object. See also the blog Remote Code Analysis in ATC – Technical Setup step by step.

What can I do if I don’t have an SAP S/4HANA system in my landscape and want to use the SAP Fiori App Custom Code Migration?

You can use the SAP Fiori App Custom Code Migration on SAP Business Technology Platform (SAP BTP) – formerly known as SAP Cloud Platform. For more details see the blog ABAP custom code analysis using SAP Business Technology Platform.

Is the SAP Fiori App Custom Code Migration bound to the SAP extended maintenance?

The SAP Fiori App Custom Code Migration is part of the SAP S/4HANA and is subject to the maintenance rules of SAP S/4HANA.

Do I need to pay any additional license fee to use the SAP Fiori App Custom Code Migration?

You need only a valid SAP S/4HANA license.

I have concerns about deleting the unused code. What should I do if I still need it later on?

You can keep a backup of the deleted objects using abapGit in order to store the objects of the deletion transport request of the SAP Fiori App Custom Code Migration in a Git Repository. For assistance how to do it see also the Steps 1-3 in the tutorial Use abapGit to Transform ABAP Source Code to the Cloud on

We collect usage data with UPL in the SAP Solution Manager. Can we use this usage data for scoping in the SAP Fiori App Custom Code Migration?

Yes, it is possible. You can upload your UPL usage data in the SAP Fiori App Custom Code Migration. The prerequisite is the SAP Solution Manager 7.2 release. See the blog How to upload usage data from the SAP Solution Manager to the SAP Fiori App Custom Code Migration

Should I check the development or the production system with the SAP Fiori App Custom Code Migration?

It can be both: either a development system or a production system, depending on which system you convert to SAP S/4HANA.

Can I add more than one system to a custom code migration project in the SAP Fiori App Custom Code Migration?

For each system, a separate custom code migration project must be created in the SAP Fiori App Custom Code Migration.

According to which criteria I define which custom code is in/out of scope for my converted SAP S/4HANA system ?

The basis for scoping is the collected usage data with SCMON (or UPL/SAP Solution Manager 7.2). You can also change the scope manually in the SAP Fiori Custom Code Migration App: add or remove objects.


Custom code adaptation

Are there any SAP tools for automated custom code adaptations?

Yes, the Quick Fixes (Ctrl + 1) in ABAP Development Tools for Eclipse, which make it possible to adapt approximately 60% of your custom code to SAP S/4HANA in a semi-automated way. The Quick Fixes not only adapt custom code automatically but can also do it in one shot (mass-enabled Quick Fixes).  See also the blog Semi-automatic custom code adaptation after SAP S/4HANA system conversion.

What are the prerequisites for using ADT Quick Fixes?

The system requirements for Quick Fixes are SAP S/4HANA 1809 and ADT in Eclipse 3.0

Is there a list of available ADT Quick Fixes?

The ADT Quick Fixes are available for accesses to database tables VBFA, VBUK, VBUP, KONV, BSEG and usage of VBTYPE data elements in source code and also for the new MATNR (40). See also the blog Semi-automatic custom code adaptation after SAP S/4HANA system conversion.

Do I need to apply a Quick Fix for every ATC finding manually? It will cost much time…

No, you don’t need to. We offer mass-enabled Quick Fixes, so that you can apply all Quick Fixes in one shot. See also the blog Semi-automatic custom code adaptation after SAP S/4HANA system conversion.

Is it possible to add comments to the adapted code after Quick Fix automatically?

Yes, see the blog Comments for the ADT Quick Fixes.

Is there a dashboard/overview, which my custom code objects can be adapted with Quick Fixes?

You get the preview and dashboard on Quick Fixes by using the SAP Fiori App Custom Code Migration and grouping the ATC findings by the Quick Fix filter in the App.

Can I see which changes will the Quick Fixes do on my code?

There are two compare editors in the Quick Fix wizard. You will see each your source code object “before” and “after” Quick Fix at one glance.

Can I implement my own Quick Fixes?

Yes, it is possible. Please refer to the chapter “Creating Quick Fixes” in the How to write an ATC Check guide.

You must be Logged on to comment or reply to a post.
  • Great post, thank you!

    Question regarding this item:

    Can I collect usage data for Smart Forms and/or Adobe Forms?

    SCMON (and also UPL) collects only ABAP-based usage data.

    Well, SmartForms are generated as a function module, so they are ABAP-based. Wouldn't their usage data be collected via the function module name? (I know the FM name can change but let's assume here the form is not being updated.)


    • Hi Jelena,

      well, only data for the generated ABAP code is collected by SCMON. In case of Smart Forms recalculation from the generated ABAP function module to the generating TADIR object (R3TR SSFO) does not take place and it is not possible to select for these objects (-types).

      "ABAP-based" means also that the SCMON entry point is ABAP-based.





  • hi Olga,

    Thank You for the blog. I request a clarification: in SCI we see a check for "Zero Downtime Options (ZDO): Identify compliance violations" under "Intern. Tests". Is there any documentation available for what the compliance violations are?


    Thank You,



  • Hello Olga, Thank you for the information. This helps me. I have a question. I am planning an upgrade from 1610 to 1809. Do We need a SBX 1809 system with ATC Central for custom code analysis or is there another altenative?.

    Thank you for your attention.

    • Hello Christian,

      if you want to check your custom code at upgrade from 1610 to 1809 then you need either an 1809 system (to use Custom Code Migration app)  or SAP NetWeaver 7.52 (to use SAPGUI based ATC). See also our central blog mentioned at the begin of FAQ for more details.



  • Hi Olga,

    You mentioned about using abapGit to backup unused development objects to a Git repository that are to be deleted during the SAP Fiori App Custom Code Migration. However could you also create a backup transport similar to what can be created in the CCLM Decommissioning Cockpit prior to deleting the development object? Will old versions still be accessible in version management in TMS?


    Gregg Hinkle

    • Hi Gregg,

      the Custom Code Migration App creates a "deletion" transport request containing unused development objects. Software Update Manager uses it later on to delete the objects from the system. You can use this transport request for your backup but you need to transport the development objects out of the system and backup them somewhere else, otherwise they will be deleted during conversion of this system to SAP S/4HANA.



  • Hi Olga,

    Thank you for your all blogs. Small question, In Custom Code Migration App, one of the filter of finding is based on usage which has 3 sections i.e. Used, Unused and Others. Could you please explain about this 'Others' section.



    • Hi Sachin,

      I don't see "Others" as filter option in the usage data filter of my Custom Code Migration App but suppose it could be statically referenced objects by the dev objects in usage data. They will be added to the usage data additionally, since their usage is not collected. I have "Referenced" as filter option in my Custom Code Migration App instead.



  • Hello,

    Thanks for the detailed post here. Have a question regarding Custom Code migration for Transporatation Management 9.5 system.

    We are planning to implement the embedded TMS in S/4HANA in place of our existing TMS9.5 system. We have gone through the note: 2769186 - System Transformation SAP TM to TM in SAP S/4HANA.

    However we don't find any details around how to manage the existing Custom Code in the old system.

    Q1: Is there a simplification database avaialble to showcase what simplfications are done between TMS 9.5 and the embedded TSM in S/41909?

    Q2: Will executing the READINESS_CHECK_REMOTE help with identifying the simplification impact on the TMS related objects?

    Q3: How do we bring the custom objects from TM9.5 to the embedded TMS - one way we are trying to use is lift and shift the code to the target environment and then do the syntax check and fixes. Is there a better way to do this? Any tooling support from SAP?


    Thank you,


    • Hi Sudarshan,

      currently custom code analysis with ATC for transformation from SAP TM to embeded TM in SAP S/4HANA is not possible, since the simplification information from SAP TM is not available in the Simplification Database. There are plans to support it, it is currently in evaluation phase.

      Best Regards,


  • Hello,

    I activated SCMON in remote ERP system ECC EHP7 and created snapshot via SUSG.

    I downloaded and uploaded it to our S/4hana 1809 system under Custom code migration fiori app…But Project State : Loading Usage and I dont see anything under scope.


    If I click on Run analysis again, I see some results , But I dont see anything under Usage code “unknown”




  • Thanks for the information.

    I have a question, as per Custom Code Migration Guide for SAP S/4HANA 1909, custom code adaption will be executed in S/4HANA with locally ATC, is it possible to use the remote central ATC and what is the difference?


    • Hi Ning,

      you use remote ATC before SAP S/4HANA conversion to check your system for SAP S/4HANA readiness. But you need to do functional adaptation after SAP S/4HANA conversion directly on your new SAP S/4HANA system and if you want to apply Quick Fixes, you need to do it on your local ATC run in this SAP S/4HANA system. The Custom Code Migration Guide tells you the same: custom code analysis with remote ATC before system conversion, but functional adaptation with the local ATC run after system conversion.

      Best Regards,


      • Hi Olga,

        When we ran Remote ATC before S/4HANA conversion on an object list, we got almost 1500+ errors. Note the remote ATC ran before conversion was on older Simplification DB.

        Now post Conversion on a copied system, when we are running Local ATC on same Object list, we first got failures as in given screen shot.


        Failures in ATC post conversion

        so I came across few SAP notes and implemented notes as per given screen shot.


        Also Uploaded latest simplification DB again.

        so now we are not getting these failures, but very few results like just 56 errors in ATC.

        what could be the reasons? can this be different in databases making this errors differ?

        or do I need to create the object list again in Local system as it may be tempered in copy somehow?
        Appreciate your response and thank you so much for such descriptive blogs.

  • Hi Olga

    We created a central ATC system based on NW AS ABAP 7.52 in 2017 for our initial S/4HANA 1709 conversion.  Are we able to update the central ATC system based on NW AS ABAP 7.52 to a standalone ATC based on S/4HANA 1909?  I don’t see this as an option in the maintenance planner or PAM.

    Does this mean we would need to re-create a new ATC system to get the latest advantages?


    • Hi Tom,

      yes, you noticed it correctly: you cannot upgrade a standalone SAP NetWeaver AS ABAP 7.52 system to SAP S/4HANA 1909, you need to create a new system.



  • Hi Olga!


    I have checked in several sources like the OpenSAP courses for S/4HANA migration without an straight answer: in terms of project planning, are the custom code adaptions a pre-requisite to run the data migration after the SUM step in the realization phase, or can they run in parallel? Answering this question is critical for our critical path.



  • Hi Olga,

    We have upgraded our system to SAP NETWEAVER 7.5

    we see a new check "Zero downtime options(ZDO) : Identify compliance violations" under General checks. If we check this flag in ATC what will be the implications and result of this check. Can you please details about this.


    Thanks in Advance.


    • Hi Shravanthy,

      actually this check was under "Intern. Tests” checks. I wonder why do you see it under "General Checks".... Such checks were intended for SAP internal tests and are not available on newer releases anymore. Please don't use it.



  • Hi Olga,

    For an upgrade from SAP S/4HANA 1610 to SAP S/4HANA 1909, we would like to know the tools and procedure needed to check data elements, programs or structures that will be affected by the upgrade.

    All this is needed to know/validate if the custom code/programs will have to be fixed/adapted.

    Any kind of help and information (links, docs, recommendations, etc.) will be welcomed.

    Thanks in advance

  • Hi Olga, the answer for this question is confused me a little bit:

    We collect usage data with UPL in the SAP Solution Manager. Can we use this usage data for scoping in the SAP Fiori App Custom Code Migration?

    Yes, it is possible. You can upload your UPL usage data in the SAP Fiori App Custom Code Migration. The prerequisite is the SAP Solution Manager 7.2 release.


    How this is possible? I cannot see any other possibility to add scoping data except RFC connection to the checked (ECC) system and the app is uses data from SUSG t-code (snapshots).

    Could you please provide me with more details how to enable that?

    Thank you!

  • Dear Olga,

    one of our customer is asking whether there is a possibility or maybe it's planned already to move objects which are out of scope (via Custom code Migration application) to another package, specially created for the storage of unused objects 🙂 The system has impressive amount of custom objects and they afraid that deleted during upgrade custom objects will be needed again after conversion (for any reason) so they would like to have them during hypercare phase or a little bit longer and in case these objects will never be called again - delete them in S/4 after.

    Thank you in advance for your answer!

    • Hi Natalia,

      for the case if customer wants to keep the backup of objects for the future possible need we recommend to use abapGit, see in this blog: .Alternatively it is also possible to transport this deletion transport created in the Custom Code Migration app to another (downsized) system for backup purposes and import it later on if needed to the converted S/4HANA system.

      We don't recommend to keep unused custom code (which is not adapted to S/4HANA) on the system after conversion, because being left there it possesses the risk of system dumps and data inconsistency.

      Best regards,


  • Hi Olga

    We have a 3rd party solution which is S/4 certified in our ERP (Suite on HANA) system. When running HANA ATC and SCI checks, many errors are flagged in this namespace. Errors, which we would adapt/fix, if they showed up for our custom code. Is it safe to ignore the errors given that they are S/4 certified?



    • Hi Germaine,

      do these errors show up of you ran this 3rd party solution on the S/4 system? If they appear only on the ERP system, then it could be, that you need to run it on S/4 only. Are these errors a result of the S/4HANA readiness checks?

      Kind Regards,


  • Dear Olga,

    I have one more question regarding SUSG data. We have run the t-code for more than half of the year, for some reason there are too many data records (229.586.215) (we have similar system but with SAP_BASIS SP  lower level where the t-code also run for the same period and amount of records is much smaller 11.959.296). So we decided to clean up SUSG* data, check the SUSG stub and activate it once again.

    Is there any possibility to deleted already created data in SUSG* tables?

    Thank you!

  • Hi Olga,

    I started deletion of SUSG records from SUSG t-code -> Delete Records, there were ~355.000.000 records in SUSG_DATA table. After the whole day execution SUSG_DATA table has 321.522.407, but SUSG t-code shows 0 and deletion button is not active anymore:

    Could you please suggest how to delete all these records?

    Thank you!

    • Hi Natalia,

      maybe there are still SUSG snapshots. You can first try to delete them (under "Manage Snapshots").

      Kind Regards,


  • Hi Olga,

    is there a way to check "generated" code in SAP-BW?

    I have a transformation. Which can be configured by drag & drop. Then upon saving/activating a report is generated. Namespaces like /B21/ - so-called generation namespaces.

    But that code is 100% SAP, so I am not interested in it.

    But I can also enhance such a transformation with ABAP-code. That code is included in that generated code. And that code needs to be checked.

    Thanks, Clemens