Enterprise Resource Planning Blogs by SAP
Get insights and updates about cloud ERP and RISE with SAP, SAP S/4HANA and SAP S/4HANA Cloud, and more enterprise management capabilities with SAP blog posts.
cancel
Showing results for 
Search instead for 
Did you mean: 
AlexanderRother
Advisor
Advisor

Last year SAP announced the availability of the new ABAP Cloud development model in SAP S/4HANA Cloud, private edition and SAP S/4HANA. More information about that can be found in Boris Gebhardt’s blog post (“How to use Embedded Steampunk…”). Part of the announcement is the new ABAP extensibility guide. In this guide the 3-tier model was introduced to establish ABAP Cloud in SAP S/4HANA Cloud, private edition and SAP S/4HANA while retaining full flexibility in these environments.  

In this blog post I will introduce a guide dedicated to tier 2 – Cloud API Enablement. 

3-Tier Extensibility Model for SAP S/4HANA Cloud, private edition and SAP S/4HANA 


The 3-tier model is the way modern ABAP Cloud development is brought to SAP S/4HANA Cloud, private edition and SAP S/4HANA. It allows you to separate between:  

    • Extensions that follow the cloud extensibility model (tier 1);  

 

    • The tier 2 as Cloud API Enablement layer 

 

    • Existing custom code or legacy developments using classic extensibility techniques (tier 3).  





Tier 2 


One of the main aspects of the ABAP Cloud development model is, that only released public SAP APIs can be used. But what to do if such a public API is missing? 

With tier 2 you can mitigate this by building custom wrappers around the required non-released SAP objects and releasing them for Cloud Development. Hence, using the wrappers as a custom interface to SAP objects provides a mechanism for enabling non-released SAP objects for ABAP Cloud and tier 1. 

In the following picture we summarize how the 3 tiers shall work together and interact with SAP development objects: 


Let’s walk through it together: 

    • Starting on the upper left, in tier 1, syntax and runtime checks ensure that you follow strictly the ABAP Cloud rules and that you only access released development objects. 

 

    • These released development objects are the public SAP interfaces and in addition the wrappers around non-released SAP objects in tier 2. 

 

    • Tier 2 is the Custom SAP Interface, that can be used to mitigate the effect of missing public SAP APIs. In this tier, the ABAP Cloud rules are enforced by ATC. Thereby, the access to non-released SAP objects required for building wrappers can be controlled.

 

    • Tier 3 contains the classic ABAP development. New developments in tier 3 shall also follow ABAP Cloud rules as much as possible. This is enforced by ATC as well.

 

    • Existing objects in tier 3 were developed without enforcing ABAP Cloud rules 



More details about how to use ATC in the three tier model is provided in How the ABAP Test Cockpit supports you to adopt ABAP Cloud.

The Custom SAP Interface (tier 2) is the stirrup to enable ABAP Cloud development in SAP S/4HANA Cloud, private edition and SAP S/4HANA while leveraging the broad scope and the flexibility of these products. Now you might ask: 

    • How shall tier 2 be set up in my development system? 

 

    • What are guidelines and best practices for creating wrappers? 

 

    • How can they be used in tier 1? 



We are happy to provide answers to these questions in the newly published ABAP Cloud API Enablement Guidelines for SAP S/4HANA Cloud, private edition, and SAP S/4HANA
Classic APIs for Tier 2

In the blog post Classic APIs for Tier 2 ABAP Cloud Development in SAP S/4HANA Cloud Private Edition Bjoern provides more information on classic APIs that are suited to be enabled for ABAP Cloud.

Read FAQ

We have a separate blog post listing FAQ: Cloud API Enablement - FAQ

Try it out

Please check our tutorial announced recently, which guides you through building such a wrapper.

Watch a demo

26 Comments
ThomasSchneider
Product and Topic Expert
Product and Topic Expert
Hi Alex,

great blog, thanks a lot for the insight!

Thomas

.

 
hdemirkale
Employee
Employee
Hi Alex,

Thanks a lot for the blog.

 

Huseyin.
0 Kudos
Thanks for the information, is there anyway I could find the list of existing custom objects using unreleased sap objects? Thanks in advanced
AlexanderRother
Advisor
Advisor
0 Kudos

Hi Rishi R,

yes, you can retrieve a list of your objects using non-released SAP objects with the help of the ABAP test cockpit. Please have a look at this blog to learn how to do so: How the ABAP Test Cockpit supports you to adopt ABAP Cloud

