in src/zgoog_cl_bqtr_gen_bw_object.clas.abap [0:0]
METHOD create_odso.
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
INDEX 1.
IF sy-subrc IS NOT INITIAL.
RETURN.
ENDIF.
CALL FUNCTION 'RSDF_GENERATE_IOBJ_SIMPLE'
EXPORTING
i_iobjnm = iv_iobj
i_type = 'CHA'
i_description = ls_key_field->description
i_datatype = 'CHAR' "Anything can go into CHAR
i_leng = ls_key_field->length
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
/goog/cl_bqtr_utility=>add_bapiret2_from_sy(
CHANGING
ct_bapiret2 = et_return ).
ev_sy_subrc = 4.
RETURN.
ENDIF.
DATA: lt_info_obj TYPE STANDARD TABLE OF bapi6108io.
lt_info_obj = VALUE #( ( infoobject = iv_iobj ) ).
CALL FUNCTION 'BAPI_IOBJ_ACTIVATE_MULTIPLE'
TABLES
infoobjects = lt_info_obj
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_odso_details TYPE bapi6116.
DATA: lt_info_obj_odso TYPE STANDARD TABLE OF bapi6116io.
ls_odso_details-odsobject = iv_adsonm.
ls_odso_details-objvers = 'N'.
APPEND VALUE #( odsobject = iv_adsonm
posit = 0001
keyflag = 'X'
infoobject = iv_iobj
iobjtp = 'CHA' )
TO lt_info_obj_odso.
CALL FUNCTION 'RSDF_GENERATE_ODSO'
EXPORTING
i_details = ls_odso_details
TABLES
i_t_infoobjects = lt_info_obj_odso
EXCEPTIONS
failed = 1
OTHERS = 2.
IF sy-subrc <> 0.
/goog/cl_bqtr_utility=>add_bapiret2_from_sy(
CHANGING
ct_bapiret2 = et_return ).
ev_sy_subrc = 4.
RETURN.
ENDIF.
es_tlogo-objnm = iv_adsonm.
es_tlogo-tlogo = 'ODSO'.