diff --git a/src/zabapgit_object_ddls.prog.abap b/src/zabapgit_object_ddls.prog.abap new file mode 100644 index 000000000..18b7c8022 --- /dev/null +++ b/src/zabapgit_object_ddls.prog.abap @@ -0,0 +1,170 @@ +*&---------------------------------------------------------------------* +*& Include ZABAPGIT_OBJECT_VIEW +*&---------------------------------------------------------------------* + +* todo: +* - downport + +*----------------------------------------------------------------------* +* CLASS lcl_object_view DEFINITION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* +CLASS lcl_object_ddls DEFINITION INHERITING FROM lcl_objects_super FINAL. + + PUBLIC SECTION. + INTERFACES lif_object. + ALIASES mo_files FOR lif_object~mo_files. + +ENDCLASS. "lcl_object_dtel DEFINITION + +*----------------------------------------------------------------------* +* CLASS lcl_object_view IMPLEMENTATION +*----------------------------------------------------------------------* +* +*----------------------------------------------------------------------* +CLASS lcl_object_ddls IMPLEMENTATION. + + METHOD lif_object~has_changed_since. + rv_changed = abap_true. + ENDMETHOD. "lif_object~has_changed_since + + METHOD lif_object~changed_by. +* todo + rv_user = c_user_unknown. + ENDMETHOD. "lif_object~changed_by + + METHOD lif_object~get_metadata. + rs_metadata = get_metadata( ). + + rs_metadata-ddic = abap_true. + rs_metadata-delete_tadir = abap_true. + ENDMETHOD. "lif_object~get_metadata + + METHOD lif_object~exists. +* todo + rv_bool = abap_true. + ENDMETHOD. "lif_object~exists + + METHOD lif_object~jump. + lcx_exception=>raise( 'todo, DDLS jump' ). + ENDMETHOD. "jump + + METHOD lif_object~delete. + + DATA: li_ddl TYPE REF TO object. + + + CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') + RECEIVING + handler = li_ddl. + + TRY. + CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~DELETE') + EXPORTING + name = ms_item-obj_name. + CATCH cx_root. + lcx_exception=>raise( 'DDLS error' ). + ENDTRY. + + ENDMETHOD. "delete + + METHOD lif_object~serialize. + + DATA: li_ddl TYPE REF TO object, + lv_source TYPE string, + lr_data TYPE REF TO data. + + FIELD-SYMBOLS: TYPE any, + TYPE any. + + + CREATE DATA lr_data TYPE ('DDDDLSRCV'). + ASSIGN lr_data->* TO . + + CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') + RECEIVING + handler = li_ddl. + + TRY. + CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~READ') + EXPORTING + name = ms_item-obj_name + get_state = 'A' + IMPORTING + ddddlsrcv_wa = . + CATCH cx_root. + lcx_exception=>raise( 'DDLS error' ). + ENDTRY. + + ASSIGN COMPONENT 'AS4USER' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + ASSIGN COMPONENT 'AS4DATE' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + ASSIGN COMPONENT 'AS4TIME' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'SOURCE' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + + mo_files->add_string( iv_ext = 'asddls' + iv_string = ) ##no_text. + + CLEAR . + + io_xml->add( iv_name = 'DDLS' + ig_data = ). + + ENDMETHOD. "serialize + + METHOD lif_object~deserialize. + + DATA: li_ddl TYPE REF TO object, + lr_data TYPE REF TO data. + + FIELD-SYMBOLS: TYPE any, + TYPE any. + + + CREATE DATA lr_data TYPE ('DDDDLSRCV'). + ASSIGN lr_data->* TO . + + io_xml->read( EXPORTING iv_name = 'DDLS' + CHANGING cg_data = ). + + ASSIGN COMPONENT 'SOURCE' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + = mo_files->read_string( 'asddls' ) ##no_text. + + CALL METHOD ('CL_DD_DDL_HANDLER_FACTORY')=>('CREATE') + RECEIVING + handler = li_ddl. + + TRY. + CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~SAVE') + EXPORTING + name = ms_item-obj_name + put_state = 'N' + ddddlsrcv_wa = . + + CALL METHOD li_ddl->('IF_DD_DDL_HANDLER~WRITE_TADIR') + EXPORTING + objectname = ms_item-obj_name + devclass = iv_package + prid = 0. + CATCH cx_root. + lcx_exception=>raise( 'DDLS error' ). + ENDTRY. + + lcl_objects_activation=>add_item( ms_item ). + + ENDMETHOD. "deserialize + + METHOD lif_object~compare_to_remote_version. + CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. + ENDMETHOD. "lif_object~compare_to_remote_version + +ENDCLASS. "lcl_object_view IMPLEMENTATION diff --git a/src/zabapgit_object_ddls.prog.xml b/src/zabapgit_object_ddls.prog.xml new file mode 100644 index 000000000..b9c4d376d --- /dev/null +++ b/src/zabapgit_object_ddls.prog.xml @@ -0,0 +1,22 @@ + + + + + + ZABAPGIT_OBJECT_DDLS + A + X + I + E + X + + + + R + Include ZABAPGIT_OBJECT_VIEW + 28 + + + + + diff --git a/src/zabapgit_object_serializing.prog.abap b/src/zabapgit_object_serializing.prog.abap index a15b14df5..4e34ba17e 100644 --- a/src/zabapgit_object_serializing.prog.abap +++ b/src/zabapgit_object_serializing.prog.abap @@ -8,6 +8,7 @@ INCLUDE zabapgit_object_acid. INCLUDE zabapgit_object_auth. INCLUDE zabapgit_object_oo_functions. INCLUDE zabapgit_object_clas. +INCLUDE zabapgit_object_ddls. INCLUDE zabapgit_object_doct. INCLUDE zabapgit_object_docv. INCLUDE zabapgit_object_doma. diff --git a/src/zabapgit_object_view.prog.abap b/src/zabapgit_object_view.prog.abap index 49632e13f..da3799483 100644 --- a/src/zabapgit_object_view.prog.abap +++ b/src/zabapgit_object_view.prog.abap @@ -56,7 +56,7 @@ CLASS lcl_object_view IMPLEMENTATION. rv_user = c_user_unknown. ENDIF. - ENDMETHOD. + ENDMETHOD. "lif_object~changed_by METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). @@ -65,7 +65,8 @@ CLASS lcl_object_view IMPLEMENTATION. METHOD lif_object~exists. - DATA: lv_viewname TYPE dd25l-viewname. + DATA: lv_viewname TYPE dd25l-viewname, + lv_ddl_view TYPE abap_bool. SELECT SINGLE viewname FROM dd25l INTO lv_viewname @@ -74,6 +75,21 @@ CLASS lcl_object_view IMPLEMENTATION. AND as4vers = '0000'. rv_bool = boolc( sy-subrc = 0 ). + IF rv_bool = abap_true. + TRY. + CALL METHOD ('CL_DD_DDL_UTILITIES')=>('CHECK_FOR_DDL_VIEW') + EXPORTING + objname = lv_viewname + RECEIVING + is_ddl_view = lv_ddl_view. + + IF lv_ddl_view = abap_true. + rv_bool = abap_false. + ENDIF. + CATCH cx_root. + ENDTRY. + ENDIF. + ENDMETHOD. "lif_object~exists METHOD lif_object~jump. @@ -246,6 +262,6 @@ CLASS lcl_object_view IMPLEMENTATION. METHOD lif_object~compare_to_remote_version. CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. - ENDMETHOD. + ENDMETHOD. "lif_object~compare_to_remote_version ENDCLASS. "lcl_object_view IMPLEMENTATION diff --git a/src/zabapgit_tadir.prog.abap b/src/zabapgit_tadir.prog.abap index 660c64914..10dd69ff8 100644 --- a/src/zabapgit_tadir.prog.abap +++ b/src/zabapgit_tadir.prog.abap @@ -141,6 +141,7 @@ CLASS lcl_tadir IMPLEMENTATION. AND object <> 'SOTR' AND object <> 'SFB1' AND object <> 'SFB2' + AND object <> 'STOB' " auto generated by core data services AND delflag = abap_false ORDER BY PRIMARY KEY. "#EC CI_GENBUFF "#EC CI_SUBRC