Determination in RAP
Refer - Virtual elements in RAP
What is a Determination in RAP?
* A determination is a kind of hook method used to determine or calculate values during a RAP operation (e.g., setting default values, calculating totals, etc.).
Where is Determination Used?
* You define it in the Behavior Definition (behavior definition
) and implement it in the Behavior Implementation Class (ABAP class
).
Step 1: Change the behavior definition.
managed implementation in class zbp_iv_ab_empl unique;
strict ( 2 );
define behavior for ZIV_AB_EMPL //alias <alias_name>
persistent table ztl_ab_empl
lock master
authorization master ( instance )
//etag master <field_name>
{
create ( authorization : global );
update;
delete;
field ( readonly ) EmplRoledec;
determination updateroledesc on save { field EmplRole; }
mapping for ztl_ab_empl
{
EmplId = empl_id;
EmplName = empl_name;
EmplAge = empl_age;
EmplRole = empl_role;
EmplRoledec = empl_roledec;
EmplSal = empl_sal;
}
}
Step 2: Implement the method -updateroledesc.
CLASS lhc_ZIV_AB_EMPL DEFINITION INHERITING FROM cl_abap_behavior_handler.
PRIVATE SECTION.
METHODS get_instance_authorizations FOR INSTANCE AUTHORIZATION
IMPORTING keys REQUEST requested_authorizations FOR ziv_ab_empl RESULT result.
METHODS get_global_authorizations FOR GLOBAL AUTHORIZATION
IMPORTING REQUEST requested_authorizations FOR ziv_ab_empl RESULT result.
METHODS updateroledesc FOR DETERMINE ON SAVE
IMPORTING keys FOR ziv_ab_empl~updateroledesc.
ENDCLASS.
CLASS lhc_ZIV_AB_EMPL IMPLEMENTATION.
METHOD get_instance_authorizations.
ENDMETHOD.
METHOD get_global_authorizations.
ENDMETHOD.
METHOD updateroledesc.
READ ENTITIES OF ziv_ab_empl in local mode
ENTITY ziv_ab_empl
FIELDS ( EmplRole ) WITH CORRESPONDING #( keys )
RESULT data(lt_emproles).
LOOP AT lt_emproles INTO data(lr_emproles).
CASE lr_emproles-EmplRole.
when 'L1'.
MODIFY ENTITIES OF ziv_ab_empl in LOCAL MODE
ENTITY ziv_ab_empl
UPDATE
FIELDS ( EmplRoledec ) with VALUE #( ( %tky = lr_emproles-%tky EmplRoledec = 'Manager' ) ).
when 'L2'.
MODIFY ENTITIES OF ziv_ab_empl in LOCAL MODE
ENTITY ziv_ab_empl
UPDATE
FIELDS ( EmplRoledec ) with VALUE #( ( %tky = lr_emproles-%tky EmplRoledec = 'Asst Manager' ) ).
when 'L3'.
MODIFY ENTITIES OF ziv_ab_empl in LOCAL MODE
ENTITY ziv_ab_empl
UPDATE
FIELDS ( EmplRoledec ) with VALUE #( ( %tky = lr_emproles-%tky EmplRoledec = 'Team Lead' ) ).
when OTHERS.
MODIFY ENTITIES OF ziv_ab_empl in LOCAL MODE
ENTITY ziv_ab_empl
UPDATE
FIELDS ( EmplRoledec ) with VALUE #( ( %tky = lr_emproles-%tky EmplRoledec = 'Normal Employee' ) ).
ENDCASE.
ENDLOOP.
ENDMETHOD.
ENDCLASS.
Step 3: Check and activate both BD & class.
Testing
Step 1: preview the application.
Step 2: Change the existed record (Changing L2 to L1 where id = 123).
Step 3: Save and refresh.
********************************Thank you*****************************
Comments
Post a Comment