Skip to Content
Technical Articles

SAP ABAP Platform 1909, Developer Edition: Day 1 Experience and Tips and Tricks

Like many of you reading this, my plans for this afternoon got blown of the water thanks the wonderful news of the new SAP ABAP Platform 1909, Developer Edition release. To read all about the announcement of this new offering for SAP developers please read Julie Plummer‘s blog post here: SAP ABAP Platform 1909, Developer Edition: AVAILABLE NOW | SAP Blogs

In this blog post I want to share with you my experiences installing the new ABAP developer edition on my Windows laptop. I run Docker on WSL2 and some of my experience will be specific to that environment.  For other parts I’ll share some general tips and commands that I found helpful along the way.

ABAP%20Dev%20Edition%20System%20Components

ABAP Dev Edition Software Components

On the subject of Docker and WSL2; if you aren’t familiar with WSL2 – the Windows Subsystem for Linux – I’ve written a few blog post in the past on the topic. This one in particular talks about installing HANA directly in WSL2 but it also gives a nice primer to the WSL2 topic in general: Installing SAP HANA, express edition into WSL2 (Windows Subsystem for Linux) | SAP Blogs

Sizing

First of all for all installation instructions I’d suggest going right to the Setup Instructions available on the Docker Hub page: ABAP Platform, Developer Edition Free Plan Details (docker.com)

Read through it end to end before you start the process to save yourself some headaches.

Unlike downloading an installer and running through the setup process on your local machine, you will be pulling down a complete and finished system image and then starting that up on your machine. It’s much like trading around a Virtual Machine image and then starting on a different host machine; except here we will use Docker as the “Virtual Machine” infrastructure and Docker Hub will be the place to download the content from.

I mentioned WSL2 before.  For Docker on Windows you have the choice of different engines to power it. WSL2 is a recent addition but allows you to use the more tightly OS integrated approach to manage the virtual machines that power Docker behind the scenes.

Now where this becomes important is in the sizing step. The setup instructions say the following:

Before your start, please make sure you have assigned enough disk space to your Docker set up. The image has around 23GB of size when compressed and 62GB after decompressing. It would be frustrating to lose plenty of time downloading the image to only find out docker does not have enough disk space to unpack the image.

To be able to successfully run the system, it’s necessary to assign at least 16GB RAM to Docker Desktop.

But if you are running Docker with WSL2 you might be initially confused because there are no sizing options. This is perfectly normal as WSL2 will auto-size both the disk and memory/CPU up to nearly the limits of what is available in the host OS. To read more about Docker and WSL2 here is a good reference: Docker Desktop WSL 2 backend | Docker Documentation

This certainly simplifies any Docker specific sizing. It does mean that you still need to ensure that your host Windows file system has enough free space to give to Docker. Beyond that, you don’t have to worry about CPU or Memory sizing.

This does mean that although the system requirements state 16Gb of memory, if your host OS has more; in Docker with WSL2 its going to give it to HANA and the ABAP system running in the Docker Image. At one point my system was giving 48Gb to Docker container OS. You can see this in Task Manager of the host Windows OS as the dynamic memory for Docker will all be allocated via a process call Vmmem.

Memory%20Utilization

Memory Utilization

Likewise the dynamic resource allocation has no problem putting load across all of my CPU cores either:

CPU%20Usage

CPU Usage

 

If I shell into the running Docker container I can see that the Linux OS within Docker shows a maximum of about 52 Gb of memory.  So Windows is reserving about 12 of my total 64 Gb automatically for the continued smooth host OS operations as well.

Memory%20Within%20the%20Container

Memory Within the Container

But the real beauty of this approach is that once they system “calmed down” after the initial startup phase it released a lot of the memory back to the host OS. The Linux environment within the Docker container still thinks it has 52Gb of memory, but the Vmmem process has shrunk down to 10.5 Gb.

Of course your actual numbers and the scaling is going to vary based upon your available hardware.  However if you are new to Docker and have the choice to run WSL2, I’d strongly recommend it. There is little to no configuration or sizing needed up front and the host OS is able to dynamically allocate (and reclaim/swap) resources to keep both the virtual and host environments running as well as possible.

