Technical Articles
Old New ABAP Editor
Introduction
If you develop now UI for SAP, you use Web IDE. If you are doing backend and ABAP, you use ADT (ABAP in Eclipse). But sometimes you still need to come back to SAP GUI and ABAP Workbench and use the “New” ABAP Editor.
For that rare cases when you are doing ABAP in old fashion way 😉 I have some suggestions, which maybe someone is not aware of, and that may help be more productive. In this blog, I will try to explain the most useful functions added in ABAP Editor (from my point of view) and will try to collect links to other useful resources related to ABAP Editor for SAP GUI.
Do not expect too much in the beginning, but the list will grow upon demand.
Disclaimer
I am long time not responsible for the ABAP Editor in Workbench so I cannot add or fix something. And I am not an ABAP Workbench expert in general – I can only give details about that white area where you type your code. But for that white area, I can explain how it was designed and if the thing you want is in or is theoretically possible.
Tips & Tricks
Quick start
It was designed, that when one starts “New” ABAP editor in the ABAP workbench for the first time, he gets an introduction page, explaining new features of the editor. But I never saw this working :).
The page is located aside to ABAP Editor user settings in:
“%APPDATA%\SAP\SAP GUI\ABAP Editor\qstart.htm” Copy => Win + R => Paste => Enter
And here is the most valuable part of the page:
Block / Column Selection
- Alt + Shift + Left/Right/Up/Down
The ABAP editor allows you not only to use standard (called “stream” selection) but also allow to select a rectangular block of text, which does not start from the beginning of the line:
You can select text block using the keyboard commands (Alt + Shift + Arrows) or with a mouse, keeping the left Alt key during selection:
After selection, you can apply many of the editing functions in block mode:
- Delete, Insert, Multi-Edit
- Copy/paste from Clipboard
- Case conversion
- Indent etc.
Multi Editing
Null Width Selection
The degenerated version of the block selection is Null Width selection (not visualized 🙂 ), which you can use for indenting of text blocks.
Clipboard Ring or Multi Clipboard or Clipboard History
- Ctrl + Shift + V
If you want to see all text pieces you have copied during your editing session, just press Ctrl + Shift + V, instead of normal Ctrl + V. Then you get a history of the clipboard items (up to 12, in chronological sequence) where you can select and paste any of the items (it also overwrites current Windows clipboard content).
Case Modification
- Ctrl + L -> lower case
- Ctrl + U -> UPPER CASE
- Ctrl + K -> sWAP cASE
- Ctrl + J -> Capitalize Text
- Ctrl + T -> Like in sentence
You can easily modify text cases, without using a pretty print function. It works with stream and with block selection.
Lines move
- Ctrl + Alt + Up/Down
The feature is useful when you need a block of lines, but do not want to overwrite keyboard content. You can move the selected block of lines up or down. If no selection is done, the current line is moved.
Line duplicate
- Ctrl + D
Sometimes it is much faster to duplicate the current line and adjust content than typing it once more.
Word/Line Selection
The ABAP editor supports different kinds of word/line selection:
- Ctrl + Left/Right to select till word borders
- Ctrl + Left Mouse Click on a word
- Left Mouse Click on number margin to select lines
Incremental Search
- Ctrl + I, Ctrl + Shift + I
In many cases when you want to do a simple text search you can achieve it without calling the Find dialog and losing your editing context. Just start Incremental Search mode by pressing Ctrl + I and start typing.
- Press Ctrl + I to search for the next occurrence
- Ctrl + Shift + I for the search of the previous occurrence
- Backspace to correct your input
- Esc to exit incremental search mode
- See editor status bar for the current search query
Code Hints
Code Hints were designed as a proactive, not intrusive alternative for standard code completing list called by Ctrl + Space. It shall be very prudent to resources, but same time giving the user a way to speed up typing.
Code Hints may suggest syntactical construction, variables, and code templates (somewhen before it was also auto correction suggestions in). The editor collects all fitting suggestions, ranks them by type, usage count, input method, and shows you the best hit. Code Templates are always won against keywords and variables, keywords (syntactical constructions) win against keywords.
Suggest Non-Keywords from the Text
The mentioned option is OFF by default (for some reason), but it brings a lot of value. “Non-Keywords from the Text” means in ABAP scope – your variables. So, if you enable the feature, you get your variables suggested by code hints (code completion list will show them independently of the flag) and this may save some typing effort especially if you are using “self-explaining”, meaningful variable names ;). Especially the flag would be useful if you are forced to work on systems below SAP_BASIS 7.02, where full-blown code completion is not enabled, and this flag and code hint the only “completion” you may get :).
Code Hint Color
When you using Code Hints, you see that it sometimes has the light, standard background:
And sometimes it has the inverted, dark background:
Have you ever asked yourself: what does this crap mean? 😉
The secret meaning of the Code Hint background color:
- Light: there is only one suggestion known to the editor. You can safely accept the suggestion by Tab.
- Inverted (dark): there is more than one suggestion known to the editor and you can call a full-blown auto-completion list to see all alternatives.
ADT (ABAP in Eclipse) has also emulated implementation of Code Hints in some way, but the “secret knowledge” was lost, and the only inverted color is left 🙂 :
Why is my code highlighted differently when I paste it into an email?
You may wonder, why when you copy/paste your code from the editor into email (or any other editor supporting HTML formatting) syntax highlighting of the ABAP code looks different from the one you had in the ABAP editor.
ABAP Editor:
MS Outlook:
The reason here – different highlighters that are used for rendering text in both cases. The one in ABAP editor, it is a highly sophisticated one, which works in respect of ABAP grammar available on the ABAP system you work (and require fully qualified input), and the second one, is the rudimental highlighter, which works based on keywords and can highlight even invalid code, but is not in sync to actual ABAP grammar. On the example above we see that the keyword-based parser has not highlighted OCCURRENCE, REGEX RESULTS (while in time the editor was written, these keywords were not yet known J ) but has highlighted the VALUE in the second sentence, which has been marked as an error by ABAP parser.
You would not be able to get code pasted into an email, always looking like one in ABAP editor, but you can extend the syntax scheme of the keyword-based parser, by simply adding missing keywords into the abap_spec.xml file in the ABAP Editor settings directory to get missing keywords highlighted:
“%APPDATA%\SAP\SAP GUI\ABAP Editor” -> abap_spec.xml
Add this:
…
<TextType id="52" name="Keywords" ...>
<Keywords>
…
<Keyword text="regex"/>
<Keyword text="occurrence"/>
<Keyword text="results"/>
…
</Keywords>
</TextType>
…
And get them also highlighted:
Display list of assigned ABAP Editor keyboard shortcuts
The easiest way to get an overview of currently assigned keyboard shortcuts in your instance of the ABAP editor is a preview of the keyboard mapping scheme file in Internet Explorer (not in Chrome, you need a browser supporting XSLT transformations).
Paste the following path in your Windows Explorer:
%APPDATA%\SAP\SAP GUI\ABAP Editor\keymap.xml
If you are lucky and your default browser is still IE, you will get something like this:
The list is searchable and contains all assigned keyboard shortcuts and command IDs and descriptions for all installed keyboard mapping schemes.
If the command is not on the list, it means, there is no shortcut assigned to it.
ABAP Editor Color schemes
Most of you know that it is possible to change the color of syntax elements shown in ABAP Editor. Using that “Settings” button in the status bar. But most of you are a bit lazy to change that consistently and create a new color scheme (Dark one for example) in a way that you can use and share with others.
But some guys did it. Check this GitHub repository if you want to get alternative color schemes for the ABAP editor.
https://github.com/lucattelli/ab4-themes
And if you have your own one – share it with the community!
ABAP Editor Code Templates
Probably everyone who used the ABAP Editor has also used Code Templates, speeding up typing of routine code. And definitely, there were some cases when you would like to have a new code template for some code block and have not found it among the standard SAP pre-installed ones (for example METHOD/ENDMETHOD.).
Here you can find an extended set of code templates for ABAP Editor which may help.
Feel free to suggest new code templates or request update of existing.
Let us make a world of ABAP Programming better 🙂
Wow, this is a really nice blog. Top points for animation! 🙂
I'm still very much enjoying the old editor though. I know all the cool kids either use Eclipse or at minimum new editor. But to me all that technicolor highlighting is actually distracting. Perhaps I just need some "grumpy ABAPosaurus" theme. 🙂 It's just a personal preference though, don't mean to convince anyone to join the dark side and I have no cookies to offer.
Thanks for posting, great job!
Hi Jelena,
thanks for the feedback!
So, you want something like this:
Nothing can be easier 😉 As far, as mentioned Bruno will give me a GitHub repo contributor rights, I will upload the "Nostalgia" theme for ABAPosaurus 😉
The most important, that one CAN change the scheme in the editor, to fit his needs and same time got the rest of functionality also. But I would agree, that the way of changing a theme is not very comfortable.
BR, Alexey.
Done.
https://github.com/lucattelli/ab4-themes/blob/master/themes/nostalgia/theme-info.md
Hi Alexey, I hope you enjoyed your holidays 🙂
Thanks for this post (and for helping me to fix the bug on the BSP editor 😉 ). This is very useful as even the "cool kids" still need to use the old new editor for the objects not supported by ADT.
I'm uploading my color scheme on Bruno's github. Unfortunately for Jelena, it will not be an Grumpy ABAPosaurus theme yet.
Cheers,
Custodio
Hi Custodio,
thanks for the comments and for triggering me to start such a blog!
I see you have forked the Brunos GitHub repository. I feel that this is not the best way to go, while now there are two sources for AB4 themes. The proper way would be to get from Bruno contributor rights for his repository and upload your theme directly to it. That is what I am planning to do also.
BR, Alexey.
This is bookmarked 🙂 It's amazing the number of modern (I.E 7.40 and newer) systems I come across that still haven't enabled the Eclipse editor.
BTW, Jelena, nothing wrong with being a dinosaur - remember how long they / we lasted for 🙂
Excellent Blog.
How did I not know some of these! Very cool and useful! Thanks!
And whilst I don't have a screen shot of the old old old Abap editor, this web site is modelled on it:
Hey Richard, could you please share that website URL? Seems pretty nice
Cheers
www.se37.com
Thanks mate
Regards
Great blog! Some very useful stuff that I didn't know before 🙂
Great and helpful blog!
Hi Alexey
Great blog! I got upset when reading all these thinking I never used most (almost all) of them.
I must also say that I do not go to Eclipse ADT for backend ABAP development unless I really have to, e.g. for maintaining CDS objects, etc. I have always thought going to Eclipse is the “rare” thing most ABAP developers do for ABAP development. But maybe it’s because I am, too, an ABAPosaurus as in how Jelena defines it. Not so grumpy, though.
When I first started coding in ABAP, there was this consultant using the non-graphical screen editor for maintaining dynpros. I now must be like him to the newbies. Am I?
Thanks again.
Serdar
Hi Serdar,
there are enough others like you still preferring to use ABAP Workbench but not ADT, because of different reasons ;). But the SAP strategic direction for ABAP Development is ADT and Web IDE for Fiori / SAP UI5 Apps, so I doubt that there will be significant investments in old development infrastructure. So, if one looks to the future, he needs some when migrating to ADT. IMHO, for "old" ABAPers, benefits of ADT is still giving not so much value to force them migrating to it from ABAP Workbench. And I assume it would be so until all Dynpro based dev/lifecycle tools will be migrating to Eclipse based alternatives. And as one "very much involved" in the development of ABAP Editor control for SAP GUI, I may say Eclipse text editor in ADT is still missing a lot of features of it, however having a lot other, refactoring related features the editor in ABAP Workbench does not have.
In addition to mentioned, Web IDE also does not help ADT to grow and become a single IDE for SAP...
Please treat my comments here as my personal opinion, but not SAP opinion. I am not involved in the development of dev tools now, so most probably lacking some insights.
BR, Alexey.
Now, this will make me grumpy.
This blog reminds me of the times when AB4 (like it was called these days I believe) was released the 1st time.
A BIG RELIEF for all ABAP developers who strived at least for a little bit efficiency when writing code in these times!!!
There were no ADT and if you compare AB4 to its predecessor it comes down to: predecessor had a “Pretty Printer” and a syntax highlighting feature that consisted of printing comments in blue and code in black. Have I missed a feature?
If one only evaluates the editor comparing to Eclipse there would be hardly a reason to switch to ADT. But there are other IDE features that might make one think twice despite the overall strategy.
Thanks for introducing AB4 at that point in time!!!
Hey Alexey,
great blog, thanks for sharing!
Glad I learned about the "Block / Column Selection" - in the past I used to copy code to notepad++ to do just that.
I read you blog 2 days ago, and just now I could already make use of it, cool!
best
Joachim
Hi
in my eclipse editor CTRL + D deletes a line. You say that it doubles a line.
What is wrong???????????
Greetings Lutz
Hi Lutz,
the editor is wrong 😉
It is not about Eclipse editor, but about old ABAP Workbench ABAP editor, running inside of SAP GUI.
But you touched a good point, the difference in keyboards shortcuts between ADT and ABAP Editor from Workbench is dramatic and sometimes even rather critical, as with example with line duplicate 🙂
I am already in a way of writing comparison table for people using both environments or moving from one to another.
BR, Alexey.
Great blog. Like it.
Hello Alexey,
Thank you for the wonderful information.
Hello Alexey,
I like this blog a lot, although I've known most of it. What I use very often are the code templates with variables. Sometimes I would like to create a specific tag, e. g. a date without time and another format like 2017-06-18 instead of 18.06.2017 09:18:57.
Is it possible to define own tags?
Thanks in advance.
BR, Jens
Hi Jens,
unfortunately - not. You can not create your own tags and also can not influence how available tags are inserted (format of date) :/ The only thing you have it is an "interactive" tag which allows you to enter a text you want instead of a placeholder.
BTW: do you have useful code templates you want to share? Would be nice to extend pre-installed templates. At least METHOD/ENDMETHOD shall be added 😉
BR, Alexey.
Hi Alexey,
thanks for the info.
I have several sets of code template to fulfill the different programming guidelines of my customers. They are very similar to each other and include also the SAP standard templates.
How can I attach the XML file here? Or shell I paste it simply in a comment here? I'm not that familiar with blogs. May there is another way to make the files public here.
If you like I have the same set for the ADTs.
BR, Jens
Hi Jens,
sorry I was not able to answer you before.
Thanks for the templates! I have copied the file (with some adaptations) to my Git repository and will post a link to it here, on the blog. In such way, it would be easier for people to track changes if new templates would be added.
Once more, thanks a lot for the contribution!
BR, Alexey.
The ADT code templates I do not need yet, while I am still mostly working with ABAP Workbench 😉 But maybe some time 🙂
Welcome. Good idea to put it in GitHub.
At least the template *creexc is not relevant for others, because therefore are specific exception classes required, which I implementent whenever it is possible..
Yes, give me a hint when you need the ADT code templates..
BR, Jens
Hi all,
below you find the complete content of the following file.
Replace red XXX with your windows user. If the folder AppData is hidden, make it visible in the settings/options of the explorer. Open the blue marked file in an editor like notepad and replace the complete content with the attached content.
C:\Users\XXX\AppData\Roaming\SAP\SAP GUI\ABAP Editor\abap_user.xml
(Re-)start the SAP GUI editor and have look onto the list of code template. Those starting with a * are ones of me.
Create a new report and check it out with the following abbreviations, completing with the tab key and follow the popups:
*selflds
*class
*start
After that set the cursor below the statement PUBLIC SECTION and enter the following
*boolean
*instdata
*attr
*instmeth
*meth
Cut out the part METHOD … ENDMETHOD and move into the IMPLEMENTATION part of the local class.
Check out all others if you like. In the following you find the list of all with a short description, which were maintained, but unfortunately never appear again when maintaining later on.
If anyone is interested in the templates for the ADTs please let me know.
BR, Jens
Hey. I'm trying this and I don't get auto completion on the *something. Everything else with no * works.
Thanks for the tips.
Sap gui 7400.3.15.1131
Hi,
in the GUI editor you need to enter the complete and correct phrase and then press the tab key.
Have you checked if you see all the snippets in the editor settings -> see attached picture? If not, it seems you have placed the file abap_user.xml at the wrong place or may be it has not this name.
BR, Jens
adding it via interface works. weird. thanks