Building hana-opensap-cloud-2020 Part 1: Introduction
With the delivery of SAP HANA 2.0 SPS 05 and SAP HANA Cloud this year, we see many new features in both the underlying SAP HANA architecture and in the custom development aspects of SAP HANA native development. We also have a major new release of the SAP Cloud Application Programming Model and the beginnings of a switch over to the SAP Business Application Studio and/or Visual Studio Code as a development tool.
With so much change, it was the perfect time to update some of the HANA native development learning materials. In this blog series I want to pull together all the various learning materials and offer a textual-based walkthrough of some of the core concepts. This will hopefully tie together several pieces (openSAP courses, source samples, videos and tutorials — as well as these blog posts) into one flow for both those developers starting their journey in HANA end-to-end application development and for developers looking to update their existing skill sets.
Where to Start?
The first step is to understand what content is already out there for the SAP HANA native developer and what gaps we had as well. The starting point for most of the new content creation we’ve done recently was to build upon the last openSAP HANA software development course – the hana7 one:
This course was launched in early 2019 and based upon HANA and XSA 2.0 SPS 03 (on premise and/or HANA, express edition). But most of the modern concepts were there in the course – HANA Deployment Infrastructure, micro-service/container-based development, etc. This course even used an early version of the SAP Cloud Application Programming model. For the concepts and architecture view, I still recommend that developers look at the content in this course (plus hana5 && hana6).
But there are source code and exercises that accompany this course as well that haven’t necessarily aged as well depending upon where you are working. If you are working in HANA on premises or HANA, express edition with the SAP Web IDE for SAP HANA and targeting XSA; then these exercises are still valid and should work fine. I even have a large video series that walks through all of these exercises that you can follow along with. Here is the playlist for this 64-video series: SAP HANA Basics for Developers Playlist
And while the core concepts of all the above materials are still valid, we see emerging shifts. Increasingly developers are also targeting deployment in SAP Business Technology Platform. XSA is similar, but not identical, to the Cloud Foundry runtime. But then SAP BTP also has other runtimes – like Kyma (Kubernetes) – in which you can deploy your applications as well. Along with that we have the introduction of SAP HANA Cloud, SAP Business Application Studio, and expansion and evolution of the SAP Cloud Application Programming Model’s role in HANA native development. Therefore, the challenge was that we needed a new set of exercises, source code examples, and videos that can support all the additions to HANA development but still be compatible with HANA on premise and adapt to HANA Cloud and the newest capabilities of SAP Cloud Application Programming Model.
Where to Next?
So, while the conceptual content of the openSAP course and some of the introductory videos from the earlier series are still an excellent starting point for new developers that need to get terminology and architecture down; you might not want to go too deep into the exercises and related content unless you specifically need to target only XSA and SAP Web IDE for SAP HANA. Let’s provide a roadmap of content to study for new and experienced developers both.
Which Flavor of HANA?
First, you must decide where you are going to practice your development. For most people you have the choice of HANA, express edition or HANA Cloud free trial/free tier. HANA, express edition is HANA 2.0 based and matches closest to the on-premise capabilities, including a version that has XSA – an application server architecture close (but not identical) to Cloud Foundry. Your other option is to start with HANA Cloud as part of the SAP Business Technology Platform free trial/free tier. That obviously uses the newer HANA Cloud version of HANA (4.x) and utilizes the SAP BTP runtime(s) for its application server layer.
If you are new to HANA and HANA Development and unsure where to start, then let me suggest that you begin with SAP HANA Cloud free trial. There is almost no barrier to getting started. Nothing to install locally as everything is browser based. And the process is completely free as SAP provides you access to a private HANA server running in the cloud for 12 months. Not just free from a license standpoint, but SAP also pays all the hardware hosting costs as well.
To get your own HANA Cloud trial instance, start here. For a quick overview of getting started on HANA Cloud trial, I’d also suggest this 10-minute video:
In addition, I would suggest beginning with this tutorial: Developer Tutorial: Help Thomas Get Started with SAP HANA. While there are many excellent other tutorials and videos provided by SAP, this would be my suggested entry point for developers. It will also help you onboard the SAP HANA trial if you don’t already have access. It will then take you through some basic development scenarios that also showcase the unique aspects of HANA development. Best of all, it’s the first tutorial we update whenever there are changes/new features since it is the recommended starting point.
Your other option would be HANA, express edition. HANA, express edition is a lighter weight version of HANA (although it’s still an in-memory database so don’t expect it to be tiny on resources) which is free for development and productive use up to 32Gb of Memory. It’s available in two flavors – database server only and database + XS Advanced application server. We also have various installation options – as a virtual machine image, a docker container, or binary installer, which you can choose to deploy on your local development machine or in a cloud infrastructure provider.
HANA, express edition has a higher effort to get started certainly. It requires some level of knowledge of Linux and other administrative tasks. It also will require decent hardware or the cost of running on a cloud providers’ infrastructure. Therefore, the earlier recommendation to consider starting with SAP HANA Cloud trial instead. But HANA, express edition will match closest to HANA on premise. If you need to develop with XSA; HANA, express edition gives you the best compatibility.
Which Programming Model?
The next fork in your journey is going to be what programming model with HANA do you want to explore. Note you aren’t limited to just one path here as we’d encourage you to consider all options depending upon your skill set and business requirements.
One option for programming model is basically to stay with plain SQL. HANA is a highly SQL-standard database and great amount of its advanced functionality can be accessed from SQL or Stored Procedures alone. HANA is also accessible via standard database clients/interfaces – like JDBC, ODBC, .NET CORE, Go, Python, and Node.js. So, one perfectly viable option is to focus on creating your HANA database artifacts and logic using standard SQL – via a SQL Console (HDBSQL command line tool) or a third-party database tool. I personally use SQuirreL SQL Client at times, for instance.
If this learning path sounds of interest to you, then we would highly recommend your next step is to work through this tutorial mission: Use Clients to Query an SAP HANA Database
The other major approach to HANA development would be what we call HANA Native development – but perhaps that name is misleading to developers new to HANA. The idea of this approach is to build full stack applications (database logic, application logic / service enablement / UI) that also leverage the full power of HANA and even some HANA specific concepts. For example, this approach will include database level containerization as well as cloud native development concepts.
For this approach we have the SAP Cloud Application Programming Model. But it also combines concepts from HANA Deployment Infrastructure, HANA Modeling, SQLScript, and Fiori. But don’t be overwhelmed by all those names and acronyms. We will break down the path here for you as well.
First to get the core concepts of SAP Cloud Application Programming Model; we’d recommend starting with the openSAP course Building Applications with SAP Cloud Application Programming Model. It will introduce you to the core concepts, terminology, and architecture of this programming model that drives HANA application development now.
After completing at least some of the conceptual content in this openSAP course, you’ll be well prepared to move to the next step — combing the basics of HANA development which you’ve learned so far with the new power of the SAP Cloud Application Programming Model. And that’s really where we get back around to the new content of this blog series – which we are calling hana-opensap-cloud-2020. But before we dive into that content, there is one final choice I want you to consider.
Which Development Tool?
There are a variety of development tools that have historically been used with SAP HANA. It’s worthwhile to take a few minutes here to detail the history and future path of development tools; so, you can make the best choice for your combination of requirements and preferences.
First, we have the situation we discussed earlier where HANA, via its database clients and SQL interface, can support a variety of third-party databases and development tools. But in these tooling approaches you don’t have access to HANA specific development artifacts (like Calculation Views, Replication Tasks, etc) nor do you necessarily have support for full stack development. But once again, this might fit your needs. If you are unsure, I’d again recommend exploring this tutorial series: Use Clients to Query an SAP HANA Database
Most developers that want to specialize in HANA are going to look to one of the SAP HANA specific development tools. Here we must look at historic tooling, current capabilities and look to the future a little bit.
The first major development tool and the one that most people still highly associate with SAP HANA is the HANA Studio. This is an Eclipse based locally installed IDE which has been available since the earliest days of HANA. However, it’s largely relegated to older HANA functionality now as new development was all but stopped in the HANA 1.0 era. It is restricted to HANA repository and XS Classic based development and isn’t covered by or related to any of the new learning content we will discuss here.
Likewise, there was a first attempt to introduce a browser-based development environment for HANA called the SAP Web-based Development Workbench (although some called it Web IDE for short — that was never its official name). This tool basically aligns with the functionality and limitations of the HANA Studio; so, it’s also not relevant to newer learning content.
Next, we come to the actual SAP Web IDE product. This is the first HANA development tool to support new HANA concepts like HDI (HANA Deployment Infrastructure), XSA or Cloud Foundry based application layer, and to some extent also Fiori and Cloud Application Programming Model. It comes in two “flavors” – SAP Web IDE for SAP HANA which is the on premise and HANA, express edition based version and SAP Web IDE Full-stack which is the SAP Cloud Platform and HANA As A Service and HANA Cloud based version.
This is where things get a little complicated. 😉 SAP Web IDE is still supported and even required for some HANA development scenarios. However, the longer-term story is that SAP is switching to a newer browser-based development environment – the SAP Business Application Studio. Many development scenarios, like Cloud Application Programming Model and Fiori development, are fully available in the SAP Business Application Studio.
However, the HANA development scenario is not yet fully available there. Artifacts like Calculation Views still require the use of the SAP Web IDE to develop them (Note: this was true at the time of this blog post publication in Nov 2020, but that limitation has since been lifted and Calculation Views can now be developed in Business Application Studio). SAP has announced plans to close this gap soon, but at the time I’m writing this we are still in a mixed mode. Furthermore, the Business Application Studio is currently only targeting SAP BTP based development and for HANA on premise and HANA, express edition based development the SAP Web IDE will remain the primary choice for the near term.
So, what development tool should you concentrate on learning if you are new to HANA? Or which should you expect to see used in the learning materials? If you are working with HANA Cloud and SAP Cloud Platform; I think taking a hard look at Business Application Studio makes a lot of sense. It will soon become the primary development tool even for HANA in this scenario. And particularly for full stack development where Cloud Application Programming Model and Fiori both have their best support in the newer Business Application Studio. On the other hand, if you are primarily going to work in HANA on premise or HANA, express edition; you are going to need to be able to work primarily in SAP Web IDE for SAP HANA.
Therefore, when it comes to learning materials, you are going to encounter a mixture of development tools as you work through different content. Personally, as I create new content, I tend to show using the Business Application Studio; but I also test the content and show touch points where you could also do the same in the SAP Web IDE where appropriate. Likewise, I plan to keep my SAP Web IDE based content alive and unedited and instead copy/fork that content and update the copy to SAP Business Application Studio where necessary.
For the content of this learning series (and accompanying content) I’ve used a few different approaches. I did my first development pass on my local laptop using SAP HANA, express edition and SAP Web IDE for SAP HANA (and actually a lot of Visual Studio Code – but I don’t want to confuse anyone with that option just yet). But then when I recorded all the videos, I created the same development objects using HANA Cloud and SAP Business Application Studio. I only switched over to SAP Web IDE Full-stack for one exercise when I was creating Calculation Views. Even that exercise I hope to re-record in the near future once the Calculation View editor is available in the Business Application Studio.
I hope the result is a video and blog series that focuses on the future (HANA Cloud and SAP Business Application Studio) but also uses techniques that with only a few small adjustments can also be used in HANA on premise | HANA, express edition and SAP Web IDE.
Back to hana-opensap-cloud-2020
When I sat down to write this blog post, I originally thought of a paragraph or two on the history and supporting learning materials and then I would jump into the new learning content which is the focus of this blog series. Yet hours later I’m still typing. I hope that people find this expanded guide helpful and I’ve not lost all my readers.
Assuming you feel comfortable with the basics of HANA and understand which HANA environment and development tool you want to focus on using to learn; you should be ready to dive into the hana-open-sap-cloud-2020 learning materials – and there are a lot of them and different ways to consume them.
So first of all, the complete source code of all the exercises, demonstrations, and example applications that make up this learning content is available in a public GitHub repository here: hana-opensap-cloud-2020 GitHub Sample Repository
This is a complete, but large application, with much of the same functionality and concepts as the earlier openSAP courses – hana5 and hana7. Just now we have updated all the examples to be SAP Cloud Application Programming Model centric, to support HANA Cloud, and of course to introduce any other new functionality.
While source code is important to the learning process; I’m sure people also want some additional explanation of the concepts, architecture, and process to produce and deploy this source code. This brings us to the next two prongs of hana-opensap-cloud-2020.
Over the last several months we have produced weekly videos/live premiers that walked through the process of creating the hana-open-sap-cloud-2020 project from scratch. We not only walk step-by-step through the editing (and sometimes debugging when things go wrong) process; but also talk a lot about the concepts behind what we are doing. The complete video series can be accessed from this playlist: Building hana-opensap-cloud-2020 Playlist
Or direct links here:
Building hana-opensap-cloud-2020 Part 1: Project Setup and First DB Build
Building hana-opensap-cloud-2020 Part 2: Designing the Data Model
Building hana-opensap-cloud-2020 Part 3: Master Data
Building hana-opensap-cloud-2020 Part 4: Transactional Tables
Building hana-opensap-cloud-2020 Part 5: Cross Schema Access
Building hana-opensap-cloud-2020 Part 6: Cross Container
Building hana-opensap-cloud-2020 Part 7: Calculation Views
Building hana-opensap-cloud-2020 Part 8: SQLScript
Building hana-opensap-cloud-2020 Part 9: Service Handlers
Building hana-opensap-cloud-2020 Part 10: Service Bootstrapping
Building hana-opensap-cloud-2020 Part 11: Customizing Express
Building hana-opensap-cloud-2020 Part 12: Swagger UI
Building hana-opensap-cloud-2020 Part 13: Complex Response Bodies and Web Sockets
Building hana-opensap-cloud-2020 Part 14: UI Annotations
Building hana-opensap-cloud-2020 Part 15: Media Streaming and Fiori
But I also know that not everyone wants to learn by watching videos. Some people (myself included) prefer reading. And that brings us directly to this blog series. This is the first in the series in which I will also walk through the re-creation of the hana-open-sap-cloud-2020 project in written format. Not so much the step by step as that would be more of a tutorial. Instead, I will use these blog posts to discuss the architecture and concepts that support these videos.
As this blog series builds out, I will continue to return here to this post to keep a sort of Table of Contents linking to all parts. This is my rough outline and subject to change:
Building hana-opensap-cloud-2020 Part 1: Introduction — You are here
Building hana-opensap-cloud-2020 Part 2: Project Setup and First DB Build
So often I get the question: I’m new to HANA (or want to update my skills); but there is so much out there, I’m not sure where to start. I hope that this blog post serves as bit of map to those people and offers opinions on how and where to start. The path isn’t a straight line because we all must deal with different versions and deployment options as well as different use cases. No one learning path is going to be perfect for all developers. But hopefully I’ve at least given you some thoughts and jumping off points to begin your own journey.
I was exactly in this position: “I want to update my skills; but there is so much out there, I’m not sure where to start.”…. your blog post has given me a clear path to follow. Thanks Thomas Jung!
Thomas Jung Thank you very much for this very important information. As a newbie in HANA development, this comes at the right moment as I was almost getting lost trying the HANA XSA model on HANA Express edition, CAP, and SAP Business Application Studio without knowing what the future holds. This information makes it more clear. One question though, what is the future of the HANA XSA model? Is there going to be any long term support for on-premise HANA development?
I'm not part of the HANA development organization any longer so I can't really speak to the specifics of roadmap. However support never goes away over night and almost always not without having a replacement functionality. Nothing that replaces XSA on premise has been announced or shown. And really XSA model isn't exactly replaced by CAP, right. The whole concept of the MTA is used in XSA model, CF on SCP, and in CAP. In fact you can do CAP development and deploy it to XSA (just like you can also deploy it to CF and Kyma). So while I think the XSA runtime for on premise is still a pretty solid foundation, I do think its wise to begin to learn CAP instead of XSODATA or HDBCDS. But once you get into the details of CAP, I think you will see its much more of a gentle evolution and nothing like the hard break between XS Classic and XS Advanced.
Thanks Thomas for the detailed blog, one question on the source code/version control in Web IDE full stack accessing HANA cloud as a database. if we don't have a gitlab/github license in our organization, is there alternative like any service available in SAP cloud platform on CF environment which can be used for version control?
Web IDE and Business Application Studio both work with any standard Git repository. It doesn't have to be GitHub. SAP Cloud Platform Neo had a host Git repository service: https://help.sap.com/doc/ab96a61a856e42b8843635d136113c14/Cloud/en-US/git_service.pdf
However I don't think I've seen a similar service offered as part of SCP Multi-Cloud.
Thanks Thomas, Let us say, if we are migrating from HANA on Neo to HANA cloud on CF. For the developments, we are still going to use web IDE full stack Since Business Application Studio does not have CV modeling tools. I believe Web IDE full stack is available on SCP CF, but you said that, Git service or similar service is not available on Cloud Foundry environment. Then What option we will have for version control after migrating to SCP CF?
Migrating to SCP CF doesn't mean that you can't still use some services from Neo. However things that are only in Neo and not brought forward to Multi-Cloud probably don't have a great future. Expect maintenance but not necessarily new features. And eventually you probably want to find a non-Neo based solution. I'd consider looking at one of the major players in Git hosting such as GitHub. That's what we use at SAP.
Thanks Thomas for taking the trouble to put this together. You really should be commended for the clarity of your writing. Thanks also for your efforts in creating the new content so that everything's right up to date.
I've just used HANA Cloud for the first time on a project and I think it will be a game changer in terms of broadening the opportunity to use HANA development in the wild.