Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
thomas_jung
Developer Advocate
Developer Advocate
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 se38 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 – Documen... and Using multi model capabilities of SAP HANA in the new ABAP 1909 Developer Edition – Part II – Spatia...
44 Comments
rsletta
Contributor
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.
Mumali
Participant
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.
jakub_filak
Participant
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.
thomas_jung
Developer Advocate
Developer Advocate
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.
jorapoga
Participant
0 Kudos
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?
bztoy
Participant
0 Kudos
Thank you so much for this great informative stuff. I'm one who really enjoy with WSL2 on my Windows machine.
thomas_jung
Developer Advocate
Developer Advocate
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.
Former Member
also including running remotely on any of 'your rented virtual machines'.
Former Member
0 Kudos
does 'ctrl-c' really shut down the server? it's like pulling a plug to the whole system, if so.
jorapoga
Participant
0 Kudos
Thank you, Thomas!
pawelwiejkut
Active Participant
0 Kudos
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 😄
jakub_filak
Participant
Yes, it does. It gracefull stops all SAP services - Worker Process, Message server, and HDB - and the exits the container.
Former Member
0 Kudos
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.
albanleong
Contributor
0 Kudos
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...

jakub_filak
Participant
Sorry, we are in command-line environment and Ctrl-C is standard -> https://en.wikipedia.org/wiki/Control-C
Former Member
0 Kudos
no complaints, but maybe just a warning to those who switch between Windows sessions.
julieplummer20
Product and Topic Expert
Product and Topic Expert
0 Kudos
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.
aboschin
Explorer
0 Kudos
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
thomas_jung
Developer Advocate
Developer Advocate
0 Kudos
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.
aboschin
Explorer
0 Kudos
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.

 

 
thomas_jung
Developer Advocate
Developer Advocate
0 Kudos
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?
zdenekp
Explorer
0 Kudos
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!
thomas_jung
Developer Advocate
Developer Advocate
0 Kudos
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.
zdenekp
Explorer
0 Kudos
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?
zdenekp
Explorer
0 Kudos
BTW - I found a good step-by-step here: http://blog.maruskin.eu/
Former Member
0 Kudos
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
ShailajaAinala
Explorer
0 Kudos
Its so huge.
bharatbajaj
Active Participant
0 Kudos
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
thomas_jung
Developer Advocate
Developer Advocate
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.
bharatbajaj
Active Participant
0 Kudos
Thanks Thomas,

 

Appreciate your help and suggestions.

Will follow these links to learn more about them.

 

Br,

Bharat
Mumali
Participant
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.
zdenekp
Explorer
Closing the loop: the issue was the WIN10 machine running docker needed local network discovery turned on. Everything works fine now!
Former Member
0 Kudos
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
Former Member
0 Kudos
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.
bharatbajaj
Active Participant
0 Kudos

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.

 

former_member590660
Discoverer
0 Kudos
Thanks Thomas for nice blog.

How do I connect local HDB to Web IDE trial version for UI5 development?

Thanks, Satyaki
thomas_jung
Developer Advocate
Developer Advocate
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.
former_member590660
Discoverer
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
aboschin
Explorer
0 Kudos
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
0 Kudos
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
Ivan_Sing
Newcomer
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

 

 

 
timmcardle
Explorer
0 Kudos

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!🙂 

aboschin
Explorer
0 Kudos
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
robert_bauer
Explorer
0 Kudos

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.