9/21/2020 by Michael Management Posted in SAP

There have been major changes in the IT industry, especially with the introduction of RESTful Programming Model e.g. ODATA. These changes all lead to the Micro-service architecture, which it did not make sense to me, as I have been an ABAP developer and this was not relevant to me, I was living in my own ABAP world, there was only ABAP, no other ABAP worlds interested me.

The term made sense to me when I registered into SAP Free Cloud Trial Account, it took me a while to learn all the terms and concepts relevant. JSON has been adopted across the industry, this was a milestone not that I cared as I am an ABAPer, JavaScript or JSON did not mean much to me. JSON gave rise to OData and Restful services, which again was a big change, as each program can expose itself to outside like a database.

The industry started changing: AWS started to dominate the Cloud technology; the cloud started getting more and more important. Additionally, out of all these a new architecture is born aka Micro-service Architecture…

I was an ABAPer and there was a part of me questioning "do I need to know all these?" Well, the answer came soon suddenly, SAP put UI5 out and announced the Fiori and the new way of developing UI interfaces. What? SAP announced all the SAP GUI controls are obsolete for UI including Web Dynpro and UI5 is the new way of doing everything for UI.

I was in a shock, UI5 was another SAP product based on RAP (Restful ABAP Programs). RAP was a huge change and brought a change that no one could comprehend. ABAPers need to learn JavaScript and ODATA, which is completely different, loosely typed, dynamic, and asynchronous.

In the ABAP world, everything is synchronous, meaning you need to wait for each step to go onto the next one. JavaScript on the other hand runs on a single thread and no need to wait for each step to go onto the next one.

This perfectly fits into the web world I must admit. Try yourself and see, it bring lots of pros and cons but it is another beast. Every ABAPer needs to understand what different micro-services make, as that is the future way of software development.


What is Microservice Architecture? 

To look at this question first we look at the evolution of the software architecture and observe the deployment process particularly.

The monolithic architecture was slow hard to maintain and needed to evolve into better, the answer was Object-Oriented Architecture-later  but that did not still solve the problems underlying such as deployment and each time you deploy the software to test or prod you to need to combine all these components back into that huge software block which resembles like the 

Monolithic architecture, compatibility, dependency, etc.

In a microservice architecture, every function of your program can be separated into what's called microservice and be exposed through ODATA (API) and there you go.

Some features of Microservice architecture include:

  • Services in a microservice architecture (MSA) are often processes that communicate over a network to fulfill a goal using technology-agnostic protocols such as HTTP.
  • Services in a microservice architecture are independently deployable.
  • Services are around business capabilities.
  • Services can be implemented using different programming languages, databases, and hardware and software environments, depending on what fits best.
  • Services are small, messaging-enabled, bounded by contexts, autonomously developed, independently deployable, decentralized and built and released with automated processes.
  • You can have a self-running module consumed by any language that you can imagine.

I must emphasize the term any language here, as all modern languages work with ODATA and JSON.

This brought massive change, you can mix and match languages and get the same result.

Some parts of your code can be in JAVA and UI can be in another language.

Let us say you have a Hana database and JAVA at the back end and Node is at the UI or any JavaScript-based framework is possible of course, SAPUI5 is the recommended one.

SAP Cloud Platform is the future whether we like it or not, and I care about it a lot as I like you, my readers, to be ahead of the game.

So how are we going to learn the SAP Cloud Platform? I was expecting you to ask that question! As a developer, I understand concepts by seeing and doing it rather than reading. Maybe I have a short-term memory, like a FIFO queue (First in First out).


Introducing SAP Cloud Trial Platform

Luckily SAP has provided Trial Account and its 30 days (extendible until 90 days), which is a great opportunity for us developers.


SAP provides two Cloud service types: which can be confusing to understand at first. SAP Cloud Foundry is where all the innovations lie and Neo, which is the SAP proprietary tools. A quick note that if you like to develop SAPUI5 apps you will need to go through NEO as the SAP WebIDE is integrated inside the NEO environment, not in the Cloud Foundry.

ABAP service is also included for ABAPers with the latest and the greatest ABAP version, where you can try out the latest ABAP features like for loops and many more.

This means that you can connect to ABAP using your Eclipse and write some ABAP code and it is all free. Reminding that this is a shared account (everyone can see)

Besides, you will be surprised that continuous integration is included as well which is the current trend in the industry.

You need to get some basic understanding of the Cloud terminology as well as space and instance and service marketplace to lookup available services you can use.

Integrating ActiveControl with abapGIT - Integration Administration Guides  - abapGit

Here is the architecture of the SAP Cloud integrated with the backend through the Cloud Connector, and notice the use of AbapGit.

Therefore, you need to have some sort of understanding of git, which is essential as a distributed version control system.

Amazingly there is an open-source project called Abapgit, under Github 


One of the design goals of abapGit is that it should have a “small footprint”. This can mean many things to many people. One thing is it is absolutely the easiest ABAP project to install – EVER! No transports. No multiple steps. No pre-install of other things. No file uploads. No patches or ad-ins are required. Simply copy and paste code into a program on your ABAP development system and activate it.

