create_trnf_odso

in src/zgoog_cl_bqtr_gen_bw_object.clas.abap [0:0]


  METHOD create_trnf_odso.

    DATA:
      ls_source TYPE rstran_s_tlogo,
      ls_target TYPE rstran_s_tlogo,
      lv_subrc  TYPE sysubrc,
      lo_trfn   TYPE REF TO cl_rstran_trfn,
      lx_ex     TYPE REF TO cx_root.

    CLEAR: et_return, ev_sy_subrc.
    "TODO - Check existance

    MOVE-CORRESPONDING iv_tlogo_ds TO ls_source.
    MOVE-CORRESPONDING iv_tlogo_adso TO ls_target.

    TRY.
        lo_trfn = cl_rstran_trfn=>factory(
          EXPORTING
            i_s_source = ls_source
            i_s_target = ls_target
        ).
      CATCH cx_root INTO lx_ex.
        ev_sy_subrc = 4.
        add_bapiret2_from_cx_root(
          EXPORTING
            io_error    = lx_ex
          CHANGING
            ct_bapiret2 = et_return ).
        RETURN.
    ENDTRY.

    DATA: lv_tranid TYPE rstranid.

    lo_trfn->get_tranid(
      IMPORTING
        e_tranid = lv_tranid ).

    add_trnf_map_odso(
     iv_iobj = iv_iobj
     io_trfn = lo_trfn ).

    apply_routine(
      iv_mass_tr_key = iv_mass_tr_key
      iv_data_source = conv #( iv_tlogo_ds-object )
      io_trfn        = lo_trfn
      iv_mandt_fval  = iv_mandt_fval ).

*  Try to save object
    TRY.
        lo_trfn->if_rso_tlogo_maintain~save(
          EXPORTING
            i_with_cto = abap_false
          IMPORTING
            e_subrc    = lv_subrc ).
        IF lv_subrc <> 0.
          ev_sy_subrc = lv_subrc.
          /goog/cl_bqtr_utility=>add_bapiret2_from_sy(
            CHANGING
              ct_bapiret2 = et_return ).
          RETURN.
        ENDIF.
      CATCH cx_root INTO lx_ex.
        ev_sy_subrc = 4.
        add_bapiret2_from_cx_root(
          EXPORTING
            io_error    = lx_ex
          CHANGING
            ct_bapiret2 = et_return ).
        RETURN.
    ENDTRY.

*  Try to activate object
    lo_trfn->if_rso_tlogo_maintain~activate(
      EXPORTING
        i_force_activation = abap_true
        i_with_cto         = abap_false
      IMPORTING
        e_subrc            = lv_subrc ).

    IF lv_subrc <> 0.
      ev_sy_subrc = lv_subrc.
      /goog/cl_bqtr_utility=>add_bapiret2_from_sy(
        CHANGING
          ct_bapiret2 = et_return ).
      RETURN.
    ENDIF.

    es_tlogo-objnm = lv_tranid.
    es_tlogo-tlogo    = 'TRFN'.