Installation

The one major tip I’d have for you during the installation itself is read the whole section of the documentation first.  And don’t just cut and past the Run / Other command from the documentation.  I did that and then quickly hit the insufficient system limits configuration error.  It seems like anyone running on Mac or Windows is going to need to add the -skip-limits-check to the run command. I also learned later that you are probably going to want to put the -agree-to-sap-license switch on the run command. Otherwise you are always going to have to start the container in interactive mode to accept the agreement. I really want to later be able to run the server without keeping a docker command window open so I opted to put this into the run command. So here was the run command I ultimately ended up using:

docker run --stop-timeout 3600 -i --name a4h -h vhcala4hci -p 3200:3200 -p 3300:3300 -p 8443:8443 -p 30213:30213 -p 30215:30215 -p 50000:50000 -p 50001:50001 -p 50013:50013 -p 50014:50014 store/saplabs/abaptrial:1909 -skip-limits-check -agree-to-sap-license

I’m a bit of a control freak, so I like to know exactly what is happening during the startup process. So while the Docker run command is running in one terminal I open a second and shell’d into the Docker container where I can view the OS level processes.

Start%20Up%20Process

Start Up Process

This I believe is a critical tool for operating the Developer Edition.  Being able to execute a shell within the container is very much like using SSH or Telnet to connect to a remote server.  The command to open a shell to your ABAP dev edition is:

docker exec -it a4h /bin/bash

Once you have shell access within the container there are all kinds of things you can do to troubleshoot or even just look around for your own education.

For example if you switch to the ABAP instance owner user (a4hadm) you can run the command dpmon – which is similar to the work process overview SAPGUI transaction but from the command line.

su - a4hadm
dpmon 0

dpmon%20work%20process%20table

dpmon work process table

There are similar things you can do to check the status of the HANA database as well. For example:

su - hdbadm
./HDB info

HDB%20info

HDB info

Closing

To close out today’s post, let’s discuss shutting down the system. Keeping with my theme of liking control over things; I don’t really like just stopping the Docker container.  Even with the extended timeout the documentation suggested, it just feels like pressing the power button on the server.

Personally I like to manually shut down the ABAP and HANA layers myself before I kill the container.  For this I use the same above approach to shell into the Container.

Then I issue the following command to stop the ABAP application server layer:

su - a4hadm
/usr/sap/hostctrl/exe/sapcontrol -nr 0 -function StopSystem

Return to the root user via the “exit” command. Then switch again to the HANA user and use this command to stop the HANA database.

su - hdbadm
./HDB stop

I can also do a “top” from the shell to make sure everything is really stopped.  Now when I issue the “docker stop” command it should respond much faster and I sleep better at night knowing that the SAP software is safely and completely stopped before stopping the container.

If all of this talk of shell and these command line utilities has you intrigued; might I also suggest trying out the VSCode Remote Explorer extension. You can choose Containers and then will be shown a list of all running Docker Containers.  You can connect directly to it in a separate VSCode window and access the Shell and File System within the Docker container.

VSCode%20Remove%20Explorer

VSCode Remove Explorer

Or maybe you are thinking, I just want to write some ABAP code.  That’s fine as well and once you have the Docker container running – have at it. All that I’ve detailed here is really just additional background and exploration information for those that want to poke around behind the scenes.

The most important thing to do is just to get started.  We have a great new ABAP playground for education and exploration and I can’t way to see what everyone does with it.  I see that Uwe Fetzer has already been busy on day one of this new developer edition as well: Using multi model capabilities of SAP HANA in the new ABAP 1909 Developer Edition – Part I – Document Store | SAP Blogs and Using multi model capabilities of SAP HANA in the new ABAP 1909 Developer Edition – Part II – Spatial functions | SAP Blogs

