in src/zgoog_cl_bqtr_gen_bw_object.clas.abap [0:0]
METHOD create_adso.
DATA: lt_field TYPE cl_rsds_access_odp=>tt_repl_field.
CLEAR: et_return, ev_sy_subrc.
CALL METHOD cl_rsds_access_odp=>rodps_repl_odp_get_detail
EXPORTING
i_logsys = iv_logsys
i_odpname = iv_odpname
IMPORTING
et_fields = lt_field
et_return = et_return.
LOOP AT et_return TRANSPORTING NO FIELDS
WHERE type CA 'AEX'.
EXIT.
ENDLOOP.
IF sy-subrc IS INITIAL.
ev_sy_subrc = 4.
RETURN.
ENDIF.
DATA: ls_key_field TYPE REF TO cl_rsds_access_odp=>ts_repl_field.
READ TABLE lt_field REFERENCE INTO ls_key_field
WITH KEY keyflag = 'X'.
IF sy-subrc IS NOT INITIAL.
RETURN.
ENDIF.
DATA: lt_key TYPE cl_rso_adso_api=>tn_t_key,
lt_obj TYPE cl_rso_adso_api=>tn_t_object,
lt_dimension TYPE cl_rso_adso_api=>tn_t_dimension,
lt_msg TYPE rs_t_msg.
DATA: ls_dimension TYPE cl_rso_adso_api=>tn_s_dimension.
ls_dimension-name = 'KEY'. ls_dimension-txtsh = 'Key'.
APPEND ls_dimension TO lt_dimension.
ls_dimension-name = 'DATA'. ls_dimension-txtsh = 'Data'.
APPEND ls_dimension TO lt_dimension.
DATA:ls_key TYPE string.
APPEND ls_key_field->name TO lt_key.
DATA: ls_obj TYPE cl_rso_adso_api=>tn_s_object.
ls_obj-fieldname = ls_key_field->name.
ls_obj-datatp = ls_key_field->type.
ls_obj-length = ls_key_field->length.
ls_obj-decimals = ls_key_field->decimals.
ls_obj-dimension = 'KEY'.
ls_obj-sid_determination_mode = 'N'.
ls_obj-txtsh = ls_key_field->description.
APPEND ls_obj TO lt_obj.
TRY.
DATA: lo_exception TYPE REF TO cx_root.
DATA: lv_text TYPE rsoadsodescr.
lv_text = iv_adsonm.
cl_rso_adso_api=>create(
EXPORTING
i_adsonm = iv_adsonm
i_text = lv_text
i_infoarea = ''
i_s_adsoflags = cl_rso_adso_api=>get_adso_flags_from_model_tmpl(
cl_rso_adso_api=>tn_c_model_tmpl-standard )
i_t_object = lt_obj
i_t_key = lt_key
i_t_dimension = lt_dimension
IMPORTING
e_t_msg = lt_msg ).
CATCH cx_root INTO lo_exception.
ev_sy_subrc = 4.
add_bapiret2_from_cx_root(
EXPORTING
io_error = lo_exception
CHANGING
ct_bapiret2 = et_return ).
RETURN.
ENDTRY.
es_tlogo-objnm = iv_adsonm.
es_tlogo-tlogo = 'ADSO'.