1 2 3 10 Previous Next

ABAP in Eclipse

144 Posts
Gabriel SAULESCU

aie_feature_explore

Posted by Gabriel SAULESCU Aug 28, 2014
  • Please introduce yourself and tell us how long you’ve developed with ABAP

My name is Gabriel SAULESCU, I am working as programmer from 1987, I start programming in dBASE 2.4, FoxBase, VisualFox, Cobol, Fortran and after  2000 I was programming in PHP/mySQL, HTML/CSS and Javascript, I learnt to programm in  CodeIgniter and from few months in Java. 

 

  • Did you know about Eclipse before you took this ABAP in Eclipse Explorer challenge?

I discover Eclipse few years ago but my first believe is too much for what I need in that moment.

When I was starting a course in SAP HANA Cloud, in June 2014, I discovered again Eclipse

 

  • Do you think the feature explorer is helpful to onboard new developers?

             ABAP in eclipse offers new perspectives. 

Excellent IDE for developers that already use eclipse.

 

 

  • What is your favorite feature of the beginners tour?

My favorites with ABAP in eclipse are code completion and the refactoring of variables.

 

  • Have you explored additional features of Eclipse that you like?

          Templates my be a good candidate for the next feature explorer.

          The delete unused variables is very useful       

 

  • Mention some ABAP developers in the community that should know ABAP in Eclipse. You can use “@” and then type their name so that they get notified when you mention them.

 

           I want to thank you to Thomas Fiedler for his nice work.

          

Introduction

In my point of view the release of the SDK for the ABAP development tools (cf. First version: SDK for ABAP development tools) was a major change to the way SAP provides developer tools. For the first time it is possible to easily extend the development environment provided by SAP. Therefore, the SDK enables developers to enhance the development environment with new functionality or missing features.

One feature that is missing in the the SE80 as well as in the ABAP development tools is an simple way to create transports of copies. While the usage of transports of copies is recommended e.g. by the German SAP User Group (DSAG) in its development best practices guide line (cf. Andreas Wiegensteins blog DSAG Best Practice Guideline for ABAP Development now available in English), creating transports of copies is quite cumbersome. As a consequence custom transactions or reports are usually used to simplify the creation of transports of copies. While such a report simplifies the creation of transports of copies it is not integrated into the development environment. consequently, the usability is far from perfect.

In this blog series I'll show how I extended the transport organizer view of the ABAP development tools. The plug-in that I've developed enable the creation of a transport of copies with just one click. The blog series consist of three parts. In the first one I'll explain the eclipse side of the plug-in, in the second part the ABAP side. The third part will focus on releasing the plugin using github. The idea behind this blog series is twofold. First, I want to provide an overview of what is necessary in order to create a ABAP development tool plug-in that invokes some back end functionality. Second, I hope to encourage other developers to create and release useful enhancements for the ABAP development tools. Consequently the complete source code of the plug-in is available at ceedee666/adt_transport_utils_plugin · GitHub.

Getting Started

If you are not yet familiar with the SDK for the ABAP development tools I would recommend the following documents and blogs. The two blogs Starting with ADT SDK is easy - Pt.1 and Starting with ADT SDK is easy - create your own transaction launcher (Pt.2) by SAP mentor Martin Steinberger provide a nice starting point. In addition to that the excellent document NetWeaver How-To Guide: SDK for the ABAP Development Tools by Wolfgang Woehrle provides a full tutorial including the development and invocation of back end functionality.

 

Developing the Eclipse Plug-In

As Martin Steinberg already has described hot to create a simple eclipse plug-in I will skip this step and start with the necessary configuration of the the plug-in project. In order to use the SDK some ABAP development tools plug-ins need to be added to the list of required plug-ins. This is done by editing the plugin.xml file.

2014-08-26 22_12_32-ABAP - adt_transport_utils_plugin_plugin.xml - Eclipse.png

After opening the plugin.xml file in the editor, the required plug-ins can be added in the dependencies tab.

2014-08-26 22_13_04-ABAP - adt_transport_utils_plugin_plugin.xml - Eclipse.png

Unfortunately there is currently no documentation available which plug-in contains which classes. So finding the correct plug-in to add to required plug-ins list is sometimes quite challenging. Furthermore, the plug-ins are provided by SAP without the plug-in source code. This makes understanding the usage of some methods as well as debugging quite difficult. Hopefully, SAP will address these two issues in future releases of the SDK.

 

Extending the Transport Organizer View

The next step is to extend the transport organizer view with the menu entries to create the transport of copies. I wanted to add two feature to the transport organizer view:

  1. the possibility to create a transport of copies based on existing transport request
  2. the possibility to create and directly release a transport of copies based on en existing request.

To provide this functionality, I created the menu entries shown in the following screen shot:

2014-08-26 22_25_51-ABAP - adt_transport_utils_plugin_plugin.xml - Eclipse.png

The eclipse RCP enable the extension of views and menus using extension points. In order to extend the menu of the transport organizer view it is first necessary to identify the appropriate extension point. This can be done using the eclipse plug-in spy. By pressing <ATL>+<SHIFT>+<F1> the plug-in spy shows information regarding the current view. The information provided by the plug-in spy are shown in the following screenshot. In order to extend the menu of the transport organizer view the information regarding the active menu contribution identifier, in this case com.sap.adt.tm.ui.tmview, is important.

2014-08-27 07_39_06-ABAP - adt_transport_utils_plugin_plugin.xml - Eclipse.png

