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 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 Utilization
Likewise the dynamic resource allocation has no problem putting load across all of my CPU cores either:
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 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 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 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 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 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
Great blog post Thomas. Thanks for breaking it down. I support your recommendation, to look into WSL2 if working in Windows. That has really transformed the Windows developer experience in my opinion. For anyone wondering where to start, Scott Hanselman has a great video on the topic, Developing on Windows with WSL2 (Subsystem for Linux), VS Code, Docker, and the Terminal.
Thank you for the great piece Thomas Jung ! I have used wsl2 and it is perfectly working. Another advantage of using WSL2 is the lack of complex networking besides exposing the ports.
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.
I know it shuts it down gracefully, but as I said in the blog post I prefer to do that part manually and see for myself it’s shutting down. Personal preference but also just good to know how to do things manually when you need to.
does 'ctrl-c' really shut down the server? it's like pulling a plug to the whole system, if so.
Yes, it does. It gracefull stops all SAP services - Worker Process, Message server, and HDB - and the exits the container.
so, at its root, it's a toggle between:
ctrl+c (ouch! i just wanted to copy&paste something) and wait for Good bye!
&
docker start -ai a4h and wait for *** Have fun! ***
With 'wait for' duration depending on how much memory and storage i have invested in.
Very nice!
P.S. now, i just need to figure out the WebIDE component.
Sorry, we are in command-line environment and Ctrl-C is standard -> https://en.wikipedia.org/wiki/Control-C
no complaints, but maybe just a warning to those who switch between Windows sessions.
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?
Yes all of that is true. SAP BTP Trial contains the ABAP (Steampunk) runtime and it is constantly updated to the latest capabilities. This ABAP developer edition by contrast is version 1909 of the on premise ABAP (which powers S/4 HANA). But the biggest difference is that this ABAP developer edition is downloaded and runs locally on your own machine.
also including running remotely on any of 'your rented virtual machines'.
Thank you, Thomas!
Thank you so much for this great informative stuff. I'm one who really enjoy with WSL2 on my Windows machine.
Thank so much you for this one line to run this. I saved my time thanks to this, and everything just works like a harm 😀
Thanks Julie Plummer and Thomas Jung for this great release and this blog post! Looking forward to get some great learning out of this!
PS: You were NOT kidding when you said Docker WSL2 will give all your available memory to it...
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.
Thanks, I am using WSL2 as the engine and get the pull getting stuck issue.
I use windows powershell ( as admin ) to run the pull command.
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?
BTW - I found a good step-by-step here: http://blog.maruskin.eu/
Closing the loop: the issue was the WIN10 machine running docker needed local network discovery turned on. Everything works fine now!
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.
I mean this is too much just for some one who wants to use the language and not the entire circus... like java sdk and j2ee same here anyways
Its so huge.
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
I can pass that suggestion onto the team that owns the developer edition.
But if you just want to host the Docker Image in the cloud as opposed to local hardware (due to the size); all the major hyperscalers have such capabilities. You don't need CAL just to run the image in the Cloud. Docker already provides excellent portability in this regard.
Docker basics for Amazon ECS - Amazon Elastic Container Service
Deploying containers on VMs and MIGs | Compute Engine Documentation (google.com)
Docker Deployment on Azure | Microsoft Azure
I'd also make the case that as a developer you shouldn't ignore the Docker, VM or Container skillset. This is valuable stuff to learn and know in general.
Thanks Thomas,
Appreciate your help and suggestions.
Will follow these links to learn more about them.
Br,
Bharat
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.
Thanks Thomas for nice blog.
How do I connect local HDB to Web IDE trial version for UI5 development?
Thanks, Satyaki
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
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
Hi Anthony, You'll need to activate several web services through Transaction SICF.
https://help.sap.com/saphelp_ssb/helpdata/en/d7/383953fcabff4fe10000000a44176d/frameset.htm
Finally, the launchpad should be accessible with an URL like this:
http://vhcala4hci:50000/sap/bc/ui5_ui5/ui2/ushell/shells/abap/FioriLaunchpad.html#Shell-home
Possibly, You'll need to open port 50000 in the firewall.
Hope this helps & best,Robert.