Take Your ABAP Skills to the Cloud

Take Your ABAP Skills to the Cloud

Reading time: 18 mins

Meet the Experts

Meet the Authors

At SAP TechEd in the fall of 2017, Björn Goerke, SAP’s Chief Technology Officer, announced that ABAP would become available in SAP Cloud Platform in 2018, and as of September 2018, the new ABAP development and runtime environment — SAP Cloud Platform ABAP environment — is here. SAP Cloud Platform ABAP environment is a completely new environment for SAP Cloud Platform, comparable to SAP Cloud Platform for the Neo, Cloud Foundry, and Kubernetes environments.

Anyone familiar with ABAP knows that it is not just a programming language with a compiler and runtime — it is an integrated environment based on a primary database that contains the ABAP repository and all related ABAP artifacts, such as ABAP classes and the data definitions based on the core data services (CDS) data modeling infrastructure. SAP Cloud Platform ABAP environment not only brings this architectural blueprint — which is currently the foundation of more than 100,000 productive on-premise installations — to the cloud, it also enables you to bring your existing ABAP development expertise and on-premise assets with you, smoothing the transition to the cloud.

Moving your ABAP development and execution environment to SAP Cloud Platform allows you to immediately benefit from the latest features of ABAP and SAP HANA, as well as the innovations available in all existing SAP Cloud Platform services, such as SAP Leonardo with its machine learning, blockchain, and Internet of Things technologies, which enable new scenarios that are not currently possible in the on-premise world. It also allows you to delegate all infrastructure, lifecycle management, and system operations tasks to the development and operations teams at SAP and enables you to scale with your business needs rather than making large upfront investments in hardware and services. In addition, you can take advantage of innovations much faster, since updates are delivered quarterly rather than years apart.

This article prepares SAP customers and partners for this new world by explaining the basic architecture and mechanics of SAP Cloud Platform ABAP environment and, through practical examples, shows you how to use this new environment for ABAP development. It walks through how to set up the development environment, how to use the development tools to create a back-end service, and how to enable the newly created back-end service for consumption by an SAP Fiori application.

The Architecture of SAP Cloud Platform ABAP Environment

Figure 1 provides an architectural overview of SAP Cloud Platform ABAP environment. Administrators (and developers with the appropriate privileges) can launch SAP Cloud Platform cockpit via their SAP Cloud Platform account and create a new ABAP instance — that is, a complete ABAP stack with an underlying SAP HANA database — in the cloud. The cloud-based ABAP system is then up and running and can be accessed by the Eclipse-based ABAP development tools, which are the standard development tools for SAP Cloud Platform ABAP environment.

 

Figure 1 — The overall architecture of SAP Cloud Platform ABAP environment

 

The cloud-based ABAP system is based on the same ABAP kernel used for SAP S/4HANA Cloud 1808. Its primary purpose is to provide a development and runtime environment for SAP Fiori applications that are decoupled from the digital core and optimized for SAP HANA using a RESTful programming model, a services-based approach, and a cloud-optimized ABAP language. While SAP Fiori applications created in the cloud-based ABAP environment are based on the consumption of CDS views that are exposed as services through the OData protocol and presented with corresponding SAP Fiori elements, simple transactions are also supported. The ABAP applications connect to back-end systems through standard protocols such as HTTP and OData. In the initial version of SAP Cloud Platform ABAP environment, these applications can connect to an SAP S/4HANA Cloud back end, and in planned future versions, access to on-premise back ends will be enabled through the Cloud Connector component for SAP Cloud Platform.

It is important to note that with SAP Cloud Platform ABAP environment, SAP Fiori is the only supported user interface (UI) technology — SAP GUI and Web GUI are strictly prohibited, since screen processing is not ideal for the cloud. In addition, unlike in the on-premise ABAP stack, the ABAP development tools do not call any embedded SAP GUI tools in SAP Cloud Platform ABAP environment. All tool access in SAP Cloud Platform ABAP environment is done with the native Eclipse plug-ins available at https://tools.hana.ondemand.com.

SAP Cloud Platform ABAP environment is embedded into the Cloud Foundry environment of SAP Cloud Platform, which allows ABAP applications to use other services of SAP Cloud Platform, such as SAP Leonardo. The traditional change and transport concept is still in place from a logical perspective, meaning that you can develop an ABAP application in one system and then transport it into a test or productive system, for example. However, in contrast to the on-premise world, where transport requests are exported to the central directory of a landscape (typically under /usr/sap/trans) and then imported into the target system, in SAP Cloud Platform ABAP environment, the transport requests are exported in readable format to a Git repository. This enables you, for example, to export the same ABAP artifact in different versions, which is not possible in the traditional on-premise world. With this approach, Git-aware tools that support continuous integration and delivery can benefit from the source representation in Git, making the ABAP world more open to cloud innovations.