Best regards,
Alexander

michaeljohn82
Participant

Hi a.rother,

Thank you for the helpful information. We do not yet have S4 in our landscape. I have a few questions about how to handle situations where there are BDCs written and unreleased FMs in the code. How can we do type 2 developments in these situations? What do we need to ensure at this stage, since S4 is not yet available? We keep receiving requests to build new extensions, but we are using ABAP Proxies, SOAP-based services, and BDCs for APIs that do not exist. Please clarify so that we can ensure that the switch to S4 is easy for custom code. Are there any guidelines for customers like us?

JAEUK
Explorer
0 Kudos
Thanks for the great information.

I would like to have "DETAILED GUIDE" about Tier 2.

1. Which types of ABAP programs could be developed with Tier 2?

Classic FM, SOAP, IDOC, RFC using Gateway, BDCs, Data Elements, and others?

There are many types of ABAP CODE in the existing ABAP World.

I would like to have a guide that explains how to switch to each type.

 

2. How does Tier 2 provide version-up stability?

What are the differences in the versioning process between Tier 2 and Classic?

 

Thanks as always for the great information.

 
AlexanderRother
Advisor
Advisor
0 Kudos
Hi Michael,

let me split your question into different parts, so that I can answer specifically:

  1. There are recommendations what to do in releases lower than 2022 to prepare for an ABAP Cloud transition. Please check our ABAP Cloud FAQ

  2. SOAP services can also be used in ABAP Cloud, please find details in Jens’ blog post and the document “ABAP Cloud - Technical Use Cases and Recommended Technologies”

  3. Calling transactions with batch input is not part of ABAP Cloud. Instead, for local consumption the released APIs shall be used (if such an API is missing, you can build a wrapper as explained in the guide), or for remote consumption the corresponding WebAPIs based on OData shall be used.


Best regards,
Alexander
michaeljohn82
Participant
0 Kudos
Hi a.rother,

Thank you for the reply. It is very helpful. While I understand these guidelines are mainly for Cloud ABAP and S4HANA environments we want to know if any such guidelines are available for customers using ECC? Because ABAP cloud environment is not available in ECC and we can't avoid classic custom code.
AlexanderRother
Advisor
Advisor
0 Kudos
Hi Jae-Uk Lee,

thanks for reaching out and the good feedback!

The wrappers developed in Tier 2 shall be based on classes/interfaces and CDS Views (see sections 2.3.2 and 2.3.3 of the guide). Please note that the purpose of tier 2 is not to enable everything you know from the classic world for consumption in ABAP Cloud. Instead, tier 2 contains wrappers for specific SAP APIs that are not released but required in ABAP Cloud (see section 1.2 of the guide).

Regarding the upgrade stability, I’d like to explain 2 things:

  1. Stability of non-released SAP objects used in wrappers: There is no guarantee for upgrade stability of the non-released SAP objects that you wrap (see section 1.3). However, with tier 2 you have a clear interface of your custom code to non-released SAP objects that can be governed.

  2. Stability of wrappers: there are ATC checks to ensure that your wrapper does not change incompatibly once you released it for ABAP Cloud development (see section 2.1.3) and the documentation.


Best regards,
Alexander
Jelena
Active Contributor
0 Kudos
Simplest way to find custom objects has always been searching for Z* or Y*. 🙂
ThFiedler
Product and Topic Expert
Product and Topic Expert
0 Kudos
Hi,

just execute an ATC check run with the variant ABAP_CLOUD_READINESS over your complete custom code and you will get all objects that uses not released SAP APIs.

Regards,

Thomas.
AlexanderRother
Advisor
Advisor
Dear Michael,

In principle, encapsulating the usage of SAP APIs with custom wrappers to declare a clear interface between custom code and SAP code is also possible and useful in ECC systems. Please also have a look at our recommendations regarding classic extensibility techniques in the extensibility guide. Furthermore you might also consider public recommendations for ABAP development provided by the DSAG.

For side-by-side scenarios, it is possible to develop your extension with ABAP Cloud in the BTP ABAP Environment and call remote APIs of your ECC system, like RFC or SOAP services.

Best regards,
Alexander
Juwin
Active Contributor
0 Kudos
a.rother

The blog indicates that this method is also applicable for enabling missing released APIs in S/4HANA Cloud. But, in the detailed guide, the first step recommended to create for Tier-2 development is a separate software component.


In order to create Software component, the step is to execute a report in SE38


 

