in src/zgoog_cl_bqtr_gen_bw_object.clas.abap [0:0]
METHOD apply_routine.
DATA: lt_abap_source TYPE rstran_t_abapsource.
DATA: ls_source TYPE abapsource.
DATA: lo_cmp TYPE REF TO cl_cmp_composer,
lo_cmpf TYPE REF TO cx_cmp_failure,
lo_root TYPE REF TO cx_root,
lt_buffer TYPE rswsourcet.
TYPES: BEGIN OF lty_param,
mass_tr_key TYPE /goog/trkey,
data_source TYPE string,
cdc_framework TYPE string,
mandt_fnam TYPE name_feld,
END OF lty_param.
DATA: ls_param TYPE lty_param.
CONSTANTS: lc_start TYPE string VALUE 'ZGOOG_I_BQTR_TEMPLATE_START',
lc_end TYPE string VALUE 'ZGOOG_I_BQTR_TEMPLATE_END'.
CLEAR: et_return, ev_sy_subrc.
ls_param = VALUE #( mass_tr_key = iv_mass_tr_key
data_source = iv_data_source
cdc_framework = 'ODQ'
mandt_fnam = iv_mandt_fval ).
lcl_code_composer_util=>generate_code_using_cc( EXPORTING iv_template = lc_start
is_params = ls_param
IMPORTING ev_error = DATA(lv_error)
et_code = lt_abap_source ).
DATA: lo_ex TYPE REF TO cx_root.
TRY.
* Create routine and get reference and codeid of routine
CALL METHOD io_trfn->create_start_routine( ).
DATA: lo_routine_start TYPE REF TO cl_rstran_step_rout.
lo_routine_start = io_trfn->get_start_routine( ).
DATA: lv_codeid_start TYPE rscodeid.
lo_routine_start->get_codeid(
IMPORTING
e_codid = lv_codeid_start ).
* Set new routine code
lo_routine_start->store_routine(
i_codeid = lv_codeid_start
i_t_source = lt_abap_source ).
CATCH cx_root INTO lo_ex.
ev_sy_subrc = 4.
add_bapiret2_from_cx_root(
EXPORTING
io_error = lo_ex
CHANGING
ct_bapiret2 = et_return ).
RETURN.
RETURN.
ENDTRY.
TRY.
* Create routine and get reference and codeid of routine
CALL METHOD io_trfn->create_end_routine( ).
DATA: lo_routine_end TYPE REF TO cl_rstran_step_rout.
lo_routine_end = io_trfn->get_end_routine( ).
DATA: lv_codeid_end TYPE rscodeid.
lo_routine_end->get_codeid(
IMPORTING
e_codid = lv_codeid_end ).
CLEAR lt_abap_source.
ls_source-line = | CLEAR RESULT_PACKAGE[]. |.
APPEND ls_source TO lt_abap_source.
* Set new routine code
lo_routine_end->store_routine(
i_codeid = lv_codeid_end
i_t_source = lt_abap_source ).
CATCH cx_root INTO lo_ex.
ev_sy_subrc = 4.
add_bapiret2_from_cx_root(
EXPORTING
io_error = lo_ex
CHANGING
ct_bapiret2 = et_return ).
RETURN.
ENDTRY.