create

in src/zgoog_i_bqtr_gen_repl_obj_im1.prog.abap [0:0]


  METHOD create.

    DATA: lt_return TYPE bapiret2_t.
    DATA: lv_sy_subrc TYPE sy-subrc.
    DATA: ls_tlogo_adso TYPE zgoog_cl_bqtr_gen_bw_object=>t_tlogo.
    DATA: lv_adso_name TYPE rsoadsonm.
    DATA: ls_tlogo_ds TYPE zgoog_cl_bqtr_gen_bw_object=>t_tlogo.
    DATA: lv_ds_name TYPE string,
          lv_durmi   TYPE btcpmin,
          lv_durho   TYPE btcphour.
    DATA: ls_tlogo_trnf TYPE zgoog_cl_bqtr_gen_bw_object=>t_tlogo.

    DATA: lv_dtp TYPE rsbkdtpnm.

    lv_ds_name = iv_ds.
    zgoog_cl_bqtr_gen_bw_object=>create_bw_ds(
      EXPORTING
        iv_ds       = lv_ds_name
        iv_dsnam    = iv_dsname
        iv_logsys   = iv_logsy
        iv_applnm   = iv_appl
      IMPORTING
        es_tlogo    = ls_tlogo_ds
        ev_sy_subrc = lv_sy_subrc
        et_return   = lt_return ).

    lv_adso_name = iv_adso.

    add_status( iv_ds          = iv_ds
                iv_description = 'BW Data Source'
                iv_value       = |{ iv_dsname } with ODP Provider { lv_ds_name } |
                it_return      = lt_return ).

    IF ls_tlogo_ds IS NOT INITIAL.

      zgoog_cl_bqtr_gen_bw_object=>create_adso(
        EXPORTING
          iv_adsonm   = lv_adso_name
          iv_odpname  = ls_tlogo_ds-odpname
          iv_logsys   = iv_logsy
        IMPORTING
          es_tlogo    = ls_tlogo_adso
          ev_sy_subrc = lv_sy_subrc
          et_return   = lt_return ).

      add_status( iv_ds          = iv_ds
                  iv_description = 'Advanced Data Store Object (ADSO)'
                  iv_value       = CONV #( lv_adso_name )
                  it_return      = lt_return ).

      IF ls_tlogo_adso IS NOT INITIAL.

        zgoog_cl_bqtr_gen_bw_object=>create_trnf(
          EXPORTING
            iv_mass_tr_key = iv_trkey
            iv_data_source = lv_ds_name
            iv_tlogo_ds    = ls_tlogo_ds
            iv_tlogo_adso  = ls_tlogo_adso
            iv_mandt_fval  = iv_mfnam
          IMPORTING
            es_tlogo       = ls_tlogo_trnf
            ev_sy_subrc    = lv_sy_subrc
            et_return      = lt_return ).

        add_status( iv_ds          = iv_ds
                    iv_description = 'Data Transformation (RSDS)'
                    iv_value       = |RSDS { lv_ds_name }/{ iv_logsy } -> ADSO { lv_adso_name }|
                    it_return      = lt_return ).

        IF ls_tlogo_trnf IS NOT INITIAL.


          zgoog_cl_bqtr_gen_bw_object=>create_dtp(
            EXPORTING
              iv_tlogo_ds   = ls_tlogo_ds
              iv_tlogo_adso = ls_tlogo_adso
              iv_tlogo_trnf = ls_tlogo_trnf
            IMPORTING
              ev_dtpnm      = lv_dtp
              ev_sy_subrc   = lv_sy_subrc
              et_return     = lt_return ).

          add_status( iv_ds          = iv_ds
                      iv_description = 'Data Transfer Process'
                      iv_value       = |{ lv_ds_name }/{ iv_logsy } -> { lv_dtp }|
                      it_return      = lt_return ).

          IF lv_dtp IS NOT INITIAL.

            IF p_min = abap_true.
              lv_durmi = iv_durmi.
            ELSEIF p_hour = abap_true.
              lv_durho = iv_durmi.
            ENDIF.

            zgoog_cl_bqtr_gen_bw_object=>create_trigger(
              EXPORTING
                iv_trigger  = CONV #( iv_trig )
                iv_prdmin   = lv_durmi
                iv_prdhours = lv_durho
              IMPORTING
                ev_sy_subrc = lv_sy_subrc
                et_return   = lt_return
            ).
            add_status( iv_ds          = iv_ds
                        iv_description = 'Process Chain Trigger'
                        iv_value       = |{ iv_trig }|
                        it_return      = lt_return ).

            IF lv_sy_subrc = 0.

              zgoog_cl_bqtr_gen_bw_object=>create_process_chain(
                EXPORTING
                  iv_chain    = iv_chain
                  iv_infoara  = iv_info
                  iv_active   = iv_active
                  iv_trigger  = CONV #( iv_trig )
                  iv_dtp_load = CONV #( lv_dtp )
                  iv_adso     = CONV #( ls_tlogo_adso-objnm )
                IMPORTING
                  ev_sy_subrc = lv_sy_subrc
                  et_return   = lt_return
              ).
              add_status( iv_ds          = iv_ds
                          iv_description = 'Process Chain'
                          iv_value       = |{ iv_chain }|
                          it_return      = lt_return ).

            ENDIF.
          ENDIF.
        ENDIF.
      ENDIF.
    ENDIF.