How is this possible to be done in S/4HANA Cloud, since developers do not have access to SAPGUI or SE38 transaction?

Thanks
AlexanderRother
Advisor
Advisor
0 Kudos
Hi Juwin Pallipat Thomas,

in this blog we are not referring to SAP S/4HANA Cloud, public edition. As explained at the beginning of this blog, the 3-tier model is for SAP S/4HANA Cloud, private edition and on-premise, see also How to use Embedded Steampunk in SAP S/4HANA Cloud, private edition and in on-premise – The new ABAP...

Best regards,
Alexander

 
Frank1
Participant
0 Kudos
Hi Alexander,

It is great sharing and figure out more extensibility for S4HANA Private Cloud. Hope S4HAHA Public cloud will be more mature in developer extensibility and gain huge success in the ERP world, also hope ABAP cloud become more and more successful in SAP ecosystem, hope ABAPER has bright future and can keep live.
AlexanderRother
Advisor
Advisor
0 Kudos
Hi Frank,

thank you for the comment, I totally agree!

Best regards,
Alexander
David_Oexner
Participant
0 Kudos

Hello a.rother,

Thank you for the wonderful blog post. We would like to discuss an example scenario involving an API called "Maintenance Plan" that is used to retrieve plan schedules for equipment. This API is available for S4HANA but currently missing in ECC. In order to consume this service in an iFlow on cloud integration, we would appreciate your advice on how to proceed in such cases where APIs are missing. Specifically, we believe we may need to build a SOAP wrapper using standard BAPIs that are available. However, we are concerned about the impact on integration flows once we migrate to S4HANA, as the custom wrapper SOAP API may no longer be necessary, requiring rework of the integration flows in terms of data mappings and others. We are looking for suggestions on how to approach this situation while minimizing adjustments during the S4HANA migration. Thank you in advance for your guidance.

AlexanderRother
Advisor
Advisor
0 Kudos
Hi Abraham,

these guidelines are for wrapping objects for local consumption. If you want to develop integrations, please check out the integration portfolio we have in ABAP Cloud

Best regards,
Alexander
rachana45
Discoverer
0 Kudos
Hi a.rother,

When I am creating factory class in BTP cloud it is showing unknown and when I am creating factory class in on-premise system it is showing not permitted. Please suggest me on this.



 

Thanks & Regards,

Rachana.
AlexanderRother
Advisor
Advisor
0 Kudos
Hi Rachana,

first of all, the cloud API enablement is about SAP S/4HANA Cloud, private edition and on-premise. It has no relevance for the SAP BTP ABAP Environment.

So let's stick to your on-premise test: I assume you created a wrapper and a factory for it. You need to release the factory under C1-contract for the Use in Cloud Development as well. Then you will be able to call it from ABAP Cloud and use the wrapper.

Best regards,
Alexander
rachana45
Discoverer
0 Kudos
Hi a.rother,

I have created wrapper class and factory class in on-premise system and released both classes in user C1-contract. after releasing I tried calling it from SAP BTP ABAP cloud, it is showing unknown. So, can we use these classes in SAP BTP ABAP Environment.

Thanks & Regards,

Rachana.
AlexanderRother
Advisor
Advisor
0 Kudos
Hi Rachana,

this is a misunderstanding. The C1-release for Use in Cloud Development that we describe in the cloud API enablement guidelines is for local consumption within the system. It is not for remote consumption.

See also the documentation.

Best regards,
Alexander
rachana4
Explorer
0 Kudos
Hi a.rother,

What is the option for remote consumption?, we are using S4H On-Prem and I see only below option.


 

Thanks & Regards,

Rachana
AlexanderRother
Advisor
Advisor
0 Kudos
Hi Rachana,

if you want to call a BAPI in your S/4 OnPrem system from BTP ABAP Environment, you can do so by RFC, see documentation. A wrapper is not required in this case.

Best regards,
Alexander

 
rachana4
Explorer
0 Kudos
Hi Alexander,

Thanks for you reply.

So, we need wrapper BAPI method for only S/4 HANA Cloud system and not for S/4 On-Prem system and RFC is the preferred option for On-Prem.

Is my understanding correct?

 
AlexanderRother
Advisor
Advisor
0 Kudos
Hi Rachana,

no, the question is whether you want to consume it locally (inside the system) or remotely (from a different system or BTP). Please read the general information in the extensibility guide, introduced here.

Best regards,
Alexander