I would like to share my experience regarding efficiency of development in eclipse as compared to SE80 tool.
I think I am in minor part of ABAP developers, who first had to switch from eclipse to SE80 and not the other way round. When I started my adventure with ABAP, I was already used to eclipse so naturally from java development that I was shocked with SE80 tool. It was so difficult to use class builder, search for any object or be limited by few dialog sessions only. In this blog I try to recall what I missed so much in SE80 and why I moved back again to eclipse quickly after it has been released for ABAP development.
1. Working with text code is more efficient than filling dialog forms.
This is argument used by SAP when they recommend to use eclipse. I totally agree with this statement. Wizzard and dialogs that help to build class and methods are useful for beginners as they clearly point what to fill and where. However for developer who works with code daily, learning syntax is not a big deal and handling code as text only is much faster. I will bet that writing example calculator class with 4 basic arithmetic operations will be done faster in eclipse than in SE80 dialogs.
2. Eclipse allows to work offline.
That is big advantage. You can cache your development locally and synchronize it when there is connection to server. Just be careful with data synchronization, to update right version and not loose your development. Also switching between read/edit mode does not require special button. Just start typing and editor will lock file for you automatically.
*** 2013-04-23 Update:
In fact at the moment it is limited offline mode but still – current changes will not be lost when network goes down. I can still read all loaded files and modify those in which I started to type in before network was disconnected.
3. Many source objects opened in parallel.
That was a nightmare in SE80 for me. How can it be, that only 6 objects can be opened for edition at the same time? And if we run program and have single debugger session opened, 2 slots are already taken so we are left with 4 objects opened. Of course it is possible to do development, but I remember how often I had to close one place to jump into another, then I had to close it again and find original place. In eclipse there are convenient tabs that allows to open as many source objects as we want. We can also save context of opened elements, but I describe it later in point 9.
4. Personalized flexible windows positioning.
That is extremely useful and important for me. I like to have control over things that I see. With eclipse flexible windows positioning I can easily set up main source editor in the center, supported by second dialog which show me another source code that I am updating (test class for example) and having third window with preview on database table to see possible input/output values. No need to jump between different windows as in case of SAP GUI, everything is in one place, customized for own needs. Why not to use full screen of wide monitor when it is possible?
5. Quick fuzzy search for any object.
With eclipse you can press CTRL + SHIFT + A and type letters combination for any object that you want, including wildcards (like zcl*adam*). I do not care if this is class, function module or database table – everything is accessed through one shortcut. And how fast it works, certainly much better than searching for anything in SE80.
Also when you are in the class, just press CTRL + O and start type any method/attribute name like mt_* to see all member tables etc. See how fast and easy it is.
6. Better code support for refactoring.
SE80 has some basic refactoring options like changing name of objects or inserting pattern. That is nice. However eclipse offers much more. In current version that I have, I can:
– rename variables that are not used outside class;
– remove unused variables from part or whole class;
– use code templates shown in code completion that can be easily extended in eclipse settings;
– extract methods automatically;
– create methods declaration and implementation automatically (quick fix);
– use quick fix which is so important that I describe it in next point.
7. Quick Fix – CTRL + 1.
Eclipse allows user to create new methods extremely fast. It is enough to declare input and output variables that we want to have and write new method call like it would exist. Then press CTRL + 1, ENTER, confirm wizzard and method definition with empty implementation are generated.
Example how to prepare parameters with predefined type to create method automatically, CTRL + 1:
After pressing enter, simple wizzard appears where we can update parameters properties or just approve by enter:
This function is very useful if we need to create new method in class – just type it in definition section with parameters, and create implementation signature with Quick Fix. Editor will jump into new method so you can start coding there. Also refactoring becomes much simpler, just prepare parameters with defined type and write method call that you need, wizzard will generate it for you.
Even simpler option is to use Extract Method function (CTRL + SHIFT + M). Just select piece of code that you want to extract and let the tool care about creating method definition, implementation and proper parameters types.
Here again I will bet that with these refactoring support options, simplifying long sequential report into modularized code will be done much faster in eclipse than in SE80.
8. TODO tasks in editor, not in code.
We often have things that are left to do. Have you ever found in source code comments like “*TODO – need to be refactored later” ? Instead of making comments in code it is better to add it to own editor. Eclipse keeps list of Tasks to be done. We can have general task or task which is assigned to the place in code – then by double click we can directly jump into place that needs to be fixed.
9. List of tasks that keep context of development.
Eclipse allows to register all opened objects and assign them to context saved in “Tasks list” view. You can create many tasks, each for new development for example. Just select right click on task and Activate option to have all objects from context loaded to eclipse. If you finish work with task, just choose option Deactivate. This will close all tabs and save the context, so you can open next task to work on. This is very useful option if we need to switch between development, loads context of changes within seconds. Keep in mind that embedded SAP GUI dialogs are not loaded back.
In addition tasks can be created locally for own needs or also on the repository server. It means that we can share task context with other developers. It makes it so easy to pass the task with all “touched” classes and context to other person.
10. Navigation history.
Although SE80 has also good sequential history of steps performed on dialogs, eclipse offers more. Alt + Left/Right jumps between editor history, but you can also click small arrow that will expand wider list of dialog steps history. You can press CTRL + Q to jump directly to last edition place.
Also the history of searches is kept in memory. If you search references to objects from eclipse (CTRL + SHIFT + G), the history can be easily recalled from “Search” view. It means that you can quickly display already used search results if you need to jump between different paths. That is helpful. In SE80 you can keep history of searches only in sequence (you can search, go into code, then go back).
There are many other advantages that I could highlight about ABAP in eclipse. I will just mention shortly other things that I like:
– Embedded SAP GUI when needed.
– Text highlighting and selection.
– Package hierarchy clearly visible.
– Compatibility with SE80 development where possible (same shortcuts).
– Fast fuzzy search in many places (use * for any character).
– Dedicated tabs (placeholders) in the text class editor so I see clearly where to put main code, local types or unit test classes.
Although I am big fan of ABAP in eclipse, I want to mention also some disadvantages that I see in my current version (SAP version 731, ABAP Tools 2.02) . I will just write it shortly to not discourage people from using it:
– Implicit enhancements are not visible in eclipse. I cannot edit them or see code references from enhancements in searching results. That is why if I know that my code is used also from implicit enhancement, I had to go to embedded GUI and search by standard “Where-Used List”.
– Search references or search in program works better in SE80. On the other site eclipse adds history of searching, so for basic “Where used to” I use it.
– Debugger in eclipse works only in some landscapes in my system, not in older versions. I like both debuggers, SE80 is still more powerful, offering many advanced options however eclipse debugger is easy to use and sufficient for basic needs.
– F1 help does not always work or takes more time than in SE80.
– Refactoring only in one file. Not possible to rename variable if it is used from outside – anyhow better than nothing.
– Watch out for parallel work in SE80 and in eclipse for the same source code. I had case when my changes done in SE80 were overridden in eclipse, after dialog prompt where I chose wrong option by mistake. Just be careful. Anyhow it is good that we can work transparently from any editor on same source.
– I am missing “insert pattern” functionality, maybe I have not found it yet.
*** 2013-04-23 Update: Already found – CTRL + SPACE, then SHIFT + ENTER, as shown here:
– Sometimes GUI hangs, but rarely, just few times in history. Anyhow in my opinion eclipse is extremely light and fast editor as compared to SE80.
– Missing features in eclipse like Web Dynpro support, not all development can be done in eclipse still. Anyhow there is always option of embedded SAP GUI and this helps.
– Missing transport management, I still need to go to SAP GUI to release request.
*** 2013-04-23 Update: Already available in newer version:
Useful list of shortcuts, worth to use them regularly:
CTRL + SHIFT + A – open any object from repository
CTRL + SHIFT + G – find where used references
CTRL + SPACE – code auto complete
CTRL + 1 – Quick Fix, suggestions to object like rename, create method
CTRL + SHIFT + R – rename object (only in single file no references)
SHIFT + ENTER – insert pattern (used with CTRL + SPACE)
SHIFT + F1 – Pretty printer
SHIFT + F2 – compile check
SHIFT + F3 – Activation
CTRL + SHIFT + F3 – mass activation
Many general helpful shortcuts can be found in Help -> Key Assist.
That is it. Personally I think that working with ABAP in eclipse is more efficient than using SE80, especially if we develop with object oriented approach and practice unit testing. I am not saying that SE80 is wrong tool, not at all. It is still powerful and advanced development environment, I just think it is a bit old fashioned, good for people who are really glued with it, having many years of experience behind. In my case switching back from SE80 to eclipse took few days anyhow as I already had some habits from SE80. I was used to editor functions, key shortcuts or I did not even know how to write text syntax for class as I was using class builder before. However after few days of development with learning I gained more speed and increased efficiency in eclipse. Now I am sure do not want to move back. When I have to work in older systems where ABAP in Eclipse is not supported, I see even more how slow it is to write code in SE80.
Amongst other benefits, I say that ABAP in eclipse brings success because:
– It is possible to open many objects in editor, no limit of 6 sessions.
– Many dialogs can be flexible arranged on one screen.
– CTRL + SHIFT + A quickly finds anything we want.
– Automatic methods creation speeds up development.
I strongly encourage you to try ABAP in eclipse if you have not done it yet. I am sure that if you cross the barrier of trying new thing, benefits will come.