So, what does development look like in SAP Cloud Platform ABAP environment? Let’s take a look.

Setting Up the Environment

To give you an idea of how development works in SAP Cloud Platform ABAP environment, we will walk through how to develop an ABAP back-end service for consumption in an SAP Fiori application. Before we start our development work, however, we must set up the development environment by creating an ABAP instance in SAP Cloud Platform and creating a project in the Eclipse IDE.

Create an ABAP Instance with SAP Cloud Platform Cockpit

The first task is for an administrator — or a developer with the appropriate privileges — to create an ABAP instance. The Service Marketplace within SAP Cloud Platform cockpit lists all the available services, including SAP Cloud Platform ABAP environment, which is listed as ABAP System (see Figure 2). Clicking on ABAP System displays a list of already active ABAP instances that you have started in your SAP Cloud Platform account (see Figure 3). You can create a new ABAP system by clicking on New Instance. In the example, we have created the instance TechEd App Center.

 

Figure 2 — The Service Marketplace in SAP Cloud Platform cockpit lists the available services

 

Figure 3 — Selecting the ABAP System service displays a list of already active ABAP instances as well as the option to create a new instance

 

Create an ABAP Cloud Project in Eclipse

Next, we need to create an SAP Cloud Platform ABAP environment development project using the Eclipse IDE. You will find this task fairly easy if you are familiar with using the Eclipse-based ABAP development tools for on-premise ABAP development, since SAP Cloud Platform ABAP environment uses the same set of tools. Cloud development is simply carried out in a new Eclipse project perspective: ABAP Cloud Project.

In the Eclipse IDE, create an ABAP Cloud Project by following the menu path New > Project and selecting the corresponding wizard (see Figure 4). Then configure the system connection to the Cloud Foundry environment for SAP Cloud Platform. First, select a “region” — that is, where your cloud provider runs the data center you want to work with (see Figure 5). (While initially only the Amazon Web Services cloud provider in the Frankfurt region is supported, additional regions and cloud providers will become available in the future.) Then enter the credentials for your SAP Cloud Platform account.

 

Figure 4 — Create an ABAP Cloud Project

Figure 4 — Create an ABAP Cloud Project

 

Figure 5 — Configure the system connection to the Cloud Foundry environment for SAP Cloud Platform

 

Next specify the instance details, including the Cloud Foundry organization and space, and select the ABAP instance to use for the connection from the drop-down list of available instances that were displayed in SAP Cloud Platform cockpit (see Figure 6). For the example, we select the instance TechEd App Center.

 

Figure 6 — Specify the ABAP instance to use for the connection

 

Log in to your ABAP back end — TechEd App Center in the example — using your SAP Cloud Platform credentials (see Figure 7). The system responds with a URL for the ABAP back end, which will be used to identify your back-end connection (see Figure 8).

 

Figure 7 — Log in to the ABAP back end

 

Figure 8 — The configured connection includes a URL for the ABAP back end that will be used to identify your back-end connection

 

You can then name your project (P15_Dev in the example) and add a favorite package to contain your local development objects — for the example, we choose the predefined package ZLOCAL for local development (see Figure 9). Clicking on Finish takes you to the familiar Project Explorer overview in the Eclipse IDE workspace, which now includes your newly created project and the package for local development (see Figure 10). From this point on, your development work will be similar to any other project that uses the Eclipse-based ABAP development tools.

 

Figure 9 — Add a package to contain local development objects

 

Figure 10 — The Project Explorer overview in the Eclipse IDE workspace includes the newly created project and the package for local development

 

When you next log in, you can select your development project by simply logging in to the ABAP back end — just click on the project name in the Eclipse IDE and log in with your credentials — without the need to drill down from the Amazon Web Services data center in Frankfurt.

Using the Development Tools

With the ABAP Cloud Project configured, we’re now ready to start our development work. Here, we’ll create an ABAP back-end service for consumption in an SAP Fiori application using the well-known flight example to demonstrate the steps in the development environment. Before beginning the development tasks, however, it is important to understand that with SAP Cloud Platform ABAP environment, the ABAP language has been optimized for cloud operations, meaning that certain language elements that have been used in on-premise development are no longer allowed.

