Skip to Content
Author's profile photo Andrea Olivieri

How many exit routines are active in your SAP ERP system?

See the UPDATES section below for change log

image

Let’s check with X-it RAY Eye

In all upgrade projects in which I was involved I prepared a checklist of standard modifications and implemented userexits.

This kind of analysis performed before the upgrade, as well as give an overview of the system complexity, is helpful to prepare the testing sessions and identify a dangerous situations such as the missing call to an exit routine.

Standard tools?

The question is: how do I get a list of these customizations with minimal effort? Which are the available SAP tools?

The standard modifications can be identified using the transaction SE95 (Modification browser) that is, in my opinion, the most effective tool for this type of analysis.

But for the userexit? Is it possible to draw a map of all exit routines active in SAP ERP before an Upgrade ?

image

There are different types of exits in an ERP system and many tools that you can use to perform an analysis, but the result can not be achieved in a short time …

Let’s start with the cataloguing …

Userexits and VOFM Routines

The Modification browser is helpful if you have to look up at the implementations of include Userexits and VOFM Routines

image

It’s not a simple task, but it is better than search the userexits among the transport requests or recognize “custom” VOFM form routines by browsing directly in the transaction VOFM…

Inside transaction VOFM you have to:

Select the Category Group

image

Select the Custom Routine…

image

and finally access to the source code

image

Field-Exits

Fortunately for the Field-Exits the manual effort is reduced to the minimum because there is the standard report RSMODPRF

image

The function key “Edit FM” allows to access directly to the source code

image

Validations and Substitutions Exits

Managing the Validation Exit and the Substitution Exit from the maintenance transactions can become extremely boring!!!

It is necessary to explode all validation/substitution steps ’till you find a step that contains an exit routine…

image

Otherwise, there are reports RGUGBR31 (Validation Directory) and RGUGBR32 (Substitution Directory) but they are not interactive reports

image

So the formpool must be determined into the view V_T80D

image

Customer Exits, Screen Exits and Menu Exits

Customer Exit, Screen Exit and Menu Exit  are managed by transaction CMOD where the situation is slightly better.

Again, in order to access to the source code of the exit many steps are required.

First of all you need to select the active projects; so from CMOD transaction select in the menu: GOTO -> FIND

image

Then deselect the “Inactive” enhancement component checkbox

image

and for each project selected you have to jump to the assigned components and to the implementations

Select the project…

image

Access to the components list…

image

And then jump to the implementation…

image

But this is not enough, another double click is needed in order to browse the source code of the exit…
image

Business Transaction Events (BTEs)

Active Business Transaction Events can be reached by transaction BERE but again many steps are required!

Run the report with the checkbox “Only BTEs with active Products” selected…

image

Then select the event from the list…

image

and finally check whether the active component has inside custom elements…

image

Last but not least BAdI Implementations.

The Modification Browser transaction (SE95) returns the list of BAdI implementations regardless of activation status (On/Off) but I personally prefer the Respository Browser (SE84) because is possible to select “Only Active” implementations

image

The selection result…

image

double-click to browse the implementation…

image

and then to the source code…. 🙁

I would like an ABAP that…

Customers and colleagues often asked me if I knew a single tool that lists all the active userexits. I always answered no, proposing as approach the list of steps shown above.

Across the years I have tried to collect and automate (the first version dates back to the release 3.1I) every step of analysis in an ABAP program, but I never had time to optimize the code, so I always quickly adapted the same source to the various releases, making it unreadable and impossible to share.

image

One day my colleague Sergio Ferrari (SAP Mentor Alumni) asked me: “Hey Andrea, why don’t you take a look to the Abap SNIF?”

I must be honest, I understood everything by that name…

What’s SNIF?

Finally the SAP has developed a kind of “Exit Browser” that avoids launching dozen of transactions in the system (excluding the various checks).

I investigated thru the implementation of this program concluding that even if the idea is wonderful and the program is useful it could be enhanced to include other type of exits And now I’m glad to share with the great SDN Community my own extended version of the SNIF that detects all types of missing exits.

X-it RAY EYE was born

X-it RAY Eye means … X-Ray Eye + X-it (= Exit) =>  X-it RAY Eye

Thus the abap that I would like to share in this blog is the “son” of the SNIF program, because it uses his “architecture” with the difference that extends the search to the following types of exit:

  • Include USEREXITS
  • VOFM Form Routines
  • Exit for VALIDATIONS
  • Exit for SUBSTITUTIONS
  • SCREEN EXIT
  • MENU EXIT
  • CHANGED KEYWORDS

