in src/zgoog_cl_bqtr_gen_bw_object.clas.abap [0:0]
METHOD delete_odso.
DATA: l_t_ods TYPE TABLE OF rso_s_tlogo,
l_s_ods TYPE rso_s_tlogo,
l_th_ods TYPE rso_th_tlogo,
l_s_odstab TYPE rstran_ut_ods_delete,
g_r_odso TYPE REF TO cl_rsd_odso,
l_ods TYPE rsdodsobject.
l_s_ods-tlogo = 'ODSO'.
l_s_ods-objnm = iv_adsonm.
l_ods = iv_adsonm.
CALL METHOD cl_rsd_odso=>factory
EXPORTING
i_odsobject = l_ods
RECEIVING
r_r_odso = g_r_odso
EXCEPTIONS
input_invalid = 1
cancelled = 2
OTHERS = 3.
IF sy-subrc <> 0.
/goog/cl_bqtr_utility=>add_bapiret2_from_sy(
CHANGING
ct_bapiret2 = et_return ).
ev_sy_subrc = 4.
RETURN.
ENDIF.
APPEND l_s_ods TO l_t_ods.
l_th_ods = l_t_ods.
TRY.
CALL METHOD g_r_odso->prepare
EXPORTING
i_with_enqueue = rs_c_true
i_with_authority = rs_c_true.
CATCH cx_rs_error INTO DATA(lx_err_msg).
ev_sy_subrc = sy-subrc.
add_bapiret2_from_rs_error(
EXPORTING
io_rs_error = lx_err_msg
CHANGING
ct_bapiret2 = et_return ).
RETURN.
ENDTRY.
TRY.
CALL METHOD g_r_odso->delete
EXPORTING
i_th_tlogo = l_th_ods
i_external = rs_c_false
i_show_protocol = rs_c_false
i_with_cto = rs_c_true.
CATCH cx_rs_cancelled INTO DATA(lr_rs_cancelled).
ev_sy_subrc = 4.
add_bapiret2_from_rs_error(
EXPORTING
io_rs_error = lr_rs_cancelled
CHANGING
ct_bapiret2 = et_return ).
RETURN.
ENDTRY.
COMMIT WORK.
DATA: lt_iobj_del TYPE rsd_t_c30.
DATA: lt_msg TYPE rs_t_msg.
DATA: lv_subrc TYPE sysubrc.
lt_iobj_del = VALUE #( ( objnm = iv_iobj ) ).
CALL FUNCTION 'RSDG_IOBJ_MULTI_DELETE'
EXPORTING
i_t_iobjnm = lt_iobj_del
IMPORTING
e_t_msg = lt_msg
e_subrc = lv_subrc.
LOOP AT lt_msg ASSIGNING FIELD-SYMBOL(<ls_msg>)
WHERE msgty = 'E'.
DATA(ls_bapiret2) = VALUE bapiret2( ).
ls_bapiret2-id = <ls_msg>-msgid.
ls_bapiret2-number = <ls_msg>-msgno.
ls_bapiret2-message_v1 = <ls_msg>-msgv1.
ls_bapiret2-message_v2 = <ls_msg>-msgv2.
ls_bapiret2-message_v3 = <ls_msg>-msgv3.
ls_bapiret2-message_v4 = <ls_msg>-msgv4.
APPEND ls_bapiret2 TO et_return.
ENDLOOP.
COMMIT WORK.