gen_evt_handler_local

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.