The ECC Version of X-it Ray Eye extends the search to the enhancement implementations:

  • SOURCE CODE Enhancements
  • FUNCTION Enhancements
  • CLASS Enhancements
  • BAdI Enhancements

Some of these items are not properly ABAP, however I’ve collected them in the tool.

Selection Screen:

image

Output results:

image

Navigation:

image

Download results in Excel:

image

image

I summarize briefly the main features:

  • The X-it Scanner detects only the active implementations of existing exit routines developed in the customer name range with the exception of include userexits and Vofm routines
  • For the VOFM routines the “customer” name range is determined by the group indicator
  • The original section of the “BAPI usage” by custom programs has been removed
  • In the X-it Scanner version for SAP R/3 Enterprise 4.7 and SAP ECC 5.0 the new concept of Enhancement introduced by ECC 6.0 is out of scope
  • Original language: EN English

Out of Scope:

  • Screen Variants & Transaction variants

Versions:

  • ZSDN_EXIT_SCANNER for SAP R/3 Enterprise and SAP ECC 5.0
  • ZSDN_EXIT_SCANNER60 for SAP ECC 6.0
Related Content

Relevant SAP Notes

Special thanks

I would like to thanks my colleagues @ Techedge:

Sergio Ferrari (SAP Mentor Alumni) for his advices (Related Weblogs: how many lines of custom ABAP code are inside your system? )

and Vincenzo Gala my friend and SAP Admin @ Bayer Business Solutions for his support during the unit test phase in rel. 4.7 Enterprise.

How to install?

Download the nugget file from here and import it in your SAP system using SAPLink.

image

Then goto your inactive object list and activate all objects

image

At last, run ZSDN_EXIT_SCANNER by SE38 and… Scan’em All!

I hope you like it.

UPDATES

9-Nov-2011   abapexitrayeye CodeExchange project born

29-Nov-2011 Check for the available releases at https://cw.sdn.sap.com/cw/releases/viewall/1212

29-Nov-2011 Please check the fixed issues section for solutions of little bugs

21-Jul-2015 I set up a repository in GitHub; you can download the ABAPexitrayeye here.

