by Karl Kessler, Vice President of Product Management ABAP Platform, SAP
COVID-19 has had a major impact on people’s day-to-day lives on both a personal and professional level, with new limitations and risks to consider at every turn. It is also changing the way organizations — including SAP customers — view their existing solution landscapes and working environments, with a renewed focus on digitizing their operations and moving to the cloud.
A fully digital approach enables not only efficiency, but also resiliency and stability during disruptive times. Cloud-based solutions allow businesses to continue running at any time and from anywhere, and cloud-delivered software updates continuously add new features and improvements to help organizations run better. With SAP Cloud Platform ABAP environment, these capabilities extend to the application development and runtime environment for SAP software. Using this environment, the development team at SAP has continued its work remotely during the COVID-19 crisis, enabling the quarterly update cycle to continue uninterrupted for the rest of 2020, with a full slate of new features scheduled to roll out as planned.
SAP Cloud Platform ABAP environment, introduced in September 2018, is an opportunity for organizations to move their digital strategy forward with confidence in their own environment and in SAP and to build resilience for their business. To help prepare developers (who aim to quickly design innovative applications) and development project managers (who want to build an innovation roadmap for their planned projects), this article updates a previous SAPinsider article by introducing features delivered with the latest release of SAP Cloud Platform ABAP environment, version 2005. It first provides an overview of the major new features, and then, using an example, it takes a deep dive into one of the new integration features, which enables a simplified approach for connecting on-premise back-end systems with the cloud-based ABAP environment. It also looks more closely at a key new infrastructure feature — flexible sizing options for supporting the cloud-based ABAP environment — and provides a roadmap for the rest of 2020 by outlining the features planned for delivery with versions 2008 and 2011.
Major New Features Delivered with Version 2005
Version 2005 of SAP Cloud Platform ABAP environment delivers several major new features, which were introduced in May 2020 at DSAG’s ABAP Development Days event (this event took place virtually, as will all SAP developer events in 2020, including SAP TechEd). Figure 1 provides a summary of these key new features for the ABAP language and development tools, integration and security, reuse services, lifecycle management, and infrastructure. Let’s take a closer look.
|ABAP language and development tools||• A quick fix for the Eclipse-based ABAP development tools that enables the adjustment of database tables after incompatible field changes|
|Integration and security||• Support for a SOAP client (expanded SOAP support is planned for future releases)
• ABAP development tools editor for business role templates
• Ability to restrict the developer role by activity
|Released reuse services||• Integration of SAP Cloud Platform Workflow
• XCO library of APIs for generating development objects
|Lifecycle management||• Service enablement of ABAP test cockpit check execution to support continuous integration and continuous deployment|
|Infrastructure||• Support for additional sizing options for SAP HANA memory and for ABAP application server memory)
• Support for an Amazon Web Services data center in Tokyo
Figure 1 — Major new features delivered with version 2005 of SAP Cloud Platform ABAP environment
For development tools, a quick fix has been added to the Eclipse-based ABAP development tools, which are the standard development tools for SAP Cloud Platform ABAP environment. This quick fix supports the adjustment of database tables when incompatible field changes have been made. With this new feature, you can change the table structure and potentially start the data conversion process. This feature was missing in previous versions.
In the integration space, version 2005 adds support for additional communication protocols such as SOAP, the widely used, service-oriented Simple Object Access Protocol. While SOAP has been replaced by modern protocols such as REpresentational State Transfer (REST) and Open Data (OData), many legacy SOAP services remain in use, and these must also be integrated until organizations transition away from them. We will look at this in more detail in the next section of this article, when we walk through the setup and programming tasks required to build outbound communication scenarios based on OData and SOAP using service consumption models.
In the area of security, there are new identity and access management features. A new form-based editor is included with the ABAP development tools that helps with the design of business role templates to support user management. Previously, these templates were created in SAP Fiori launchpad. Since other identity and access management artifacts, such as the business catalog, can be maintained in the ABAP development tools, the new role template editor fills the gap to create an end-to-end developer experience. Another addition in this feature area is the ability to restrict the developer role, which is a powerful role, by drilling down to the activity level and specifying the
specific types of development that are permitted.
The enablement of reuse services is an important area — the on-premise ABAP stack is very rich, and reusing services can save a lot of time during the design process while increasing the quality and user experience. Along these lines, version 2005 integrates SAP Cloud Platform Workflow as a reuse service into SAP Cloud Platform ABAP environment, meaning developers can programmatically trigger the execution of a workflow via an application programming interface (API) call directly in a cloud application, which was not previously supported. Another addition in this feature area is an extension components (XCO) library, which provides a hierarchy of class-based APIs that help with the programmatic generation of development objects. Developers can use the XCO library to quickly build a skeleton from scratch for the ABAP RESTful programming (RAP) model, which is helpful when preparing the content for a training course, where artifacts need to be pre-generated. Generic tool-driven applications, such as business configuration tools, also make heavy use of the XCO library.
In the area of lifecycle management, version 2005 takes the first steps toward enabling continuous integration/continuous deployment scenarios. ABAP test cockpit is now service enabled for automated check execution, which means that developers can build a Jenkins pipeline that executes checks after a certain lifecycle event, such as the import of a development project. This helps automate lifecycle and testing tasks during development and increases the overall quality of software assets. Meanwhile, new infrastructure features delivered with version 2005 include an Amazon Web Services data center in Tokyo to support the Asia-Pacific market, and the long-awaited flexible sizing options for SAP HANA and the ABAP application server runtime, which we will look at in more detail later in the article.
While most of these features are straightforward in nature and are well documented in the release notes, two of them — the added support for SOAP communications and the new flexible sizing capabilities — require additional examination and demonstration to help developers quickly get started with them. We’ll take a closer look at these two features next.
Integration with Back-End Systems via SOAP
A side-by-side development and runtime environment such as SAP Cloud Platform ABAP environment — where the platform-as-a-service environment runs alongside core business systems — enables developers to build enterprise extensions to business back-end systems, such as SAP S/4HANA Cloud and on-premise systems, using the cloud-based development environment.
A previous article demonstrated how to connect with back-end systems from SAP Cloud Platform ABAP environment via a remote function call (RFC) function module or an HTTP service, which is a very code-driven task. This article looks at how to enable this integration with an artifact called the service consumption model. The service consumption model enables communication based on OData and, as of version 2005, SOAP client calls. This approach offers a higher abstraction level compared to plain HTTP or RFC and better interfaces with the RAP model.
To illustrate the steps involved in enabling this type of communication, we will use the service consumption model approach to create a connection between a simple cloud-based SAP Fiori inventory application, built in SAP Cloud Platform ABAP environment using the RAP model, and an on-premise SAP Gateway system. This connection will use OData and SOAP client calls to fetch product master data from the SAP Gateway system into the inventory application (Figure 2). (Note that while we are connecting to an SAP Gateway system in this example, the same approach applies for connecting to SAP S/4HANA, with the addition of a cloud connector setup.)
Figure 2 — The example SAP Fiori-based inventory application
Create a Service Consumption Model for the OData Call
First, create a service consumption model to wrap the OData client call and its required parameter types. To create the service consumption model, go to the Project Explorer in the Eclipse workspace provided with the ABAP development tools. Add the model as a business service to the ABAP package (ZRAP_INVENTORY_M_KK01 in the example) defined for the integration project (TRL_EN) by right clicking on the Business Services folder and selecting New > Service Consumption Model (Figure 3). (See a previous article for more details on the initial steps involved in creating a development project in SAP Cloud Platform ABAP environment). In the wizard-based definition tool, provide a name (ZRAP_SC_PRODUCTS_KK01) and description (Product OData service) for the new service consumption model (Figure 4).
Figure 3 — Create a new service consumption model for the OData client call
Figure 4 — Provide a name and description for the OData client call service consumption model
Next, obtain a service definition in XML format, which specifies the data that will be exposed from the back-end system to the inventory application, and is required for any OData service. The service definition can be obtained from a service provider, such as an SAP Gateway system or an SAP S/4HANA system, or it can be obtained from a public services inventory, such as SAP API Business Hub, which lists all published APIs, but does not include customer or partner APIs (Figure 5). Add the service definition metadata file in XML format (ZPCDSmetadata.xml) to the service consumption model (Figure 6).
Figure 5 — Obtain a service definition in XML format for the OData client call
Figure 6 — Add the service definition to the service consumption model for the OData client call
Specify the entity sets to be included with the generation of the service consumption model — in the inventory application example, SEPMRA_I_Product_E, which is the set of products in the back-end system (Figure 7). The wizard tool then generates an abstract entity, ZSEPMRA_I_PRODUCT_E_KK01 (Figure 8), which is used to describe the structure of the result view, and a business service definition, ZRAP_SC_PRODUCTS_KK01 (Figure 9), which has the same name as the service consumption model and is used for exposing the entity set in the view.
Figure 7 — Specify the entity set to include in the generation of the service consumption model
Figure 8 — The wizard tool generates the abstract entity
Figure 9 — The wizard tool generates the business service definition
The result screen of the service consumption model shows an automatically generated code template that can read the entity set (Figure 10). Embed this template in a simple ABAP console class (Figure 11), which will produce the console output and list all the products available from the back-end SAP Gateway system.
Figure 10 — The wizard tool generates code templates to read the entity set
Figure 11 — Embed the code template into a simple ABAP console class to list the data from the back-end system
Create and Expose a Custom Entity for the Service Consumption Model
To use the newly created service consumption model in the RAP-based inventory application, create a custom entity (ZRAP_CE_PRODUCTS_KK) with a custom query implementation, ZRAP_CL_CQ_PRODUCTS_KK01 (Figure 12). The custom query implementation is an ABAP class containing the OData client call that returns the result as a custom entity. To support the ABAP interface IF_RAP_QUERY_PROVIDER, the implementation of the class must supply an implementation of the SELECT method if_rap_query_provider~select (Figure 13).
Figure 12 — The custom entity with a custom query implementation
Figure 13 — The custom query implementation class
With the implementation of the custom entity complete, expose it in the service definition (Figure 14), so that the inventory application can display the data. In the core data service that represents the inventory application (ZRAP_C_INVENTORY_KK01 in the example), add a value help definition for the products, which will enable the use of selection criteria for product searches (Figure 15). The service binding for the inventory application (Figure 16) shows the exposed service definition, ZRAP_UI_INVENTORY_M_KK01, ready for testing. (See a previous article for details on creating a service binding.)
Figure 14 — Expose the custom entity in the service definition
Figure 15 — Add a value help definition for the products
Figure 16 — The service binding for the application
Clicking on the Inventory item, which is displayed in the entity set information included in the service binding details, starts the inventory application (Figure 17) and shows its various fields, such as ProductId, Quantity, and QuantityInWords, with a small icon in the ProductId field, which is the value help option defined in the core data service for the inventory application. Clicking on this icon launches a search dialog, where searches can be performed for products based on selection criteria, with the search results listed in the lower part of the screen (Figure 18). Selecting an item from the search results will transfer the selection to the inventory form — in the example, the selection is product ID HT-1052 (Figure 19).
Figure 17 — The inventory application
Figure 18 — Searches can be performed based on selection criteria
Figure 19 — The selected search result in the inventory form
Integrate a SOAP Client Call
Next, integrate a SOAP client call with a number conversion SOAP service, which is defined using Web Service Definition Language (WSDL). This service is a publicly available service that converts numbers into a string (Figure 20), which can be helpful when preparing legal documents. In the case of the example, we will use the service to demonstrate fetching data from the back-end system, performing an operation on it, and displaying the result in the inventory application.
Figure 20 — The number conversion SOAP service converts numbers into a string
As with the OData client call, create a service consumption model — ZRAP_SC_NUMTOWORD_KK01 in the example (Figure 21) — to wrap the SOAP client call and add the WSDL file, numberconversion.xml (Figure 22). The service consumption model automatically generates the associated structures and SOAP message types (Figure 23).
Figure 21 — Create a service consumption model for the SOAP client call
Figure 22 — Add the number conversion WSDL file
Figure 23 — The service consumption model for the SOAP client call generates the associated structures and SOAP message types
Similar to the OData service consumption model, the service consumption model for the SOAP client call provides code templates (Figure 24). Using these templates, a developer can create a simple SOAP test class, ZRAP_CL_TEST_SOAP_CALL_KK01 (Figure 25), and then execute the SOAP service to test it (Figure 26). The result of converting 23465505 is shown in the console, which shows the number in text form rather than numerals.
Figure 24 — The service consumption model provides code templates for the number conversion
Figure 25 — Embed the code template into a SOAP test class to perform the number conversion
Figure 26 — The number conversion results
Next, change the behavior definition for the inventory application and add a determination method called fillQuantityInWords for the field QuantityInWords (Figure 27).
Figure 27 — Add the determination method to the behavior definition for the inventory application
In the FILL_QUANTITY_WITH_WORDS behavior implementation (Figure 28), fetch the Quantity number from the back-end system using the entity manipulation language (EML) statements READ ENTITIES and MODIFY ENTITIES, instantiate the SOAP call to perform the number conversion (get_number_in_words), and update the result screen (ls_inventory_update). Finally, rerun the application, which now displays the numbers in the Quantity field in text form in the QuantityInWords field (Figure 29).
Figure 28 — The behavior implementation for the determination method
Figure 29 — The numbers display in text form in the QuantityInWords field
Flexible Sizing Options
When SAP Cloud Platform ABAP environment was introduced, only one standard service plan was available to support the ABAP runtime and ABAP persistence (the underlying SAP HANA database): customers could subscribe to a 16GB ABAP runtime on a 64GB SAP HANA database. While this approach was well suited to typically sized development projects, production workloads for larger projects demonstrated a need for more.
Fortunately, the design of SAP Cloud Platform ABAP environment allows for the ABAP runtime and SAP HANA memory to be increased independent of one another to support more concurrent users and sessions and to support more transactional load, respectively. Version 2005 makes this design a reality for SAP customers by introducing a new standard service plan that allows them to freely combine, in 16GB blocks, 16GB, 32GB, 64GB, 96GB, and 128GB for the ABAP runtime with 64GB, 128GB, and 256GB for the ABAP persistence (SAP HANA).
To illustrate how this works, let’s look at an example. An overview of the usage data and statistics for services used by an SAP Cloud Platform account (in the example, a standard global developer account called ABAP Product Management) can be displayed in SAP Cloud Platform cockpit (Figure 30). This information includes details about the ABAP service plans associated with this account — the old standard plan (the fixed 16GB runtime, 64GB persistence configuration) and the new standard plan (the flexible configuration).
Figure 30 — An overview of the service usage and data statistics for a developer global account
Figure 31 shows details about the service assignments for the example global account, the plans available for those services, and the remaining quota available for each (measured in 16GB blocks). The plans available for the ABAP System service are the fixed 16_abap_64_db configuration of the old standard plan, which is the minimum required configuration, and the new standard plan consisting of abap_compute_unit (the ABAP runtime) and hana_compute_unit (SAP HANA), which can be used to separately increase the runtime and persistence in 16GB blocks. In the example, there is runtime and persistence quota left to create a new ABAP cloud instance for ABAP development.
Figure 31 — Details of the service assignments for a developer global account
To assign runtime and persistence quota to a new ABAP cloud instance, navigate to the developer space in SAP Cloud Platform cockpit, go to the Service Marketplace, and select the ABAP System service, which launches a wizard tool for creating a new instance of the service for the ABAP development project. Choose the standard service plan and then the sizing parameters (Figure 34) — in the example, 32GB (2 blocks of 16GB) for the ABAP runtime and 128GB (8 blocks of 16GB) for SAP HANA persistence. After completing the setup, a new ABAP cloud instance is created, and ABAP cloud development can begin.
Figure 32 — The Service Marketplace in the developer space
Figure 33 — Select the standard service plan for the development project instance
Figure 34 — Specify the parameters for the new instance
Outlook and Roadmap
So, what’s in store for upcoming releases of SAP Cloud Platform ABAP environment? Let’s look at some of the features planned for versions 2008 and 2011.
In version 2008 (see Figure 35), due for release in August 2020, additions to the RAP model include adding draft support using universal unique identifiers (UUIDs) in behavior definitions. Draft functionality allows developers to store intermediate versions of their business objects in the database before they are activated in the original tables, which helps create RESTful stateless applications that better scale in a cloud environment. Version 2008 will also introduce SAP Business Application Studio to support development with the RAP model. This development environment offers the ABAP back end as an alternative deployment option to Cloud Foundry for user interfaces, which significantly simplifies the deployment process.
|ABAP RESTful programming model||• Draft support for UUID-based behavior definitions
• SAP Business Application Studio for user interface development
• ABAP as an alternative deployment option for user interfaces
|ABAP language and development tools||• ABAP development tool editors for BAdI definitions and implementations
• SAP Fiori application for ABAP test cockpit configuration (default variant and check priorities)
|Integration and security||• Principal propagation for HTTP and RFC with cloud connector
• Inbound RFC for customer scenarios
• Inbound HTTP troubleshooting
|Released reuse services||• XCO library of APIs for handling data types and JSON formats
• SAP Fiori application to maintain number range intervals
Figure 35 — New features planned for SAP Cloud Platform ABAP environment version 2008
In the area of development tools, version 2008 includes editor tools for creating business add-in (BAdI) definitions and implementations, which will allow developers to define and implement extension points in a consistent and upgrade-safe way. In addition, a new SAP Fiori application for ABAP test cockpit configuration will replace the well-known on-premise SATC transaction, and will significantly ease the customization of the ABAP test cockpit.
Version 2008 includes several new capabilities for integration, such as principal propagation with the cloud connector via HTTP or RFC. While previously only technical users could be used for the connection, an upcoming hotfix and infrastructure update planned for 2008 will enable the use of business users as well, creating an end-to-end extension scenario for principal propagation. Another new integration feature is the addition of inbound RFC to enable other applications to call function modules inside SAP Cloud Platform ABAP environment. Version 2008 also delivers inbound HTTP troubleshooting to monitor incoming HTTP requests.
The plans for version 2011 (see Figure 36), due for release in November 2020, include two additions to the RAP model: the long-awaited implementation of support for OData v4.0, which will allow customers to benefit from its significant performance improvements, and late numbering for managed business objects, which enables key determination in the last phase of the update before the transaction is committed to the database.
|ABAP RESTful programming model||• Support for OData v4.0
• Late numbering for managed business objects
|ABAP language and development tools||• SAP Fiori application for maintaining translations
• Custom-defined ABAP test cockpit variants
• Custom-developed ABAP test cockpit checks
|Integration and security||• Generation of RFC proxy classes|
|Released reuse services||• Integration of SAP Cloud Platform Forms by Adob
• SAP Fiori reuse components for the application log
• SAP Fiori reuse components for change documents
|Partner development||• Multitenancy based on the client field
• SAP Fiori “landscape portal” application
• Add-on technology and ABAP OEM service for scalable deployment of partner solutions
Figure 36 — New features planned for SAP Cloud Platform ABAP environment version 2011
In the development tools area, an SAP Fiori application for maintaining translations is planned to help translate ABAP text displayed to end users. Customers will also be able to define their own highly sophisticated variants and checks in the ABAP test cockpit. When it comes to integration and security, version 2011 will enable the generation of RFC proxy classes that are type safe and easy to use compared to the previous RFC interface, which is essentially writing plain code and handcrafting parameters with their types, which can be error prone.
Version 2011 will also include the integration of SAP Cloud Platform Forms by Adobe into the reuse services available for ABAP, which means that this service can be invoked programmatically, enabling form processing similar to the on-premise context. SAP Fiori reuse components for the application log and change documents will also be added.
SAP is also investing in partner enablement with version 2011. Multitenancy, based on the standard ABAP client field, will be added to enable partners to run several customers in parallel in one system, which will allow partners to scale and optimize workloads. In addition, an SAP Fiori “landscape portal” application will show the status of partner add-ons and allow partners to perform tasks such as creating new tenants for customers. And add-ons developed by partners will be automatically deployable into the customer’s tenant via an ABAP original equipment manufacturer (OEM) service.
Version 2005 of SAP Cloud Platform ABAP environment delivers features that continue to add depth and breadth to the ABAP development experience in the cloud. Looking ahead, the remaining updates for SAP Cloud Platform ABAP environment in 2020 are filled with new enhancements and are on target for on-time delivery, despite the disruption caused by the COVID-19 pandemic. With the growing maturity of SAP Cloud Platform ABAP environment, and the robustness and stability of its continued development, SAP customers can start moving their ABAP development to the cloud with confidence. Learn more at the SAP Cloud Platform ABAP environment community page.
Karl Kessler (email@example.com) joined SAP SE in 1992. He is the Vice President of Product Management ABAP Platform — which includes SAP NetWeaver Application Server, the ABAP Workbench, the Eclipse-based ABAP development tools, and SAP Cloud Platform ABAP environment — and is responsible for all rollout activities.