Skip to Content
Technical Articles

Performance of Alt+F8 in Eclipse ABAP Development Tools and ABAP 7.52

I encountered performance issues while using Alt+F8 (execute) in my Eclipse ADT, connected to ABAP backend 7.52 SP 0 (on premise S/4HANA) and SP 1 (Developer Edition).

To reproduce:

  • Press Alt + F8 or menu Run > Run ABAP Development Object
  • Enter the characters of a transaction code or a table (to display its contents)
  • You have to wait for the backend to confirm it’s valid before you can run it. When it’s not a value already confirmed (from a previous execution), it takes 10 seconds to confirm and display the value.
  • That’s really slow if you compare it to the time of Ctrl + Shift + A or menu Navigate > Open ABAP Development Object, which is less than 1 second. Pressing Ctrl + Shift + A followed by F8 is a fully-valid workaround, but it opens a useless tab that you have to close.

TL;DR With the little modification I propose, it will take less than 1 second. But the code applies only to the versions I mentioned above. I recommend to only use it for Developer Edition (private trial) and use it at your own risk.

If you just want to try it for version 7.52 sp 1, go directly to the Use it chapter. If you want to adapt the tool for the Developer Edition 7.52 sp 4, read the next chapter to understand how I did it, and hopefully you could then propose a Pull Request.

NB: I guess there shouldn’t be any issue with the Developer Edition 1909 (ABAP 7.54).

How I did it

After searching the support database, I found out that the Note 3006480 – Where-used list is not working could contain a fix for this problem, but this fix was available only from 7.53, above my ABAP version 7.52. In that note, SAP created a new method GET_METADATA in the class CL_RIS_SHM_METADATA, containing 15.000 lines of hard-coded values (!) used to initialize an internal table.

I decided to try a custom fix in 7.52 inspired by this 7.53+ correction. First of all, I had to understand what these 15.000 lines could correspond to. I ended up by creating a little ABAP program Z_RIS_SHM_METADATA to mimic what is done in the standard class above, which generates the same big internal table. The program is attached to the github project mentioned in the Use it chapter.

I then used the backend debugger on that program and the DVE tool proposed by Alexander Geppart to generate the ABAP code corresponding to that generated internal table (variable LT_METADATA):

Debugger%20DVE%20Data%20View%20Extension%20of%20CL_RIS_SHM_METADATA%20table

Debugger DVE Data View Extension of LT_METADATA in program Z_RIS_SHM_METADATA

That made a big ABAP code of 56.000 lines!

Note that if you experience performance or blank screen issues with the official tool, try my forked version of DVE (still a bit slow, took 4 minutes to display the ABAP code).

I then enhanced CL_RIS_SHM_METADATA. The syntax check didn’t like a so big VALUE #( … ) statement, so I had to split it into many INSERT statements, and at the same time I tried to compress the lines (“find/replace all” of any good text editor is your friend):

INSERT VALUE ris_s_metadata(
                 TROBJTYPE = '????'
                 LEGACY_TYPE = 'DWY'
                 SEARCH_GROUPS = VALUE #(
                         ( NAME = 'STANDARD' TEXT_REF = `TEXT-S01` )
                         ( NAME = 'MORE' TEXT_REF = `TEXT-S02` )
                         ( NAME = 'EINSTELLUNG' )
                         )
                 SEARCH_ELEMENTS = VALUE #(
                         ( INDEX = 1 NAME = 'KEY1' TYPE = 'SO' GROUP = 'STANDARD' FOR = 'SDOKMEP-PROP_NAME' )
                         ( INDEX = 2 NAME = 'XTEXT' TYPE = 'SO' GROUP = 'STANDARD' FOR = 'SDOKMET-DESCRIPT' )
                         ( INDEX = 3 NAME = 'NEW_LINE' TYPE = 'LF' GROUP = 'STANDARD' )
...
                         )
) INTO TABLE LT_METADATA_FB.
INSERT VALUE ris_s_metadata(
                 TROBJTYPE = '????'
                 LEGACY_TYPE = 'GP'
                 SEARCH_GROUPS = VALUE #(
...

In the end, that made the incredible low number of 10.000 lines.

How to use it

If you experience the same Alt + F8 performance issue with your Developer Edition 7.52 sp 1, you may try this fix –use it at your own risk–:

NB: for 7.52 SP 4, volunteers welcome to propose a Pull Request!

 

/
Debugger%20DVE%20Data%20View%20Extension%20of%20CL_RIS_SHM_METADATA%20table
Be the first to leave a comment
You must be Logged on to comment or reply to a post.