cancel
Showing results for 
Search instead for 
Did you mean: 

ABAP RAP - Behavior Projection and Implementation Class

asm_sapdev
Explorer
0 Kudos

Hi All,

I am building a sample app to learn RAP. I created a BO with two fields. This BO has @AccessControl.authorizationCheck: #CHECK annotation. This BO does not need any additional functionality hence after creating Behavior Definition, I thought I will skip creating behavior implemntation class and created service,

While testing the service, when I create a record, I get following error in the browser.

Runtime Error: 'RAISE_SHORTDUMP'. The OData request processing has been abnormally terminated. If you use SAP S/4HANA Cloud, please create an incident. Otherwise, if "Runtime Error" is not initial, launch ADT feed "Runtime Errors" or transaction ST22 / SM21 (system log analysis) for details and analysis.

In ADT, I can see following error(s)

Gateway error log - Backend Error: Metadata cache on hub system for current model is outdated

I also got another error, which I thought was not related to above.

The current program has intentionally triggered a termination with a short dump.

The dump analysis revealed "The exception is related to the previous exception "CX_RAP_HANDLER_NOT_IMPLEMENTED" that occurred in
program "CL_RAP_BHV_PROCESSOR==========CP", in line 30 of include "CL_RAP_BHV_PROCESSOR==========CM01G". The reason for this exception
was: Handler not implemented; Method: GLOBAL_AUTHORIZATION, Involved Entities: ZC_LV_CAT_9000"

While trying to figure out how to resolve cache issue, I decided to create the implementation class which would fix the error, The current program has intentionally triggered a termination with a short dump. however after creating the class, I did not write a single line of code and all the errors disappeared.

I am struggling to understand the relationship between the implemntation class and the other two errors. I'll appreciate any guidance in this context.

Regards

ASM

asm_sapdev
Explorer
0 Kudos

Now I udnerstand whats going on. Thanks everyone for taking time to resolve my query.

Regards

ASM

View Entire Topic
naveen_k1
Product and Topic Expert
Product and Topic Expert
0 Kudos

Relationship Between Implementation Class and Errors

When you created the behavior definition with @AccessControl.authorizationCheck: #CHECK, you instructed the RAP framework to enforce authorization checks. The framework then expects to find a corresponding implementation that defines this logic. However, as you initially skipped creating the behavior implementation class, the framework couldn't find the necessary code to execute this check, leading to the CX_RAP_HANDLER_NOT_IMPLEMENTED error.

When you eventually created the behavior implementation class, even without adding any specific code, you effectively provided the framework with a placeholder where it expects to find the authorization logic. By doing so, you satisfied the framework's requirement to have an implementation class associated with the behavior definition that includes authorization checks.

The absence of the implementation class was indirectly causing the "Metadata cache" issue as well. The RAP framework relies on a consistent and up-to-date view of the metadata to operate correctly. When part of the expected implementation (like the authorization handler) is missing, it can disrupt the normal operation and caching of metadata, leading to such errors. Once you added the implementation class, the framework's expectations were met, allowing it to correctly process and cache metadata, which resolved the "Backend Error: Metadata cache on hub system for current model is outdated" error as well.

asm_sapdev
Explorer
0 Kudos

Thanks @naveen_k1 for your detailed and clear explaination. Somehow it did not appear earlier. I can now understand why I was getting the error.

Thanks 

ASM