Files
abap-cheat-sheets/src/zcl_demo_abap_rap_evt_handler.clas.locals_imp.abap
danrega 3e98aba338 Update
2024-01-30 17:19:27 +01:00

76 lines
3.0 KiB
ABAP

CLASS lhe_event DEFINITION INHERITING FROM cl_abap_behavior_event_handler.
PRIVATE SECTION.
METHODS on_updated FOR ENTITY EVENT
updated FOR root~updated.
METHODS on_deleted FOR ENTITY EVENT
deleted FOR root~deleted.
METHODS on_created FOR ENTITY EVENT
created FOR root~created.
DATA evt_log TYPE TABLE OF zdemo_abap_draft WITH EMPTY KEY.
ENDCLASS.
CLASS lhe_event IMPLEMENTATION.
"Note:
"- For this example, database table entries are created for the individual
" RAP BO instances that are imported into the event handler methods.
"- The transactional phases are implicitly set when RAP business events are
" consumed locally. This means that RAP event handler methods are started in
" the modify phase when called. If database modifications are to be implemented
" in RAP event handler methods, you must explicitly activate the save phase to
" avoid causing errors detected by the controlled SAP LUW.
METHOD on_created.
cl_abap_tx=>save( ).
LOOP AT created ASSIGNING FIELD-SYMBOL(<created>).
TRY.
APPEND VALUE #( id = cl_system_uuid=>create_uuid_x16_static( )
draftuuid = cl_system_uuid=>create_uuid_x16_static( )
calc_result = |Instance key: "{ <created>-id }" / Event CREATED raised|
crea_date_time = cl_abap_tstmp=>utclong2tstmp( utclong_current( ) )
) TO evt_log.
CATCH cx_uuid_error INTO DATA(err).
ASSERT err IS INITIAL.
ENDTRY.
MODIFY zdemo_abap_draft FROM TABLE @evt_log.
ENDLOOP.
ENDMETHOD.
METHOD on_updated.
cl_abap_tx=>save( ).
LOOP AT updated ASSIGNING FIELD-SYMBOL(<updated>).
TRY.
APPEND VALUE #( id = cl_system_uuid=>create_uuid_x16_static( )
draftuuid = cl_system_uuid=>create_uuid_x16_static( )
calc_result = |Instance key: "{ <updated>-id }" / %param: col1: "{ <updated>-%param-col1 }" col2: "{ <updated>-%param-col2 }"|
crea_date_time = cl_abap_tstmp=>utclong2tstmp( utclong_current( ) )
) TO evt_log.
CATCH cx_uuid_error INTO DATA(err).
ASSERT err IS INITIAL.
ENDTRY.
MODIFY zdemo_abap_draft FROM TABLE @evt_log.
ENDLOOP.
ENDMETHOD.
METHOD on_deleted.
cl_abap_tx=>save( ).
LOOP AT deleted ASSIGNING FIELD-SYMBOL(<deleted>).
TRY.
APPEND VALUE #( id = cl_system_uuid=>create_uuid_x16_static( )
draftuuid = cl_system_uuid=>create_uuid_x16_static( )
calc_result = |Instance key: "{ <deleted>-id }" / %param: col1: "{ <deleted>-%param-col1 }" col2: "{ <deleted>-%param-col2 }"|
crea_date_time = cl_abap_tstmp=>utclong2tstmp( utclong_current( ) )
) TO evt_log.
CATCH cx_uuid_error INTO DATA(err).
ASSERT err IS INITIAL.
ENDTRY.
MODIFY zdemo_abap_draft FROM TABLE @evt_log.
ENDLOOP.
ENDMETHOD.
ENDCLASS.