create_objects

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


  METHOD create_objects.
    DATA: lv_sql_view(16) TYPE c,
          lv_final_string TYPE string.

    ev_ddl_source = gs_excel_data-cdsviewname.

    DATA(lv_def_view) = 'define view'.
    DATA(lv_sel_from) = 'as select from'.
    DATA : lv_lb(1)       TYPE c VALUE '{',
           lv_rb(1)       TYPE c VALUE '}',
           lv_sqlviewdesc TYPE string.

    SELECT SINGLE ddtext FROM dd02t INTO @ev_tabdesc WHERE tabname = @gs_excel_data-tablename AND  ddlanguage = 'E'.
    CONCATENATE ev_tabdesc 'CDS View' INTO ev_tabdesc SEPARATED BY space.
    CONCATENATE ev_tabdesc 'SQL View' INTO lv_sqlviewdesc SEPARATED BY space.
    CONCATENATE lv_sel_from gs_excel_data-tablename INTO DATA(lv_sel_table) SEPARATED BY space.


    "prepare the sql view name
    IF gs_excel_data-sqlviewname IS INITIAL.
      CONCATENATE 'Z_' gs_excel_data-tablename '_SQL' INTO lv_sql_view.
    ELSE.
      lv_sql_view = gs_excel_data-sqlviewname.
    ENDIF.
    TRANSLATE lv_sql_view TO UPPER CASE.
    CONCATENATE '@AbapCatalog.sqlViewName:' space '''' lv_sql_view '''' INTO DATA(lv_sqlview_ann).

    DATA(lv_string1) = lv_sqlview_ann.
    DATA : lv_excel_tabname(30) TYPE c.
    lv_excel_tabname = gs_excel_data-tablename.
    TRANSLATE lv_excel_tabname TO LOWER CASE.

    IF p_old = abap_true.

      "annotations for header , delta and extractor enablement
      CONCATENATE cl_abap_char_utilities=>newline
                  '@AbapCatalog.compiler.compareFilter: true' cl_abap_char_utilities=>newline
                  '@AbapCatalog.preserveKey: true' cl_abap_char_utilities=>newline
                  '@AccessControl.authorizationCheck: #NOT_REQUIRED' cl_abap_char_utilities=>newline
                  '@EndUserText.label:' space '''' lv_sqlviewdesc '''' cl_abap_char_utilities=>newline INTO DATA(lv_string2) .
      CONCATENATE 'define view' gs_excel_data-cdsviewname 'as select from' gs_excel_data-tablename  INTO DATA(lv_string4) SEPARATED BY space.
    ELSE.
      CLEAR: lv_string1.
      CONCATENATE '@EndUserText.label:' space '''' lv_sqlviewdesc '''' cl_abap_char_utilities=>newline INTO lv_string2 .
      CONCATENATE 'define root view entity' gs_excel_data-cdsviewname 'as select from' gs_excel_data-tablename cl_abap_char_utilities=>newline INTO lv_string4 SEPARATED BY space.
    ENDIF.
    DATA(lv_string3) = '@Analytics.dataExtraction.enabled: true' && cl_abap_char_utilities=>newline &&
                       '@Analytics.dataCategory: #FACT' && cl_abap_char_utilities=>newline &&
                       '@Analytics.dataExtraction.delta.changeDataCapture.automatic: true' && cl_abap_char_utilities=>newline.

    CONCATENATE lv_lb gv_keyfieldlist INTO DATA(lv_string5) SEPARATED BY space.
    CONCATENATE gv_nonkeyfieldlist lv_rb INTO DATA(lv_string6) SEPARATED BY space.
    TRANSLATE lv_string5 TO LOWER CASE.
    TRANSLATE lv_string6 TO LOWER CASE.

    "concatenate different sections into a single string
    CONCATENATE lv_string1 lv_string2 lv_string3 lv_string4 lv_string5 lv_string6 INTO ev_final_string SEPARATED BY space.

    ev_sql_view = lv_sql_view.