Assigned Tags

      22 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Former Member
      Former Member
      A very good work Andrea!
      This toll will be very helpfull to me.
      Thank you!!!

      Silvio Miranda

      Author's profile photo Rocky Patrick
      Rocky Patrick
      This looks like a great tool. I can't wait to try it out. Thank you so much for sharing.
      Author's profile photo Vinod Iyer
      Vinod Iyer
      Hi Andrea,
      You have done a great job!! Thank you so much

      Regards,
      Vinod

      Author's profile photo Former Member
      Former Member
      Thanks for you efforts.
      Author's profile photo Pablo Casamayor
      Pablo Casamayor
      This is what´s SDN all about.
      Thanks for sharing your work and making the life of developers easier.
      Thanks again.
      Author's profile photo Jim Spath
      Jim Spath
      Andrea:

        Interesting approach to code analysis.  I am curious about a couple aspects here:

      1) How much does this overlap what the Solution Manager Solution Documentation Assistant, or the SAP Code Inspector do for code reviews?

      2) I'd like to see this content in the SCN wiki, so that we can cross-reference to other approaches, as well as add success stories.  Do you think this topic belongs under development, or under Basis?

      Jim

      Author's profile photo Andrea Olivieri
      Andrea Olivieri
      Blog Post Author
      I Jim,
      Thanks for the question.

      The ABAP that I developed extracts only a list of all active user-exits and there is no overlap in terms of analysis with the Solution Manager and its tool like the Custom Development Management Cockpit or Code Inspector that analyses the single statement.

      Regarding a possible creation of Wiki section I could say that it belongs to the category "development", but the "X-it Scanner" is composed of many sub-objects (24 include and 18 dynpro) and due to the complexity of the object in my opinion is not suitable.

      Ciao.
      Andrea

      Author's profile photo Former Member
      Former Member
      Andrea,
      I'm using at customer side your tool on SAP ECC 5.0 and I'd like you to be aware that on this release since the enhancement framework is missing, I had to use ZSDN_EXIT_SCANNER because ZSDN_EXIT_SCANNER60 needs enhancement framework to work fine.

      I guess you'd have to extend the compatibility of ZSDN_EXIT_SCANNER for all release up to ECC 5.0, not only 4.7

      Nevertheless, it's working fine and it's very helpful to discover all custom modifcations.

      Thanks a lot for this utility!

      Ciao

      Author's profile photo Andrea Olivieri
      Andrea Olivieri
      Blog Post Author
      HI, Ermanno
      thanks for the suggestion.
      In fact, the X-it scanner version for release 4.7 ( excluding the Enhancement Framework)
      should work fine up to the release 6.03.
      I updated the "Versions" section of the blog by specifying the compatible releases.
      Andrea
      Author's profile photo Former Member
      Former Member
      Very useful. Thanks a bunch.
      Author's profile photo Alejandro Bindi
      Alejandro Bindi
      Thank you very much for sharing Andrea! This is very useful, both the program and the compilation of methods to manually access each type of exit implementation.

      I'd like to know if you think it would be possible to downport the program to work on a 4.6c R/3 release...so far I searched for class-based exceptions usage and found a single one, which could be removed.
      Did you try to perform such a backport?

      At the site I'm at we're preparing for an upgrade and this tool would be a great help...

      Author's profile photo Andrea Olivieri
      Andrea Olivieri
      Blog Post Author
      Hi Alejandro,
      I have not planned to implement in the short term a version of the X-it scanner compatible for the release 4.6C mainly for 2 reasons:

      1. Unavailability of a development environment
      2. SAPLink does not work in that release, then we should use a transport request.

      I’ll perform the backport during the next upgrade project.

      Thanks .
      Andrea

      Author's profile photo Raj S
      Raj S
      The first thing I liked in the project is the name and ofcourse the tool is a must have in all Dev's inbox 😉
      Author's profile photo Former Member
      Former Member
      Hallo Andrea,
      I think you did a great job to save our money and time.
      I imported both versions (4.7 and ECC 6.0) to my SAP Trial 7.01 but got an error message during activation because T001Q is missing. What should I do?
      Regards
      Markus
      Author's profile photo Andrea Olivieri
      Andrea Olivieri
      Blog Post Author
      Hi Markus,
      I'm sorry, but the tool was designed only for SAP R/3 Enterprise and SAP ERP.
      Many objects used by the X-it Scanner tool do not exist in SAP NetWeaver 7.01 Trial Version.

      Andrea

      Author's profile photo Anupam Anand
      Anupam Anand

      Hi Andrea,

      This is an absolute delight.I was looking up for a similar lookup document for a long time.

      This is really very helpful.

      Thanks,

      Anupam

      Author's profile photo Former Member
      Former Member

      Hi Andrea,

      I am unable to find the nugget file at https://cw.sdn.sap.com/cw/releases/viewall/1212.

      Please advice.

      Thanks,

      Jaya

      Author's profile photo Mayank Agarwal
      Mayank Agarwal

      Not sure if this nugget is still available for everyone?

      Author's profile photo Andrea Olivieri
      Andrea Olivieri
      Blog Post Author

      Dear All,

      ABAPexitrayeye is now integrated in the Automated Note Search Tool (ANST) and in the Custom Code Management Cockpit (CCMC).

      For this reasons is quite useless to continue the development of this tool.

       

      However, I set up a repository in GitHub; you can download the ABAPexitrayeye here.

      Best,

      Andrea

      Author's profile photo Hailan Fu
      Hailan Fu

      Hi Andrea,

       

      In your link here

      The only available version is ZSDN_EXIT_SCANNER60, but I have syntax error when try to activate it. Could you please share the place where I can download ZSDN_EXIT_SCANNER?

      Thanks.

       

      Best regards, Hailan

      Author's profile photo Sue Morton
      Sue Morton

      Hi Andrea,

      Also having syntax error here from GitHub version 1.2...

      "Type "BAMX_SOURCE_ANALYSIS_TABLE" is unknown."

      Am on S4 Hana 1709.

      Best regards,

      Sue

      Author's profile photo Stefan Bock
      Stefan Bock

      Dear Andrea,

      the scanner is a pretty tool to find user-exits.

      Now I found 3 bugs which i have fixed in my system an i wanted to inform you about that.

      Here I read your message about ANST and CCMC.

      May you explain what does that mean?

      I found some documentation in the web and tried somthing out, but ANST is for some issues nice but not so compact. In your scanner, you have fast an result about all exits. In ANST you have to wait long for the result of one transaction.

      I was'nt able to test CCMC because i don't have access to our solution manager. But the documentation seems not so simple like your scanner.

      Best regards,

      Stefan