delete_odso

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.