This is a test message to test the length of the message box.
Login
|
ABAP RAP Contact App
Created by Software-Heroes

Recycling Heroes - Contact App

799

In this tutorial, we'll model a RAP application from the database, through the model and UI, to deployment and provisioning in the system. This should teach you the full development cycle for modern ABAP Cloud applications.

Advertising


Today we'll go through the application development process step by step, from modeling and deployment to permissions.

 

Introduction

A while ago we started the YouTube series about the Recycling Heroes and today part of the journey is complete. The contact app is now finished and we've released another full video about its construction. This article will accompany the video, addressing relevant techniques and examples.

 

RAP

The ABAP RESTful Application Programming Model is an important component in building modern Fiori applications in the ABAP Cloud environment. It is therefore crucial to learn and fully understand this topic. The initial steps are relatively easy to grasp, but mastering the model will take at least a year, and you will encounter numerous challenges. Therefore, we have created various tutorials, guides, and deep dives to delve into the different aspects.

 

Video

We have created a complete version of the video for the entire series. On YouTube you can find the video and the corresponding playlist if you want to take a closer look at the various tutorials. Below the section description, you will find further articles that deal with the topic.

 

Modeling

In this section, we will manually model the RAP stack across the various layers. We will use the Classic Pattern, as it is best suited for getting started with RAP development and is the standard for local new applications. We create the table, model the CDS stack on the object, and activate Draft to create an OData v4. In the later phase, we fix a bug we encountered due to the naming of fields in the backend. Finally, we create the first test data to see something in the UI.

 

UI Design

In the UI design, we then look step by step at the structure of the individual elements in the application. We create the filter, display the fields in the output list, model the object page and the header, and organize the fields into groups within a structure. Here you will learn the different annotations you need for the UI and what effect they have on the display.

 

Value Helps

After creating the UI, we want to make it more convenient for the user and create a lot of value helps for the different fields. Fields that only work with a key are additionally enriched with text, so that gradually only readable information is present in the UI.

 

Virtual Elements

We now want to integrate fields that don't actually exist in the data model, such as an icon for the Object Page. Additionally, we want to dynamically hide fields and information on the UI. We use virtual elements to implement additional logic. We'll also delve into the details of how this is determined and examine the specifics of hidden fields.

 

Factory Actions

Besides the actual Create action, we can also use Factory Actions if we want to implement specific scenarios. In this episode, we'll implement a separate Factory Action for each different type of contact. This will allow us to better manage permissions later. Furthermore, we implement late numbering for the different types and numbers and set up the number ranges in the Fiori app. As a special feature, we use the "Auxiliary Class" to encapsulate parts of the code from the behavior implementation.

 

Validations and Determinations

To ensure that we only receive the correct data and filter out erroneous data records directly upon input, we implement checks and automatic determinations. To this end, we will implement a rudimentary interface for deriving address data for a later use case. For the generation process, we will look at the IDE action for generating new classes. To ensure our user sees the change directly in the UI, we'll implement a side effect.

 

Fiori and Deployment

The application is now ready to be created in the Business Application Studio. To do this, we set up a new development environment (Dev Space), generate the application using the wizard, and make further adjustments (adaptations) to the application. Finally, let's take another look at the structure of a Fiori application and begin with deployment to the ABAP environment.

 

Launchpad Integration

Now that the application is deployed to the system, we'll take care of integrating the application into the Launchpad. To do this, we'll create an IAM app and a business catalog. We then integrate a business role and design the Pages and Spaces in the system to provide the user with their standard workspace.

 

Custom Descriptor Item

In this episode, we want to replace the tile and add more features, such as a counter, a unit, and design customizations. We will discuss the various components and explain the functionalities in detail.

 

Feature Control

Permissions are an important part of application deployment, so we use Feature Controls to restrict individual UI actions. In addition to the restrictions, we also create a separate permission object and completely restrict access. Finally, access is tested via simple permissions.

 

Restriction Types

Since the permissions are currently only stored statically, we use Restriction Types to ensure that we can control the user's permissions via roles. To do this, we create additional objects and explain their effect in detail.

 

Data

Now that the application is almost complete, we'll take care of loading the data. We'll prepare a JSON file, which we'll make available on GitHub. Using an open-source project, we'll load the data into ABAP and use it for EML to populate the contacts. This allows us to reuse the logic and checks. Finally, we'll reset the number ranges to get fresh data into our system. Since the UI still has some gaps after the change, we'll adjust the output and fields again.

 

App

Currently, we only have one application in the Launchpad, but we've set up a dedicated space for our company.

 

When we open the application, the initial data is loaded immediately, and we can start working right away. Because we are admins, we can see all the data and all actions are available to us.

 

Looking at a customer, we find a corresponding header that we have built. Below that are the various components and groups of the object page.

 

Conclusion

This video and article are intended to help you get started with RAP development and illuminate the complete process of creating an application. Since most tutorials only cover parts of a single step, you should be able to create a complete application with this.

 

YouTube
Video


Included topics:
RAPBTPRecycling-HeroesContact App
Comments (0)



And further ...

Are you satisfied with the content of the article? We post new content in the ABAP area every Tuesday and Friday and irregularly in all other areas. Take a look at our tools and apps, we provide them free of charge.


RAP - CDS Pattern

Category - ABAP

How does the CDS pattern actually work, and what does CDS-only have to do with it? In this article, we'll look at the architecture and use of the pattern.

11/28/2025

RAP - EML Variants

Category - ABAP

If you use EML to interact with the ABAP RESTful Application Programming Model, several variants are currently available. Let's take a closer look at them.

09/16/2025

RAP - Generator (from Scratch)

Category - ABAP

Does your development with RAP sometimes feel very slow? Generators do the work for you, building the actual stack and eliminating repetitive work.

08/05/2025

RAP - Action (Processing options)

Category - ABAP

How do you actually enable multi-select in RAP and control the various processing options? Here we'll look at the different options in the framework.

08/01/2025

RAP - Custom Entity with Action

Category - ABAP

How can you cleanly implement an action in a Custom Entity to update the UI und utilize EML? Let's take a closer look at the different steps.

07/29/2025