To help ensure smooth operations in the cloud, the Released Objects node in the Project Explorer navigation tree lists all the whitelisted objects available for development use in SAP Cloud Platform ABAP environment, including APIs, CDS views, and dictionary objects (see Figure 11). This list contains important ABAP classes for the ABAP runtime environment and various dictionary elements. It is important to note that tables are not included as whitelisted objects, which means that an ABAP statement referring to a standard ABAP table will cause a syntax error. You must use a whitelisted API to access any underlying tables. This approach is different from ABAP on premise, where you can access almost any ABAP repository element, even if it was never intended for use in custom code.

 

Figure 11 — The Released Objects node in the Project Explorer navigation tree lists all the whitelisted objects available for development in SAP Cloud Platform ABAP environment

 

With SAP managing the cloud-based environment — and not the customer, as in on-premise deployments — all upgrades, patches, and hotfix collections are applied independently of the customer’s project at predefined maintenance intervals, which are kept as short as possible to provide maximum availability of the cloud environment. For cloud operations, this means that custom code must strictly adhere to the whitelisted objects, which are managed in a compatible way so that the customer can continue with development or production uninterrupted by maintenance. In an on-premise environment, a customer would execute transaction SPAU (Process After Upgrade) to adjust any custom code to the new SAP repository version. In cloud environments, this approach is simply unacceptable.

SAP will extend the whitelist based on customer and partner demand, but to keep ABAP innovation up to speed, not all legacy frameworks can be moved to the cloud. This is similar to Java, where frameworks such as Web Dynpro could not be moved to SAP Cloud Platform and were instead replaced with SAP Fiori and SAPUI5.

With these guidelines in mind, let’s now begin our development work, which starts with creating a package to contain our development objects.

Create an ABAP Package to Contain the Development Objects

First, create an ABAP package in your ABAP Cloud Project (the P15_Dev project in the example) that will contain all the artifacts for the ABAP back-end service. In the Project Explorer navigation tree in the Eclipse IDE workspace, right-click on the ZLOCAL package you added for local development, which will serve as the superpackage for the new package, and select ABAP Package to start the wizard. Name the package Z_MYFLIGHTS, add a description, and specify a package type (see Figure 12).

 

Figure 12 — Define an ABAP package to contain all the artifacts for the ABAP back-end service

 

Create a Database Table to Hold the Data

Next, create a database table by right-clicking on the newly created package (Z_MYFLIGHTS), selecting ABAP Repository Object, and choosing Database Table from the list of Dictionary tools (see Figure 13). Enter a name (ZFLIGHTS) and description for the table (see Figure 14).

 

Figure 13 — Choose the Database Table tool to create the database table

Figure 13 — Choose the Database Table tool to create the database table

 

Figure 14 — Define the database table

 

The ZFLIGHTS table now appears in the Project Explorer navigation tree and is displayed in the table editor within the Eclipse IDE workspace (see Figure 15), which replaces the former ABAP dictionary transaction (SE11). Note that with SAP Cloud Platform ABAP environment, all ABAP artifacts are represented by native Eclipse editors within the workspace.

 

Figure 15 — The ZFLIGHTS table displayed in the table editor within the Eclipse IDE workspace

 

Develop a Console Application to Populate the Database Table

To spool some data into the new ZFLIGHTS database table, we need to develop a console application, which is similar to a traditional ABAP report in the on-premise world. The console application is essentially an ABAP class that performs some actions — in the example, it performs database insert operations — and writes messages to the console.

To create the class, right-click on the ABAP package, select ABAP Class to start the wizard, and then enter a name (Z_LOADFLIGHTS) and description for the class (see Figure 16). The class is now included in the Project Explorer and displayed in the editor within the Eclipse IDE workspace (see Figure 17). The class uses the previously defined table ZFLIGHTS and creates database records from an internal table called it_flights, which is defined by the data declaration statement. Running this class (by pressing F9) inserts data into the ZFLIGHTS table (see Figure 18).

 

Figure 16 — Define an ABAP class for spooling data into the database table

 

Figure 17 — The Z_LOADFLIGHTS class displayed in the editor within the Eclipse IDE workspace

 

Figure 18 — Running the Z_LOADFLIGHTS class inserts data into the ZFLIGHTS table

 