I strongly encourage you to install it on your backend or try it with the Abapgit plugin available for ADT Tools


Starting SAP Cloud Platform

The first thing to do is to open a free trial of SAP Cloud Platform. Official SAP tutorial Sign up for a free trial account on SAP Cloud Platform is located here: https://developers.sap.com/tutorials/hcp-create-trial-account.html

Briefly, to start your own SAP Cloud Platform:

           1. Open SAP HANA Cloud Platform Trial website: 


           2. Click Register, register your user, receive e-mail, and activate your account.


           3. Login to your account.





Go and register yourself now!

You can get more details on my course on Michael Management website: Using ABAP on SAP Hana Cloud Platform

I hope you enjoy the course and look forward to hearing from you!  

$(document).ready(function(){ $("img").addClass("lazy"); }); !function(t,e,o,i){var r=t(e);t.fn.lazyload=function(o){var i,n=this,a={threshold:0,failure_limit:0,event:"scroll.lazyload",effect:"show",container:e,data_attribute:"original",data_srcset:"srcset",skip_invisible:!1,appear:null,load:null,placeholder:"data:image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs="};function f(){var e=0;n.each(function(){var o=t(this);if(!a.skip_invisible||o.is(":visible"))if(t.abovethetop(this,a)||t.leftofbegin(this,a));else if(t.belowthefold(this,a)||t.rightoffold(this,a)){if(++e>a.failure_limit)return!1}else o.trigger("appear"),e=0})}return o&&(void 0!==o.failurelimit&&(o.failure_limit=o.failurelimit,delete o.failurelimit),void 0!==o.effectspeed&&(o.effect_speed=o.effectspeed,delete o.effectspeed),t.extend(a,o)),i=void 0===a.container||a.container===e?r:t(a.container),0===a.event.indexOf("scroll")&&i.off(a.event).on(a.event,function(){return f()}),this.each(function(){var e=this,o=t(e);e.loaded=!1,void 0!==o.attr("src")&&!1!==o.attr("src")||o.is("img")&&o.attr("src",a.placeholder),o.one("appear",function(){if(!this.loaded){if(a.appear){var i=n.length;a.appear.call(e,i,a)}t("").one("load",function(){var i=o.attr("data-"+a.data_attribute),r=o.attr("data-"+a.data_srcset);i!=o.attr("src")&&(o.hide(),o.is("img")&&(o.attr("src",i),null!=r&&o.attr("srcset",r)),o.is("video")?o.attr("poster",i):o.css("background-image","url('"+i+"')"),o[a.effect](a.effect_speed)),e.loaded=!0;var f=t.grep(n,function(t){return!t.loaded});if(n=t(f),a.load){var l=n.length;a.load.call(e,l,a)}}).attr({src:o.attr("data-"+a.data_attribute),srcset:o.attr("data-"+a.data_srcset)||""})}}),0!==a.event.indexOf("scroll")&&o.off(a.event).on(a.event,function(){e.loaded||o.trigger("appear")})}),r.off("resize.lazyload").bind("resize.lazyload",function(){f()}),/(?:iphone|ipod|ipad).*os 5/gi.test(navigator.appVersion)&&r.on("pageshow",function(e){e.originalEvent&&e.originalEvent.persisted&&n.each(function(){t(this).trigger("appear")})}),t(function(){f()}),this},t.belowthefold=function(o,i){return(void 0===i.container||i.container===e?(e.innerHeight?e.innerHeight:r.height())+r.scrollTop():t(i.container).offset().top+t(i.container).height())<=t(o).offset().top-i.threshold},t.rightoffold=function(o,i){return(void 0===i.container||i.container===e?r.width()+r.scrollLeft():t(i.container).offset().left+t(i.container).width())<=t(o).offset().left-i.threshold},t.abovethetop=function(o,i){return(void 0===i.container||i.container===e?r.scrollTop():t(i.container).offset().top)>=t(o).offset().top+i.threshold+t(o).height()},t.leftofbegin=function(o,i){return(void 0===i.container||i.container===e?r.scrollLeft():t(i.container).offset().left)>=t(o).offset().left+i.threshold+t(o).width()},t.inviewport=function(e,o){return!(t.rightoffold(e,o)||t.leftofbegin(e,o)||t.belowthefold(e,o)||t.abovethetop(e,o))},t.extend(t.expr[":"],{"below-the-fold":function(e){return t.belowthefold(e,{threshold:0})},"above-the-top":function(e){return!t.belowthefold(e,{threshold:0})},"right-of-screen":function(e){return t.rightoffold(e,{threshold:0})},"left-of-screen":function(e){return!t.rightoffold(e,{threshold:0})},"in-viewport":function(e){return t.inviewport(e,{threshold:0})},"above-the-fold":function(e){return!t.belowthefold(e,{threshold:0})},"right-of-fold":function(e){return t.rightoffold(e,{threshold:0})},"left-of-fold":function(e){return!t.rightoffold(e,{threshold:0})}})}(jQuery,window,document); $("img.lazy").lazyload(); console.log(typeof($("img").lazyload) === "function")