In order to extend the popup menu of the transport organizer view a menu extension (extension point org.eclipse.ui.menus) needs to be added to the "Extensions" section of the plugin.xml file. The easiest way to add an extension is to use the "Extensions Wizards". These wizards can be started by clicking on the "Add" button in the extensions tab. In order to create the menu items shown above I added a menu contribution consisting of a menu and two commands to the extension point.

2014-08-27 07_59_14-ABAP - adt_transport_utils_plugin_plugin.xml - Eclipse.png

Furthermore, I created a icon for each of the menu and the commands. The icons are located in the icons folder in the plug-in project. To add an icon to a menu or command is simply done using the "Browse..." button next to the icon element in the "Extension Element Details" part of the editor. Finally, I also externalized the strings like label and tooltip to allow for late internationalization of the plug-in. This can easily be done by right clicking on an extension element and selecting "Externalize strings" in the popup menu. This will create a folder named OSGI-INF in the plug-in project. The folder contains a file named bundle.properties that contains the externalized strings.

 

Implementing the Menu Command Handlers

The next step is to implement the command handlers underlying the menu entries. Command handlers are created by extending the extension point org.eclipse.ui.handlers. The link between a command and a handler is created via the commandID. In the screenshot above the command "Create Transport of Copies" is linked to the commandID adt_transport_utils_plugin.commands.createAndRelease. The command itself is implemented by a class de.drumm.adt_transport_utils.ui.CreateAndReleaseTransportOfCopiesHandler.

Furthermore, a expression is linked to each command specifying when the command is enabled. In this example the commands are only enabled when only one item is selected an the item in a subclass of com.sap.adt.tm.IRequest. The expressions are defined using the Command Core Expressions. A details explanation of Command Core Expressions is beyond the scope of this blog post. A detailed explanation of Command Core Expressions is available at Command Core Expressions - Eclipsepedia.

2014-08-27 10_53_44-ABAP - adt_transport_utils_plugin_plugin.xml - Eclipse.png

The handler class for a command is implemented by inheriting from org.eclipse.core.commands.AbstractHandler and implementing the execute method. The following code snippet shows the complete code of the CreateAndReleaseTransportOfCopiesHandler class. In the execute method the current selection is read from the active window. Using this information an instance of the TransportOfCopiesRequest class is created and the its executePost method is invoked.

public class CreateAndReleaseTransportOfCopiesHandler extends AbstractHandler {
    public CreateAndReleaseTransportOfCopiesHandler() {
    }
    public Object execute(ExecutionEvent event) throws ExecutionException {
        IWorkbenchWindow window = HandlerUtil
                .getActiveWorkbenchWindowChecked(event);
        ITreeSelection selection = (ITreeSelection) window
                .getSelectionService().getSelection();
        new TransportOfCopiesRequest(window, selection, true).executePost();
        return null;
    }
}



The executePost method is shown in the next code snippet. In the method first the destination of the ABAP project is read. Next, the getResourceUri method uses teh discovery service provided by the ABAP development tools SDK to get the URI of the back end service implementation. Finally, the post method of this URI is invoked.

public void executePost() {
        String destination = this.getAbapProjectDestination();
        URI tocResourceUri = this.getResourceUri(destination);
        if (tocResourceUri != null) {
            this.executePost(destination, tocResourceUri);
        } else {
            MessageDialog.openError(this.window.getShell(),
                    "ADT Transport Utils Error",
                    "Necessary backend resource could not be found. ");
        }
    }