When developing an application in SAP Cloud Platform ABAP environment, keep in mind that statements that violate the previously mentioned whitelist, such as dynamic SQL, will raise a syntax error. When SAP Cloud Platform ABAP environment has more comprehensive runtime checks, some of the dynamic capabilities in ABAP will again be released, but as with the whitelist approach, the philosophy is to start small and extend the cloud capabilities step by step.

Define a CDS View to Retrieve Data from the ABAP Back End

Now that we have a base table for the CDS definition, we can define a CDS view that retrieves data from the ABAP back end (the ABAP instance TechEd App Center specified earlier) — in the example, it selects an LH flight. To create the CDS view, right-click on the ABAP package, select ABAP Repository Object, and choose Data Definition from the list of Core Data Services tools (see Figure 19). Enter a name (ZLHflights) and description for the view. The code for the CDS view is now displayed in the editor within the Eclipse IDE workspace, where the developer can then define the necessary fields and the data from the base table is restricted simply by a corresponding where clause.

 

Figure 19 — Choose the Data Definition tool to create the CDS view

Figure 19 — Choose the Data Definition tool to create the CDS view

 

Figure 20 — Define the CDS view for retrieving data from the ABAP back end

 

Figure 21 — The ZLHflights CDS view displayed in the editor within the Eclipse IDE workspace

Figure 21 — The ZLHflights CDS view displayed in the editor within the Eclipse IDE workspace

 

Create a Service Definition to Expose the CDS View

To expose the CDS view through OData, you must create a service definition — right-click on the ABAP package, select ABAP Repository Object, and then choose Service Definition from the list of Business Services tools (see Figure 22). Enter a name (ZFlightservice) and description (see Figure 23). The code for the service definition is displayed in the editor within the Eclipse IDE workspace, where the developer can specify the services to be exposed (see Figure 24). While the service definition corresponds roughly to the @odata:publish: true annotation well-known in the on-premise world, with SAP Cloud Platform ABAP environment, you need to define the nature of your service more precisely using a service binding.

 

Figure 22 — Choose the Service Definition tool to create a service definition

Figure 22 — Choose the Service Definition tool to create a service definition

 

Figure 23 — Define the service definition for exposing the CDS view

 

Figure 24 — The ZFlightservice service definition displayed in the editor within the Eclipse IDE workspace

Figure 24 — The ZFlightservice service definition displayed in the editor within the Eclipse IDE workspace

 

OData comes in two different versions, which both support application-to-UI communication and application-to-application communication. To enable an application-to-UI communication for the example, we create a service binding based on the version 2 specification by right-clicking on the ABAP package and selecting Service Binding from the list of Business Services tools. Name the binding (ZFLIGHTBINDING), provide a description, and associate the newly created flight service (ZFLIGHTSERVICE), as shown in Figure 25.

 

Figure 25 — Define the service binding to enable application-to-UI communication

 

Next, in the editor pane within the Eclipse IDE workspace, publish the service by clicking on Publish Locally, which populates the fields under Binding Type Information in the editor pane (see Figure 26). The information includes an executable URL that shows the metadata of the OData service. A preview functionality is planned for a future version that will enable you to examine the data provided by the service independent of a concrete UI client.

 

Figure 26 — Publish the service in the editor pane within the Eclipse IDE workspace

 

Create a Communication Scenario to Provide Authentication

The final ABAP development task required to make the service ready for use is to create a communication scenario. Right-click on the ABAP package, select ABAP Repository Object, and choose Communication Scenario from the list of Communication Management tools (see Figure 27). Name the communication scenario (ZFLIGHTCOMM) and provide a description (see Figure 28).

 

Figure 27 — Choose the Communication Scenario tool to create the communication scenario

Figure 27 — Choose the Communication Scenario tool to create the communication scenario

 

Figure 28 — Define the communication scenario for authenticating with the back-end service

 

Next, in the editor pane within the Eclipse IDE workspace, specify the authentication and authorization for the communication scenario in the Inbound Settings on the Inbound tab (see Figure 29). For simplicity, we use basic authentication (that is, user name and password) for the example. The role is assigned automatically. We then add an inbound service for the communication scenario (ZFLIGHTBINDING_IWSG), which is derived from our flight service binding (see Figure 30). The communication scenario can then be published on the Overview tab in the editor pane, which adds the service details to the Inbound Service fields on the Inbound tab (see Figure 31).

 

Figure 29 — Specify the authentication and authorization for the communication scenario

 

Figure 30 — Add an inbound service to the communication scenario

Figure 30 — Add an inbound service to the communication scenario

 

Figure 31 — Publish the communication scenario

 

