create_cds

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


  METHOD create_cds.


    DATA: lv_putstate   TYPE objstate VALUE 'N',
          lv_name       TYPE ddlname,
          lv_devclass   TYPE devclass,
          lv_ddl_source TYPE ddlname,
          ls_ddddlsrcv  TYPE ddddlsrcv.

    DATA(lref_dd_ddl_handler) = cl_dd_ddl_handler_factory=>create( ).

    CLEAR : lv_ddl_source,lv_devclass.
    DATA:lo_header  TYPE REF TO cl_salv_form_layout_grid,
         lo_h_label TYPE REF TO cl_salv_form_label.

    lv_ddl_source = gs_excel_data-cdsviewname.


    CREATE OBJECT lo_header.

    CLEAR: ls_ddddlsrcv.
    ls_ddddlsrcv-source = iv_final_string.
    ls_ddddlsrcv-ddtext = iv_tabdesc.
    ls_ddddlsrcv-ddlanguage = sy-langu.
    ls_ddddlsrcv-ddlname = iv_ddl_source.
    TRY.

        CALL METHOD lref_dd_ddl_handler->save
          EXPORTING
            name         = lv_ddl_source
            put_state    = lv_putstate
            ddddlsrcv_wa = ls_ddddlsrcv.

      CATCH cx_dd_ddl_save.
    ENDTRY.
    IF sy-subrc = 0.
      TRY.
          CALL METHOD lref_dd_ddl_handler->activate
            EXPORTING
              name = lv_ddl_source.

        CATCH cx_dd_ddl_activate.

      ENDTRY.
    ENDIF.

    DATA : lv_subrc TYPE sysubrc.
    CLEAR lv_subrc.

    TRY.

        CALL METHOD lref_dd_ddl_handler->write_tadir
          EXPORTING
            objectname = gs_excel_data-cdsviewname
            devclass   = p_pkg "'ZCDS_WRAPPER_DS'
            prid       = -1
          RECEIVING
            rc         = lv_subrc.

      CATCH cx_dd_ddl_save. " Exception While Writing TADIR Entry
    ENDTRY.


    DATA : lv_order  TYPE trkorr,
           lv_task   TYPE trkorr,
           lv_subrc2 TYPE sysubrc,
           lv_subrc3 TYPE sysubrc.

    CLEAR: lv_order, lv_task, lv_subrc2, lv_subrc3.
    IF lv_subrc = 0.
      CALL METHOD lref_dd_ddl_handler->write_trkorr
        EXPORTING
          trkorr     = p_tr
          objectname = gs_excel_data-cdsviewname
          prid       = -1
        IMPORTING
          order      = lv_order
          task       = lv_task
          rc         = lv_subrc2.
      IF lv_subrc2 = 0 AND iv_sql_view IS NOT INITIAL.

        CALL METHOD lref_dd_ddl_handler->write_trkorr
          EXPORTING
            trkorr     = p_tr
            objectname = iv_sql_view
            prid       = -1
          IMPORTING
            order      = lv_order
            task       = lv_task
            rc         = lv_subrc3.
      ENDIF.

      CLEAR: gs_output.
      IF lv_subrc2 = 0. "AND lv_subrc2 = 0.

        gs_output-tablename = gs_excel_data-tablename.
        gs_output-cdsviewname = gs_excel_data-cdsviewname.
        gs_output-sqlviewname = iv_sql_view.
        gs_output-package = p_pkg.
        gs_output-transport = p_tr.
        gs_output-status = 'CDS view Created'.
      ELSE.
        gs_output-tablename = gs_excel_data-tablename.
        gs_output-cdsviewname = gs_excel_data-cdsviewname.
        gs_output-sqlviewname = iv_sql_view.
        gs_output-package = p_pkg.
        gs_output-transport = p_tr.
        gs_output-status = 'Some error occured'.
      ENDIF.
      IF p_old = abap_false.
        CLEAR: gs_output-sqlviewname.
      ENDIF.
      APPEND gs_output TO gt_output.

    ENDIF.
    CLEAR gs_output.