create_adso

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'.