Enabling Access to the ABAP Back End

With the ABAP development steps complete, there are just two tasks that remain to enable access to the ABAP back end and make the service ready for consumption:

  • An administrator must configure communication with the service
  • The developer must create an SAP Fiori template that consumes the service

It is useful for developers to understand the mechanics of the administrative tasks described here — in particular, because the settings contain information required for creating the SAP Fiori template.

Configure Communication with the Service

To make the service available for consumption, several administrative tasks are required. Instead of using the ABAP development tools, the administrator uses SAP Fiori launchpad, which contains tiles for the administrative tasks (see Figure 32). First, the administrator must configure a communication user that logs on to the ABAP back end (the TechEd App Center ABAP instance) and executes the flight service returning the LH flights. Enter a user name (P15_WEBIDE in the example), a description, and a password (see Figure 33).

 

Figure 32 — The SAP Fiori launchpad for administrative tasks

 

Figure 33 — Configure a communication user to log in to the ABAP back end

 

Next, to handle the inbound and outbound communication, a communication system must be defined — in the example, with WEBIDE_BASIC as the system ID and name (see Figure 34) — that describes the ABAP back end (see Figure 35).

 

Figure 34 — Specify the system ID and name for the communication system

 

Figure 35 — The completed communication system definition

 

Lastly, a communication arrangement is defined, named ZFLIGHTCOMM in the example (see Figure 36), that bundles together the communication user and communication system (see Figure 37). Note that the communication arrangement contains the URL that identifies the service (ZFLIGHTBINDING), which will be used in the SAP Web IDE project when creating the SAP Fiori template to consume the service.

 

Figure 36 — Define the communication arrangement

 

Figure 37 — The completed communication arrangement definition

 

Create an SAP Fiori Template to Consume the Service

The final task is to create an SAP Fiori template that consumes the service using SAP Web IDE, which is an SAP Cloud Platform service for the Neo environment. Remember that SAP Cloud Platform ABAP environment is a service for the Cloud Foundry environment — for this reason, we use the full stack SAP Web IDE that can access Cloud Foundry services, which is accessible via SAP Cloud Platform cockpit.

First, in SAP Cloud Platform cockpit, define a destination that provides access to the ABAP back end. Specify the destination information, including a name (P15_WEBIDE_BASIC in the example), the URL from the communication arrangement definition, and the corresponding communication user defined previously (see Figure 38).

 

Figure 38 — Define the destination that provides access to the ABAP back end

 

Next, select New Project from Template on the start screen of SAP Web IDE (see Figure 39).

 

Figure 39 — To create a new project, select New Project from Template on the SAP Web IDE start screen

 

Name the project — Flights in the example (see Figure 40) — and specify the service URL from the communication arrangement definition that represents the LH flights, which will display the metadata of your service (see Figure 41).

 

Figure 40 — Name the project

 

Figure 41 — Specify the service URL, which will display the metadata of the service in the application

 

Specify the OData collection — the CDS view created earlier, ZLHflights (see Figure 42) — and generate the project.

 

Figure 42 — Specify the CDS view created earlier as the OData collection

 

The components of the finished project are shown in the Project Explorer of SAP Web IDE (see Figure 43). From there, you can launch the application, which retrieves the data and displays it in a list report template (see Figure 44).

 

Figure 43 — The components of the finished project in the Project Explorer of SAP Web IDE

 

Figure 44 — The application retrieves the data and displays it as a list report

 

Summary

SAP Cloud Platform ABAP environment is available as of September 2018 and is priced in two dimensions: ABAP memory and SAP HANA memory. The minimal setup is a 16GB ABAP application server running on a 64GB SAP HANA database, which is €3,000 per month per customer. Customers can choose between subscription billing and pay-per-use billing, similar to other services offered through SAP Cloud Platform.

With SAP Cloud Platform ABAP environment, SAP customers and partners have the opportunity to move their ABAP skills and assets to the cloud. Cloud operation requires stricter compatibility rules compared to on-premise ABAP development, but the benefits are significant and include access to innovative ABAP capabilities on top of SAP HANA. The development tools are fully based on the user-friendly Eclipse IDE, and the development environment can be used to extend SAP S/4HANA Cloud as well as recent on-premise installations of SAP S/4HANA and SAP Business Suite (version 7.0 of SAP NetWeaver and higher), enabling you to use your existing ABAP expertise together with cloud innovation to tap into a new world of opportunity.

More Resources

See All Related Content