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
Request clarification before answering.
The relationship is not between the annotation @AccessControl.authorizationCheck: #CHECK and the implementation class, but when you create a Behavior Definition (BDEF), and you specify strict mode, you must specify - "authorization master". And when you do that, you must define a method in the implementation class for this.
Now, if you skip creating the implementation class, the framework will be unable to find a method corresponds to authorization you have defined in the BDEF, hence the dump.
Also, the method will be part of local class inheriting from CL_ABAP_BEHAVIOR_HANDLER, hence the exception raised is CX_RAP_HANDLER_NOT_IMPLEMENTED.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @abhijitmoholkar, As I mentioned earlier, the framework expects a method declaration for authorization. It does not matter if you don't implement it. But it must be present and for a method to exist, a class must persist. Hence, it's needed.
If your query has been resolved by anyone's answer, please mark that answer as accepted. 🙂
| User | Count |
|---|---|
| 5 | |
| 4 | |
| 4 | |
| 3 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 | |
| 2 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.