44 Comments
You must be Logged on to comment or reply to a post.
  • You don't need to stop ABAP and HDB explicitly on your own, the container's init process do - the only thing you need to do is to use the parameters --stop-timeout 3600 or use Ctrl-C.

    Try it out and you will see that the container's init first stop the system appropriately using sapcontrol like you do.

  • Hi Thomas, BTP (Business Technology Platform) right now provides an ABAP trial service, and we can create a service key that lets connectivity between  ADT (Eclipse) and this ABAP service. I had understood that the last version of ABAP tools always is provided by the cloud ABAP service. It's this idea ok?

  • /
    • Hi Alban,

      Good to hear! If you blog about your adventures, experiments etc, please let me know! I'm gathering Community content, tips and tricks to put in a FAQ.

      BR Julie.

  • Hi, I am really getting stuck with the pull of the image from Docker. It gets to a certain point and then the download stops. In the blog above, from what Thomas says, it should autosize.

    I have installed docker as per the instructions and docker desktop is running. I then go to Windows Powershell and execute the pull command, it starts the download and then eventually just stops.

    Any advice on how to correct this would be highly appreciated.

    Thank you

    Anthony

    • Docker auto sizes if you are using WSL2 as the engine. If you are using the older option of Hyper-V as the engine on Windows you have to set a reserve size for Docker. Check your settings in Docker Desktop to see what you are running. If you are running Hyper-V then in Settings->Resources there is a dialog where you can size things.

    • Then it should autosize.  But of course you need enough space in the host OS. 170GB - that can be quite a lot.

      Also are you sure its really getting stuck.  It took a while. And there is an unpacking/decompression part of the pull process that seemed to not move much at times.  I checked task manager though and could see high CPU utilization and remained patient during this time. Or is stopping in the Downloading section of the pull operation?

      • As an update to this, I did finally get it to download and is installed succesfully. However I cannot figure out what my SAPGUI settings should be or if I should be updating the host file.

        If I use localhost in SAPGUI, I get a rabax error.

        Any help would be appreciated.

        Thanks

  • Great blog - my install worked exactly as described. But ... how do I access it from another PC/Laptop?

    I have a PC with Docker running.   Say the PC is 192.168.1.21 and the docker WSL has 172.31.2.1 - (as it shows in IPCONFIG) .  How do I setup SAPGUI or ADT Eclipse to access A4H?  I cannot ping 172.31.2.1 from any other PC other than the one it's running on.

    Thank you for any help!

    • Well this is going to depend a lot on your network and firewall setup likely.  For instance on my corporate machine the IT configured firewall blocks all such access from outside of my machine.  But by default the ports within the docker container are forwarded from the host.  That's why you have to configure the port mapping in the docker run command. Assuming that access to your PC (192.168.1.21) is allowed in general (firewalls), that's the IP address you can use to access the docker container within the same network. I say within the same network because I see 192.168.1.* and therefore I assume that's an internal router network. Of course if you want to access across the internet you are talking about router level port forwarding or DMZ as well.

      • Yes - this is all internal no firewalls or router port fwd needed. I did try setting up SAPGUI to point to 192.168.1.21 and was expecting tdp/3200 to work  - but I got a connection error. I can ping 192.168.1.21 from the laptop just fine. So maybe the ports were not exposed? I did use the - p  parameter. How else could I test that?

  • Hello Experts,

    Why this is so huge look at Java SDK u can run it on any laptop and desktop. No one would be able to run it as it is on their PC or Mac Book it is just too big.

    A RAP like environment with basic ABAP and compiler- can we have something like that low weight light to try out ABAP stuffs. may be something like that will make the language more accessible to masses.

     

    Regards,

    Prasenjit

    • I think this system is huge mainly because it comes with the HANA platform. Being an in-memory column-oriented database, HANA requires substantial memory. Maybe they could find a way of adding RAP on the previous ABAP AS 7.52 for a lightweight environment but I don't think it will happen.

  • Hi Thomas,

     

    Great blog.

    I was curious to know if SAP can make this available in the SAP CAL library https://cal.sap.com/, as a solution instance so it becomes easier to get started.

    Then, a developer like me who doesn't work much with Dockers and VM, can avoid this process.

    Thanks,

    Bharat Bajaj

  • Just my 2 cents as an ABAP developer for last 10+years- This ABAP language tied to the HANA Db will finally kill ABAP. JAVA did not kill it though Shai Agassi tried, Open Web UI frameworks could not kill it but this obsession with HANA model will kill this beautiful language.

    • I absolutely concur with you. SAP has gone crazy in order to bring something new every now and then.. its not only killing ABAP, but the ABAPers' motivation too..

      Every month some new circus.

      Latest act : the SAP SCP is changed to SAP BTP.

      Wow, what a move !!!

      1st ABAP on cloud platform -> Steampunk ->> ABAP RAP -> Now SAP BTP ABAP -> What Next ?? NO ABAP ???

      Can they please Stop this Renaming / Rebranding / Reimagining / Re-engineering this wonderful SAP world.

      We, the ABAP developer are tired of keeping the pace with SAP

      Let's just take it slow and keep things simple.

       

    • Local HDB?  Do you just mean the ABAP Trial we are discussing in this blog post? And what Web IDE trial version are you referring to?  What kind of connection?  Just the deployment of a Fiori application or do you want to connect at design time to pull in the metadata for OData services?

       

      If you want to do everything locally, I think your best option would be VSCode with the Fiori Tools installed.  You could run this on your local machine and connect to the running ABAP Platform 1909 trial instance running locally as well.

      • Thanks Thomas for the reply.

        Sorry for the confusion, I meant to say - "how to connect WebIDE back-end ABAP server" for OData service consumption.

        Yes I meant the ABAP trial version discussed here in this blog which I am able to connect to Eclipse. But for UI5 development, I need WebIDE to be connected to backend. Local or cloud, but I don't get any info on how to configure that.

        I see few people use some kinda local WebIDE (not VSCode).

        Can I configure "SAP Business Application Studio Trial Edition" to back-end local ABAP server?

        Is there any documentation or blog on "how to .." on this if you can please refer to.

         

        PS - i will also check how to configure VSCode.

         

        Thanks, Satyaki

        • Hi Satyaki, did you figure out how to setup Web IDE to this trial version?  I can't find any doco.  Everything else works great, but how do we use Web IDE?  Is there port address or url maybe?

          Thanks for any info!🙂 

  • Thanks a lot Thomas for the inspiring blog to try the docker 1909 out!

    After multiple downloads(One failed due to connectivity and next due to disk full) but finally now have it extracted with no issues.

    But, when I boot it up getting below error and I tried a lot of searching around in the logs to identify what was going wrong under <instance>/D00/work folder & <instance>/ASCS01/work but no clue.

    C:\WINDOWS\system32>docker run --stop-timeout 3600 -i --name a4h -h vhcala4hci -p 3200:3200 -p 3300:3300 -p 8443:8443 -p 30213:30213 -p 30215:30215 -p 50000:50000 -p 50001:50001 -p 50013:50013 -p 50014:50014 store/saplabs/abaptrial:1909 -skip-limits-check -agree-to-sap-license

    You have accepted the SAP Developer Center Software Developer License Agreement
    by passing the parameter -agree-to-sap-license.
    You can read the license text in the file /SAP_COMMUNITY_DEVELOPER_License
    in the image.
    Hint: docker exec -it a4h less /SAP_COMMUNITY_DEVELOPER_License

    WARNING: the following system limits are below recommended values:
    (sysctl kernel.shmmni = 4096) < 32768
    (sysctl vm.max_map_count = 65530) < 2147483647
    (sysctl fs.file-max = 1297417) < 20000000
    (sysctl fs.aio-max-nr = 65536) < 18446744073709551615
    Hint: consider adding these parameters to your docker run command:
    --sysctl kernel.shmmni=32768
    Hint: if you are on Linux, consider running the following system commands:
    sudo sysctl vm.max_map_count=2147483647
    sudo sysctl fs.file-max=20000000
    sudo sysctl fs.aio-max-nr=18446744073709551615
    sapinit: starting
    start hostcontrol using profile /usr/sap/hostctrl/exe/host_profile
    Impromptu CCC initialization by 'rscpCInit'.
    See SAP note 1266393.
    Impromptu CCC initialization by 'rscpCInit'.
    See SAP note 1266393.
    sapinit: started, pid=14

    HDB: starting

    05.04.2021 16:12:25
    Start
    OK

    05.04.2021 16:19:06
    StartWait
    OK
    HDB: started, pid=575

    hdb_license_update: starting
    ---
    Retrieving HDB license information
    ---
    HDB Hardware Key : B1002322283
    HDB Expiration Date: 2022-08-09 23:59:59
    Days to expire : 491
    ---
    Not updating HDB license: the file /opt/sap/HDB_license was not found
    ---
    hdb_license_update: started, pid=2187

    asabap_license_update: starting
    ---
    Retrieving AS ABAP license information
    ---
    SAP License Key Administration - Copyright (C) 2003 - 2016 SAP AG

    System ID. . . . : A4H
    Hardware Key . . : JXXXXXXXXX (of this computer)
    Installation No. : *** not yet assigned ***
    System No. . . . : *** not yet assigned ***
    Release. . . . . : 777
    Software products: NetWeaver_HDB
    ---
    AS ABAP license can be automatically renewed from the file /opt/sap/ASABAP_license
    Hint: new container : docker run ... -v <local file path>:/opt/sap/ASABAP_license
    Hint: existing container: docker cp <local file path> <container name>:/opt/sap/ASABAP_license
    ---
    Not updating AS ABAP license: the file /opt/sap/ASABAP_license was not found
    ---
    asabap_license_update: started, pid=2204

    Application Server: starting

    05.04.2021 16:19:10
    Start
    OK

    05.04.2021 16:19:27
    StartWait
    OK
    Application Server: started, pid=2374

    Worker Processes: starting dependencies
    uuidd: starting
    uuidd: started, pid=2831
    Worker Processes: started dependencies
    Worker Processes: starting

    05.04.2021 16:19:29
    Start
    OK

    05.04.2021 16:20:40
    StartWait
    FAIL: process disp+work Dispatcher not running
    Worker Processes: the start command failed, exit code=2
    The service Worker Processes has failed to start and initialization is blocked until the problem is resolved
    You can try your luck 10 times until initialization is terminated
    Hint: docker containers can be joined by: docker exec -it <name> bash
    Hint: HDB license must not be expired
    Hint: HDB must be running
    Hint: AS ABAP license must be valid
    Hit Return to continue

    Experts, request you to guide me in the right path to nail this down or I am left with no other option to try downloading again all day!

    My laptop is having 16Gigs and It is hitting almost 15G, hope insufficient memory not causing this.

     

    Pavan

  • Hi Pavan,

    I had exactly the same issue as you. My PC has Windows 10 Pro with 16G ram.

    The 1st problem was that the AS ABAP license that comes with the download had expired. Just follow the instructions about renewing the AS ABAP license. You can get the updated trial license (for system A4H) from SAP License Keys for Preview, Evaluation and Developer Versions

    Copy your new license file to your download directory:

    Example C:\Users\yourwindowsusername\Downloads\A4H_Multiple.txt

    Rerun the Docker run command:

    docker run --stop-timeout 3600 -i --name a4h -h vhcala4hci -p 3200:3200 -p 3300:3300 -p 8443:8443 -p 30213:30213 -p 50000:50000 -p 50001:50001 -v C:\Users\yourwindowsusername\Downloads\A4H_Multiple.txt:/opt/sap/ASABAP_license store/saplabs/abaptrial:1909 -skip-limits-check -agree-to-sap-license

    So after running above I no longer get the AS ABAP license expired error, but I still got the disp+work Dispatcher not running. I also noticed that Wmmem had taken just about all available ram memory.

    Since I was planning on increasing my ram, I went out and bought more ram and installed it, bringing my total to 32G. (as usual make sure to get the correct compatible ram when adding more!)

    After rerunning the docker run command it installed successfully!

    I noticed Vmmem went up to about 29.5G and stabilized there, leaving about 2.5G for rest of Windows, but everything seems to be running okay.

    Ivan

    PS Big shout out to Thomas Jung for all the awesome SAP Blogs

     

     

     

  • Hello, I have everything up and running now but I cannot access the Fiori launchpad. Does anyone have a suggestion on how to get this up and running or if there is a tutorial out there that will show the steps to get everything set up properly so that I can start using it. Thanks