In the getRessourceUri method the discovery service is instantiated wit a DISCOVERY_URI (in this case /ztransportutils/discovery). Next the discovery service is used to get an instance of IAdtDiscoveryCollectionMember using the TOC_RESOURCE_SCHEME (http://www.drumm.de/transportutils) and the TOC_TERM (create_toc). These strings will be relevant when implementing the discoverable resource in the backend as they provide the connection between the discovery service and the concrete service implementation.

 

private URI getResourceUri(String destination) {
        IAdtDiscovery discovery = AdtDiscoveryFactory.createDiscovery(
                destination,
                URI.create(IAdtTransportUtilsConstants.DISCOVERY_URI));
        IAdtDiscoveryCollectionMember collectionMember = discovery
                .getCollectionMember(
                        IAdtTransportUtilsConstants.TOC_RESOURCE_SCHEME,
                        IAdtTransportUtilsConstants.TOC_TERM,
                        new NullProgressMonitor());
        if (collectionMember == null) {
            return null;
        } else {
            return collectionMember.getUri();
        }
}

The executePost method is quite simple. It adds the ID of the selected transport request and if the transport of copies shall be released immediately as query parameters and executes the post method. The remainder of the executePost method then mainly consists of error handling.

 

Plug-in Build Parameters & Testing

The last thing that is necessary to complete the implementation of the eclipse part of the plug-in is to adjust the build parameters. Here it is necessary to add the icons folder to set of folders that need to be included in the binary build. This is done on the build tab of the plugin.xml file. While this isn't required to test the plug-in in the development environment it is required to create a fully functional release of the plug-in afterwards.

2014-08-27 22_12_24-ABAP - adt_transport_utils_plugin_plugin.xml - Eclipse.png

With the build parameters set up correctly it is now possible to perform a fist test of the plug in. The easiest way to do this is to right-click on the plug-in project an select Run as -> Eclipse application. This will start a new eclipse instance including the new plug-in.

Summary

The completion of the eclipse plug-in concludes the first part of the blog series. If you want to have a detailed lock on the source code of the plug-in itself, the easiest way is to use the Import -> Projects from Git wizard in eclipse to simply clone the git repository (ceedee666/adt_transport_utils_plugin · GitHub).

If you only want to try out the plug-in, there is also a brief description of the installation procedure for the plug-in (for both, the eclipse and the ABAP part) available on the GitHup repository.

 

Christian

Hello community,

 

I presented different integrations scenarios with ABAP in Eclipse in the last time:

  1. Java Meets ABAP
  2. COM Meets ABAP
  3. FreeBASIC Meets ABAP

 

 

Here now another one: Python in the context of ABAP development with ABAP in Eclipse.

 

I presented four steps of using NetWeaver RFC library with Python:

  1. The Connection
  2. Invoke Functions
  3. Execute ABAP Report
  4. Read Table

 

 

To use Python with Eclipse I get the PyDev - Python IDE for Eclipse. After copying the files from the ZIP Archive in the features und plugins folder, the Python view is ready.

 

I copied one of my examples - ping - in the editor and add the line  # -*- coding: iso-8859-15 -*- on top of the source and all is ready to rumble.

 

005.jpg

You see, ABAP, Java via JCo and Python via NW RFC development peaceful side by side.

 

Cheers

Stefan


Hello Thomas Fiedler, first of all thank for so clear instructions which allow people not only from development but also from other areas to familiarize with Eclipse. I work in Product Support, I do not need right now to write ABAP code, but soon I will need to create reports/note corrections to SAP Customer. I intend to make use of Eclipse.


I did not know Eclipse with ABAP, I knew Eclipse with other languages plugin before Eclipse Explorer challenge.


I think feature explorer in the beginning helps, once it is practiced it is no longer necessary as any other similar guidance tool. For new features it can be always relevant.


I do not know for sure about if that is helpful to onboard new developers I would like to check the comments of Brazil ABAP expert Carlos Machado.


I liked the QuickFix variable rename, quite useful.


Besides Carlos I would like to present this to Fernando Giroleti and Israel Lemes.


Cheers,

Christian Rosa



I found an issue in Eclipse, when trying to write "(" in the source code of a program, which on a German keyboard layout is typed by "Shift+8". Meanwhile i heard from others with an English keyboard layout, that they have the same issue with the "*". So i suppose it seems to be a general issue for all users, who have a character on "Shift+8", that they need in the Source code... And this is the story:

 

Have you ever tried writing an opening bracket "(" in an ABAP source in Eclipse (or probably in any other source in Eclipse)? For example, when you need to define a length? Or use a function of ABAP like "lines ( ... )"? Or wherever you need to put something in "( )"?

 

Well, when i started with AiE, i first tried to modify some of my existing sources, which all in all was not a big deal. But i struggled, when i came to the point, where i had to enter brackets in the code, especially the opening bracket "(". On a German keyboard this character is typed by "Shift+8". Try to do this in the default setup of Eclipse ... you will not succeed, because "Shift+8" starts two Editor commands.

 

Well, i did not think any longer about that as long as i was modifying existing code, because there i used a workaround by copying the bracket and paste it to where i needed it. But when i created my first new program with AiE, i came to the same point, where i needed these brackets. And then i thought: "There should be a way to solve that without always opening a source with a bracket and copy it from there".

 

While searching around in the menus of Eclipse i found the solution in the preferences of Eclipse (Window -> Preferences). There you can find, under section General, the command settings in Keys. I sorted the table descending by column "Binding", and then looked for "Shift+8", which i found rather easy. I clicked on the command with "Shift+8, W", and changed it to "Ctrl+Shift+8, W", not without checking before, if this key sequence is free. I did the same with the next command ("Shift+8, I" -> "Ctrl+Shift+8, I"), and saved the new settings by clicking OK.

 

I tried the changes immediately, but didn't fully succeed. "Shift+8" did not start those two commands any more, but it also did not write a "(" into the source code. So i restarted Eclipse ... SUCCESS!

 

So far so good. But what do i do, if at one point in the evolution of Eclipse this new key sequence will be used for some other commands? Well, i decided to no longer think about this and wait what future will bring. Maybe at some point the developers of Eclipse notice, that there command keys could "kill" some essential feature of the keyboards by using those "Shift+<character>" key sequences. For now it should be ok for me, and perhaps for everyone, who has the same issue.

 

P.s.: i tried all other "Shift+<character>" sequences, to find out, if there could be more problems, but luckily this was the only example...

P.s.s.: i found, that this is an Kepler specific issue, which is not present anymore in the Luna installation... So let's see, what the AiE Luna variant will bring...

Hi Everyone,

  This is my first blog which I am considering to represent my self over in SCN. I started my career 4 years ago, Currently working as ABAP Consultant in SAP Partner company, the company which use to provide the SAP Software service all over the world.

 

I am here posting this blog after read the following blog wrote by Thomas Fiedler

 

Become an ABAP in Eclipse Feature Explorer and earn the Explorer Badge

 

I use to attend more number of conferences all over India. Based on that, have more number of friends. Even in every technical conference, I use to hear one sentence 'Use Eclipse for Development'. Everyone push me to do that. But at the time, I thought to do it. I didn't did, because of maybe time constrains and also some client are not getting upgraded(below 7.31 version).

 

As everyone knows,  sometime still the problem comes we won't step forward to find the solution.

download (1).jpg

According to Murphy's law,

 

"Anything that can go wrong will go wrong"

 

In the same way, I too faced one problem in development system, due to network issue which is not faced before, I shifted to eclipse from SAP GUI.

download.jpg

 

Done a development a month ago, whenever I use to do the coding, always have a thought in mind to save the code for every 10 minutes. But now, I forget to save the code, that lead me to rewrite the 100 lines of code again.

images (1).jpg

But I make sure the same thing should not repeat it again. In order to move forward with my career over development, It is required to find the development tool which works even in offline.

15084553-offline-key-showing-internet-communication-status-disconnected.jpg

 

I found the solution after browsing the Internet as 'Use Eclipse for Development'.

 

images.jpg

In the same way, I shifted from SAP GUI to Eclipse for development.

Shift from SAP GUI to Eclipse.jpg

In order to survive in the world it is required to learn new things also have to adopt the old one too, else we will be thrown out as shown below .

reconnect-nature-outside.jpg

 

Eclipse Feature Explorer will really help the new ABAP Developer in Eclipse Environment. There are more number of options available in eclipse that helps the developer for developing the complex application.

 

Also I am suggesting the following post to everyone

 

How to get your colleagues into ABAP in Eclipse

 

Please find the link to Install the Eclipse in your system

 

SAP Development Tools for Eclipse

 

I would like to say one thing to everyone as per my experience 'It is not easy to learn anything, also it is not too far to learn'. Everything depends on ourself.

 

I would like to suggest Eclipse to the following Person

 

R Sampath Kumar Kannan Nair  Midhun VP Dhivya Shanmugam ManiGandan G.

 

Regards

 

Rajkumar Narasimman

Gabriel SAULESCU

aie_feature_explorer

Posted by Gabriel SAULESCU Aug 18, 2014

I'm pretty new to the SAP environment.

My career was as an analyst-programmer  where I studied business informatics.

In my new challenge at Economic Software Systems  I'm learning to develop in ABAP since Jan 2014.

 

I had installed Eclipse before taking the Eclipse Explorer Challenge, for working with SAP HANA Cloud Platform.

 

The feature explorer shows for all who are starting, like I, that the ABAP language has a plent of options even for those who have an ERP SAP installed, or does not work directly with it.

 

I think the feature explorer is a good first step - for getting tied to Eclipse much to less information, I guess.

 

All the best,

Gabriel

Hello community,

 

in my last blog posts here, here and here I showed different scenarios of COM development integration - all with ABAP in Eclipse. To increase the integration I developed a library which delivers the complete interfaces of all methods and properties of a COM library. The library calls TypeLibInf.dll.

 

TypeLibInf library offers three ways of information to the interface information of a COM library:

  1. Via StdCall interface
    Function DLL_TypeLibInf (TypeLibName As String Ptr) Export As Long
    TypeLibName = Path and name of the type library
    Delivers the address to a string with the interface information
  2. Via Java interface
    Delivers a string with the interface information
  3. Via COM interface
    Delivers a string with the interface information

 

You can use it via Java e.g. like this:

 

// Begin----------------------------------------------------------------

 

  public class TypeLib

  {


    public native String Inf(String s);

 

    static

    {

      System.loadLibrary("TypeLibInf");

    }

 

    public static void main(String[] args)

    {

      TypeLib TL = new TypeLib();

      try

      {

        String Interface = TL.Inf("C:\\Windows\\System32\\wshom.ocx");

        System.out.println(Interface);

      }

      catch (Exception e)

      {

        System.out.println(e);

      }

    }


  }

 

// End------------------------------------------------------------------

 

Also you can use it via COM e.g. like this:

 

'-Begin-----------------------------------------------------------------


  Set TypeLibInf = CreateObject("COM_TYPELIBINF")

  If IsObject(TypeLibInf) Then

    Interface = TypeLibInf.COM_TYPELIBINF("C:\Dummy\COMBeep.dll")

    MsgBox Interface

    Set TypeLibInf = Nothing

  End If

 

'-End-------------------------------------------------------------------

 

Also I developed as example a tiny program which uses the StdCall interface of the library. It shows all methods and properties of a COM/ActiveX library in a tree, below their interfaces. With a double click on the method or property the program generates an associated ABAP code. Also you can see the interface definition with all arguments and their types.

 

001.JPG

I hope in this way it is much more easier to developing ABAP programs with COM/ActiveX connection.

 

I integrate the Java interface for a future development, to integrate the same functionality as view for ABAP in Eclipse.

 

You can download the library and the program with the examples here.

 

2014/08/25 - Tiny update of the program, now instantiation of OLE object in ABAP code generation with subrc request.

2014/08/28 - Tiny update of the program, small bug fixing in ABAP code generation (Thanks to Holger) and the most variable types are now identified in ABAP code generation.

 

Enjoy it.

 

Cheers

Stefan

And the winner is ...

 

 

My name is Stefan, and i’m working with SAP development (namely ABAP) since our migration to SAP in 2003/2004. Shortly after our Go Live with SAP my company was bought by a big Danish company, and during the years our SAP system was first integrated into their SAP landscape, and then after a new migration phase, in 2011 closed down. In that phase I was lucky having enough experience to get “drafted” by the ERP development team. Since then I do ABAP development for the “big mother”.

 

My first contact to ABAP in Eclipse was during the “DSAG Jahreskongress” 2010 in Nürnberg, where Thomas Fiedler held his first presentation about the upcoming tools and the Eclipse framework. I was really pleased and looking forward to the first release of this fantastic development tool. But then I did not hear or read anything about it until the “DSAG Jahreskongress” 2012 in Leipzig .

 

The more I was pleased with that news, so I instantly decided to inform my new boss and my colleagues about it, well knowing, that we would not have a chance to use it without an upgrade of our ERP systems. But I followed every possible event, where I could get news about the AiE.

 

And then the fantastic thing happened: my IS department announced an upgrade of our systems to 7.31 SP11 in June 2013! Great! I will be able to use AiE!

I couldn’t even wait for the finishing of the upgrade and already started to get contact with AiE to our Modelling system. Of course with little luck, as there were not even the basic settings in the system and also the necessary roles and authorizations for development from the Eclipse platform were missing in my profile. But I thought: time will bring…

 

But then the worst case happened: the upgrade was stopped 2 days before the Go-live-to-Production weekend! Damn!!!

 

Well, to make a long story short: I had to wait until this year (2014), in June. The next try for upgrade took place, and this time it should be 7.40 SP05! Even better, I thought!

 

I got in contact with Thomas, and he suggested to schedule a Websession with all my development colleagues to introduce the AiE to my department. Which I thought was a brilliant idea, and after a short talk to my boss, who also was totally hooked to that idea, was immediately done.

 

Meanwhile we had this session, I have installed Eclipse and the ABAP Development tools, and have done my first steps in AiE with help of this fantastic Feature Explorer! And I must say: it overcame my expectations by far! It is such a great experience to use this AiE, that I think by myself: “How could we have done our work all these years?”… Ok, this wouldn’t be fair against SE80 and all the fantastic development tools within SAP, which I used through the past 11 years. But I think, this is a “quantum leap”.

 

So, next thing for me will be to learn and try and work with the new tools, and visit one of these “CodeJam” sessions. And I think I’ll gonna be something like a “Mentor” for my colleagues, helping them to use these tools (maybe not all, but at least some of them ).

 

I’d like to thank Thomas for his support introducing the tools to my department. And even more for this great work in improving the tools and bringing them to this state.

 

And to every “Newbie” out there: try out the Feature Explorer, it will help you! It is a very good tool to get known to the basic features of AiE, and in addition with the Reference card for the Shortcuts it is rather easy to make the first steps into a new world of ABAP development.

 

So: Let the community grow!

 

Stefan

@Jacob Rasmussen, @Rock Chen, @Amy Liu, @Dorthe Røhr Lauritzen,

Hello community,

 

in my development process I often use SAP GUI Scripting for repetitive tasks or to test the UI of my program. As far as I can see uses ABAP in Eclipse the NetWeaver Business Client (NWBC) for its in- and outplace SAP GUI windows. I wrote here about my experience with SAP GUI Scripting and the NWBC.

I checked out the SAP GUI Scripting with ABAP in Eclipse and my conclusion: It is possible to use your SAP GUI Scripts again in the context of ABAP in Eclipse - SAP GUI Scripting works.

 

To simplify this job, I programmed Scripting Tracker, which I introduced here. Scripting Tracker is NWBC ready, so it works with the in- and outplace SAP GUI windows of ABAP in Eclipse very fine. I checked the Analyzer and Recorder with different scenarios and both works well.

 

001.jpg

 

As you can see, you can work with your consolidated SAP GUI Scripting processes in the context of ABAP in Eclipse again.

 

Cheers

Stefan

Hello SCN-community,

I tried my first steps in the world of CDS. As you may recognized in my last blog, I have to provide a kind of HANA-readiness. The Core Data Services (CDS) are available on both platforms – HANA and non-HANA.

BRFplus - DB Lookup expression and currencies

 

In order to solve a problem in BRFplus, Carsten Ziegler gave me the advice to take a look at CDS. I have to build a few aggregates upon the new General Ledger for some kind of statistics. The problem addresses to sum a few amount columns whose currency information points to another table. This is currently
not supported by the BRFplus database lookup expression. Technically in the case of the ledger it’s getting more complicated due to its table design.

 

But what if you only operate with one single currency? In fact if you have the same problem with another table, CDS is definitely something you may look
at.
To give you an overview I built a small example table: 

Table.png

All amount fields refer to T000-MWAER (the clients default currency). For now, we want to sum each amount column of the table in BRFplus. This gives us the following errors:

BRFplusError.png

In order to solve it we think about a view in which we explicit forget the currency details. This is done by creating a CDS view. But in CDS we are able to do more. We can create a view hiding the currency information or we can map all amount columns to a constant defined currency. I prefer the last variant because we take the currency information into BRFplus and do not need to append it later to the data. But sometimes you may not need the currency so I provide examples for both implementations.

CDS-View 1: Removing currency Information

CDS_VIEW.png

By using the CAST function we transform the values of type amount to simple decimal numbers.

 

CDS-View 2: Mapping all amount columns to a static defined currency

CDS_VIEW_WITH_CURR.png

In order to give the currency information back to BRFplus we have to normalize all amount columns. This is done by defining a new currency key column. This column is annotated with @Semantics.currencyCode. To provide a constant value as currency information, I use the scalar value 'EUR' and cast it to the appropriate type. Then we have to link all currency fields of the underlying table to the new currency key column. To do this we annotate each amount column with @Semantics.amount.currencyCode and provide the currency key column as the property.


Putting it all together

 

With one of those CDS views we can finalize the example in BRFplus.

BRFplusOK.png

If we try to simulate the database lookup expression we get something like this:

RESULT.png

CDS – Built In SQL-Functions

The example was written on a SAP NW7.40SP6 on HANA where I did not find many built in SQL-Functions.

Aggregations:

  • MIN
  • MAX
  • AVG
  • SUM

Control and/or programming:

  • CAST
  • CASE
  • LPAD
  • SUBSTRING
  • MOD
  • CEIL

 

On SCN I noticed a thread where the following functions are announced for SP8:

  • ABS
  • DIV
  • DIVISION
  • FLOOR
  • ROUND
  • CONCAT
  • REPLACE

That’s something I will check when SP8 is officially out.

 

Summary

CDS with it's Advanced SQL will be one important functionality in todays application development. It even solves problems of already released projects like BRFplus. Due to the fact CDS is available for non-HANA and HANA (here with a wider feature set)  it becomes the backbone to build HANA-ready solutions I think.

First: This is amazing!

 

Well, my name is João Lucas Dal Farra and i live in Criciúma - Santa Catarina - Brazil and i have 20 years old.

 

I work with ABAP about one and a half year, i have certification in ABAP and PI.

 

I knew it could be programmed in java in PI, but in a ABAP in java platform I do not know.

 

The feature explorer shows for all who are starting, like I, that the ABAP language has a plethora of options even for those who have an ERP SAP installed, or does not work directly with it.

 

Unfortunately I had some problems with the installation because some of my environments do not support the connection to the ABAP DT and I have a MacBook that is not the most suitable computer to run SAP, but all the features of the Features explorer ran right and was very pleased with learning.

 

Allan Abatti

Let’s talk briefly about my motivation to write this blog. I feel ongoing frustration of ABAP developers (e.g. great blog series of Martin English: part 1, part 2, part 3 and part 4) when it comes to questions on how to either access or to download test/demo SAP systems. This continues with installation and deployment of such a systems as there are many issues which one developer may face (e.g. here) till the systems gets installed and up and running. Also when it comes to questions if there are still some ON PREMISE (again on premise not cloud version) installations of test/demo NetWeaver system available for Linux OS (e.g. here) left. Just to be clear I have nothing against cloud versions of SAP but on other hand I hear people for whom cloud is not an option for whatever reason.


I understand that this blog can’t cover all the issues that person not very familiar with SAP technologies may face during installation of SAP NetWeaver Application Server ABAP 7.03 SP04 Trial. But somehow I feel there are not enough resources available not only for beginner to cover this topic. Therefore I gave it a shot to describe my experience while I was doing it.


Needless to say that other part of motivation was to give a guide also to the people who are interested to ABAP development in Eclipse.


 

Content:

1. Download of NetWeaver ABAP 7.03 SP04

2. Installation of the same

3. Eclipse installation & usage

 

Hardware & software platform I used:

  • Intel i7 based laptop with 16GB RAM
  • Win 7 Utimate 64 bit virtually deployed via VMware Player
  • 8GB of RAM granted to the virtual OS however minimum is 2GB but more memory is needed to run it monthly
  • hard drive space for virtual OS had 60GB

 


1. Download of NetWeaver ABAP 7.03 SP04

First download of installation media is needed. It can be obtained from store.sap.com. Search for: SAP NetWeaver Application Server ABAP 7.03 64-bit Trial. Click on Trial Version. Alternatively you can use pages like developers.sap.com -> Application Platform -> ABAP Platform which point to the SAP Store.


NPS_01.png


While being there I filled up registration form for trial version:

NPS_02.png


Soon after that I got an email with link to download installation media. Notice the link is valid for 48 hours. File is called ABAP_7_03_SP04_64_bit_Trial_3_9_2_GB.rar and it has about 3.9GB in its volume. After un-zipping it following is structure of installation folders:

NPS_03.png


Before starting with real NetWeaver installation there are few software prerequisites that must be met on the system where NetWeaver will be installed.

JAVA: I used jre-7u67-windows-x64.exe, download it from java.com and install before starting with NetWeaver installation.

 


2. Installation

I made sure that  my user had administration rights granted. I ran the installation by kicking off file sapinst.exe from folder:

\ABAP_Trial_7_03_SP04_Win_64_bit_Version\SAP_NetWeaver_703_Installation_Master\DATA_UNITS\BS2011_IM_WINDOWS_X86_64\sapinst.exe


Here’s first screen of installation wizard:

NPS_04.png


After little preparation operations installation logged off my user:

NPS_05.png


After I did re-logon following installation batch was running:

NPS_06.png


I needed to accept the license (scroll to very down of the window) in order to continue.

NPS_07.png


On next screen passwords are being set for all SAP’s technical users:

NPS_08.png


This screen sums up installation checks. My system didn't meet some of them but I let them as they were and it turned that they were just minor issues. If you get similar result of the checks just choose Cancel to continue with installation without repeating the checks:

NPS_09.png


On next screen I could mark parameters that I wanted to change. After that I went through list of all the parameters and revised them. Mostly it is about password setting, choosing SID (SAP ID) abbreviation etc.

NPS_10.png

 

Once all parameters were revised, real installation started with execution of first few phases:

NPS_11.png


First error I came across was while installing DB client (phase no. 4):

An error occurred while processing option SAP NetWeaver 7.0 including Enhancement Package 3 > SAP Application Server ABAP > MaxDB > Central System > Central System( Last error reported by the step: The database installer reported an error. DIAGNOSIS: Some database applications might still be running. SOLUTION: Check the log file sdbinst.log and C:\sapdb\data\wrk\MaxDBRuntimeForSAPAS_install__.log.). You can now:

  • Choose Retry to repeat the current step.
  • Choose Log Files to get more information about the error.
  • Stop the option and continue with it later.

Log files are written to C:\Program Files/sapinst_instdir/NW703/AS-ABAP/ADA/CENTRAL/.


NPS_12.png


In my case copying of “c:\windows\system32\drivers\etc” folder to “c:\windows\SysWOW64\driver” helped to solve this issue. Remember to restart your OS before continuing the installation. Other solution can be: Standalone installation of DB client.

So now import ABAP import phase was running:

NPS_13.png


Installation of NetWeaver 7.03 SP04 ABAP done:

NPS_14.png

 

As next step I installed SAP GUI. There is a version of SAP GUI within installation media folder:


Frontend&tools\SAP_GUI_for_Windows_7.20_Patchlevel_7_SDN_version_20110701_1428.exe


Later it turned out that this version of GUI is not that much useful while working with Ecplise…

How did it look like after first logon via SAP GUI with DDIC user:


NPS_15.png


Once I was able to get into SAP via SAP GUI with preinstalled user DDIC (use password as specified in documentation file: NWABAPTRIAL70304_64/README/welcome.html) I entered transaction SU01 to enable BCUSER (special user with all the authorization for ABAP development). In here I just set password for user BCUSER:

NPS_16.png


3. Eclipse installation & usage

Here I continued with Eclipse installation: I followed instruction available on tools.hana.ondemand.com/#abap. Basically I downloaded Ecplise itself – Kepler version from eclipse.org/kepler. Once I had it  downloaded I just ran eclipse.exe. In its Help menu I choose Install New Software. I Added https://tools.hana.ondemand.com/kepler into Work with field and I hit enter. By this features of were displayed. I Choose ABAP Development Tools for SAP NetWeaver and hit Next button. On next screen just confirm with Finish button.


Just to add more information in here: ABAP Development Tools (ADT) is plugin into the Eclipse which provides functions to connect ABAP repository (DDIC objects) to Ecplise.

NPS_17.png


Once this was done Eclipse asked me for restart:

NPS_18.png


After that I faced issue with ABAP communication layer as per following description:

NPS_19.png


ABAP communication layer is not configured properly. This might be caused by missing Microsoft Runtime DLLs VS2010. Consult the installation guide or download page for further details on how to install this component.

Native library sapjco3 is too old. Found library C:\work\mule\jco\sapjco3.dll has version "720.612", but required is at least version "721.215".


Although it says about obsolete version of SAP JCo (file sapjco3.dll) it is not the case. Actually there may be different reasons:


1. Microsoft VC runtime is missing: as per information on tools.hana.ondemand.com/#abap you have to download and install it from: x86 or x64

 

2. Not proper JAVA is installed: JAVA JRE 1.6 or higher is needed, download it from http://java.com/en/download/manual.jsp. I choose to install JAVA Platform SE 7 U67 version 7.0.670.1.


3. As per Note “2041195 - Eclipse does not identify operating system correctly” I set settings in Eclipse’s eclipse.ini file. Add following line:

-Dorg.osgi.framework.os.name=win32

Into -vmargs section of file.

 

After I went through these issues I was able to run my Eclipse with possibilities to create/modify ABAP objects.

This is how I created my first ABAP report in Eclipse. I opened File -> New -> ABAP project from Eclipse menu. By doing this I got following pop up window:

NPS_20.png


Here I by hitting Browse button I specified connection to my newly installed SAP NetWeaver ABAP 7.03 system:

NPS_21.png


On the next window I provided logon credentials to my SAP system:

NPS_22.png

 

By this I got new system in my Project Explorer view in Eclipse:

NPS_23.png


And here I choose to create new ABAP report:

NPS_24.png


Oooops I forgot to assign developer key to my user BCUSER:

NPS_25.png


In order to do that I went to SAP GUI and under my newly created development package ZPACKAGE I created new ABAP report via ABAP Workbench:

NPS_26.png


While proceeding with this activity systems asked me for developer key. I entered the key which is referred in documentation file: NWABAPTRIAL70304_64/README/welcome.html

NPS_27.png


Here’s how I finished my first ABAP report in AiE:

NPS_28.png


After activating it (via right click) I got an output:

NPS_29.png


While I wanted to see some other objects of ABAP Data Dictionary (DDIC) I came across following error:

Contact your system administrator. A new version of SAP GUI for Windows needs to be installed.

               Actual Version    SAP GUI for Windows: 720 LSAPI protocol version 5

               Required Version              SAP GUI for Windows: 720 Patch Level 9


NPS_30.png


I realized that I was using “mini” or core version of GUI which is delivered with installation (in folder Frontend&tools). So I de-installed that version and installed full version 730 together with currently most up2date patch 09. After that seems I have a full access to all features of AiE.


When it comes to SAP GUI version here’s another issue. For independent developers not having access to SAP’s downloads area (on so called SAP Market Place – SMP) it can be an issue to get full version of SAP GUI.

 

Finally this is the end. My NetWeaver installation is working and I’m able to code ABAP in Ecplise. Party in your code!

 

PS: This blog is cross published on my personal blog site.


Where to go next:

ABAP in Ecplise space

FAQs - ABAP Development Tools for Eclipse

Which SAP NetWeaver releases are compatible with ADT?

Hello community,

 

I posted in the last time different Eclipse integration scenarios:

  1. FreeBASIC meets ABAP - how to use FreeBASIC (representative for other languages) via RFC library with ABAP
  2. Java meets ABAP - how to use Java code via JNI and a Java COM bridge inside ABAP


Here now a new integration scenario: COM library development and the using of this COM library with ABAP in the ABAP in Eclipse IDE.


To develop COM libraries I use PowerBASIC. PowerBASIC is a very powerful compiler to create 32-bit applications or libraries. also COM libraries. You can find more information about PowerBASIC here. To use PowerBASIC inside from ABAP in Eclipse I use the Wordfile Editor plugin too, which I presented here.


The first step which I made, was to integrate the compiler inside ABAP in Eclipse.

001.JPG


Now is it possible to code and to compile the COM library with ABAP in Eclipse.

003.JPG

'-Begin-----------------------------------------------------------------

 

  '-Resource section----------------------------------------------------

    #Resource TypeLib 1, "COMMsgBox.tlb"

 

  '-Directives----------------------------------------------------------

    #Compile DLL

    #Dim All

 

  '-Constants-----------------------------------------------------------

    $LIBID = Guid$("{D1AA85A8-F8AD-4A0E-9DE8-942543A3741F}")

    $CLSID = Guid$("{084BDEC8-ACA0-4068-A6B7-778785D64521}")

    $IID = Guid$("{A5EBE762-82A4-44A9-9A2E-2BE6CF102564}")

 

  '-COM directives------------------------------------------------------

    #Com Doc  "COMMsgBox"

    #Com Name "COMMsgBox", 1.0

    #Com Guid $LIBID

    #Com TLib On

 

  '-Main----------------------------------------------------------------

    Class COMMsgBox $CLSID As Com

 

      Interface ICOMMsgBox $IID : Inherit IDispatch

 

        '-Method BoxMsg-------------------------------------------------

          Method BoxMsg()

            MsgBox("This is a Test")

          End Method


      End Interface

 

    End Class

 

'-End-------------------------------------------------------------------


After the compiling I registered the COM library with regsvr32 in the Wicked Shell - look here.


Now we can use this COM library inside ABAP.

002.JPG

 

"-Begin-----------------------------------------------------------------

  Program Z_TEST.

 

    "-TypePools---------------------------------------------------------

      Type-Pools OLE2.

 

    "-Variables---------------------------------------------------------

      Data MsgBox Type OLE2_Object.

 

    "-Main--------------------------------------------------------------

      Create Object MsgBox 'COMMSGBOX'.

      If sy-subrc = 0 And MsgBox-handle <> 0 And MsgBox-type = 'OLE2'.

 

        Call Method Of MsgBox 'BoxMsg'.

 

        Free Object MsgBox.

      EndIf.

 

"-End-------------------------------------------------------------------


004.JPG

Another point of view in the hemisphere of polyglot programming with ABAP in Eclipse.


But one salt crumb:

After the using of the COM library with ABAP, the process SapGuiServer.exe blocks the COM library and it is e.g. not possible to compile the library again. You got the following message:

005.JPG

So I developed a small program to terminate SapGuiServer.exe and place it also in the tools of Eclipse.

006.JPG

; Begin-----------------------------------------------------------------

 

  ; Directives----------------------------------------------------------

    EnableExplicit

 

  ; Function Terminate Processes----------------------------------------

    Procedure TerminateProcesses(Name.s, ExitCode = 0)

 

      ; Variables-------------------------------------------------------

        Protected result

        Protected processID

        Protected hProcess

        Protected Process.PROCESSENTRY32

        Protected ProcSnap = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS, 0)

 

      If ProcSnap <> #ERROR_INVALID_HANDLE

        Process\dwsize = SizeOf(PROCESSENTRY32)

        If Process32First_(ProcSnap, Process) = #True

          While Process32Next_(ProcSnap, Process) <> #False

            If Trim(PeekS(@Process\szExeFile,#MAX_PATH)) = Name.s

              processID = Process\th32ProcessID

              If processID

                hProcess  = OpenProcess_(#PROCESS_TERMINATE, #False, processID)

                If hProcess

                  If TerminateProcess_(hProcess, ExitCode)

                    result = #True

                  EndIf

                  CloseHandle_(hProcess)

                EndIf

              EndIf

            EndIf

          Wend

        EndIf

        CloseHandle_(ProcSnap)

      EndIf

 

      ProcedureReturn result

    EndProcedure

 

  ; Main----------------------------------------------------------------

    If Not TerminateProcesses(ProgramParameter(0))

      MessageRequester("TerminateProcess",

        "Failed to terminate " + ProgramParameter(0) + " processes")

    EndIf

 

; End-------------------------------------------------------------------

End


As you can see, nothing special, only process termination of any process with the name from the arguments of the command line - SapGuiServer.exe.

You can the source and the compiled version of TerminateProcess here.

After calling this program I get the following message:

007.JPG

Mhmm, not nice, but it works. On this way it is not necessary to restart the complete IDE to compile the library again.

This could be a small improvement for a future release - a defined exit of the SapGuiServer process, for this case of development.


I like ABAP in Eclipse very much, it gives us new horizons of development integration.



Cheers

Stefan


I like the way SAP has put in some efforts to explain ABAP in Eclipse (AIE) IDE as a tool for ABAP development.

 

The feature explorer view helps as a good onboarding tool for developers to understand the new shortcut keys (or hotkeys if you want to call it)..

1. Fex view.JPG

I have ABAP for Eclipse - HANA development installed. For clarity, I would like to provide the version installed.1. Kepler ver.JPG

ABAP has been my favourite programming language since 1998-99. It is simple and offers great debugging capabilities.

 

I'm sure, it is really a challenge for SAP to bring in similar features in AIE, but I'm sure it is a question of time.

 

I do like some of the featuers of AIE (ABAP in Eclipse) that has meant to be consistent or similar to using (se38/se37)

SAP GUI development.

2. Stage1_Code element.JPG

the F3 to go back is just great, but there are of course lot of other features that I wish

the AIE has to bring in. To simply put this, there are many points it has brought in

to provide a seamless experience for the existing ABAP developers, which I beleive is

critical. Although I see the direction is headed towards that point.

2. Stage1_Code Linked.JPG

The "Where-used" is one great feature I love it.

3. Stage1 _complete.JPG

It does provide the inline code completion feature, which is again great.

7. Stage3_inline code editor.JPG

 

I want to still check few things when we write inline enhancements (ENHO objects ). It (inline enhancements) is

bit tricky though here in AIE, but I need to spend more time there yet.

 

Having said, there is a lot of room for SAP to look at simplifying the tool further, providing the motivation for new

(and existing) developers to use more AIE for development.

 

Enjoy the AIE !!!

Actions

Filter Blog

By author:
By date:
By tag: