in abap-sdk/ZGOOG_SDK_UTILITIES/zgoog_business_evt_toolkit/src/zgoog_cl_rap_evthdlr_generator.clas.abap [0:0]
METHOD gen_evt_handler_local.
TYPES: BEGIN OF ty_rap_param,
entity_name TYPE evtb_entity_name,
event_name TYPE evtb_entity_name,
method_name TYPE char30,
END OF ty_rap_param,
tt_rap_params TYPE STANDARD TABLE OF ty_rap_param WITH NON-UNIQUE DEFAULT KEY,
BEGIN OF ty_params,
event_key TYPE /goog/ce_key,
event_list TYPE tt_rap_params,
END OF ty_params.
DATA: ls_params TYPE ty_params,
ls_event TYPE ty_rap_param.
DATA: lo_cmp TYPE REF TO cl_cmp_composer,
lx_cmp TYPE REF TO cx_cmp_failure.
CONSTANTS: c_template TYPE string VALUE 'ZGOOG_I_GEN_RAP_EVTHANDLER_TMP'.
TRY.
***instantiate composer
lo_cmp = cl_cmp_composer=>s_create( ).
ls_params-event_key = iv_event_key.
ls_event-entity_name = iv_entity_name.
ls_event-event_name = iv_entity_event.
ls_event-method_name = |ON_{ iv_entity_event }|.
APPEND ls_event TO ls_params-event_list.
*Generate Define Method code snippet
lo_cmp->add_var( i_name = 'params' i_value = ls_params ).
rv_code = lo_cmp->build_code( i_template_include = c_template ).
DATA lo_pretty_printer TYPE REF TO cl_sedi_pretty_printer.
CREATE OBJECT lo_pretty_printer.
lo_pretty_printer->format_source( CHANGING c_source = rv_code ).
CATCH cx_cmp_failure INTO lx_cmp.
DATA(lv_err_text) = lx_cmp->get_text( ).
CATCH cx_sedi_pretty_printer INTO DATA(lx_exp).
lv_err_text = lx_exp->get_text( ).
CATCH /iwbep/cx_sb_builder_exception INTO DATA(lx_build).
lv_err_text = lx_build->get_text( ).
ENDTRY.