From 483982a134039f96bc538ab11466762a1cd97b57 Mon Sep 17 00:00:00 2001 From: Christian Guenter Date: Sat, 22 Apr 2017 20:35:31 +0000 Subject: [PATCH] DCLS added https://github.com/larshp/abapGit/issues/726 --- src/zabapgit_object_dcls.prog.abap | 188 ++++++++++++++++++++++ src/zabapgit_object_dcls.prog.xml | 22 +++ src/zabapgit_object_serializing.prog.abap | 1 + 3 files changed, 211 insertions(+) create mode 100644 src/zabapgit_object_dcls.prog.abap create mode 100644 src/zabapgit_object_dcls.prog.xml diff --git a/src/zabapgit_object_dcls.prog.abap b/src/zabapgit_object_dcls.prog.abap new file mode 100644 index 000000000..82dba491b --- /dev/null +++ b/src/zabapgit_object_dcls.prog.abap @@ -0,0 +1,188 @@ +*&---------------------------------------------------------------------* +*& Include zabapgit_object_dcls +*&---------------------------------------------------------------------* + +CLASS lcl_object_dcls DEFINITION INHERITING FROM lcl_objects_super FINAL. + + PUBLIC SECTION. + INTERFACES lif_object. + ALIASES mo_files FOR lif_object~mo_files. + +ENDCLASS. + +CLASS lcl_object_dcls IMPLEMENTATION. + + METHOD lif_object~has_changed_since. + rv_changed = abap_true. + ENDMETHOD. + + METHOD lif_object~changed_by. + rv_user = c_user_unknown. + ENDMETHOD. + + METHOD lif_object~get_metadata. + rs_metadata = get_metadata( ). + + rs_metadata-ddic = abap_true. + rs_metadata-delete_tadir = abap_true. + ENDMETHOD. + + METHOD lif_object~exists. + + DATA: li_dcl TYPE REF TO object. + + TRY. + CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') + RECEIVING + ro_handler = li_dcl. + + CALL METHOD li_dcl->('CHECK_EXISTENCE') + EXPORTING + iv_objectname = ms_item-obj_name + RECEIVING + rv_exists = rv_bool. + + CATCH cx_root. + rv_bool = abap_false. + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~jump. + + CALL FUNCTION 'RS_TOOL_ACCESS' + EXPORTING + operation = 'SHOW' + object_name = ms_item-obj_name + object_type = ms_item-obj_type. + + ENDMETHOD. + + METHOD lif_object~delete. + + DATA: li_dcl TYPE REF TO object. + + TRY. + CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') + RECEIVING + ro_handler = li_dcl. + + CALL METHOD li_dcl->('DELETE') + EXPORTING + iv_dclname = ms_item-obj_name. + + CATCH cx_root. + lcx_exception=>raise( 'DCLS error' ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~serialize. + + DATA: lr_data TYPE REF TO data, + li_dcl TYPE REF TO object. + + FIELD-SYMBOLS: TYPE any, + TYPE any. + + CREATE DATA lr_data TYPE ('ACM_S_DCLSRC'). + ASSIGN lr_data->* TO . + + TRY. + CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') + RECEIVING + ro_handler = li_dcl. + + CALL METHOD li_dcl->('READ') + EXPORTING + iv_dclname = ms_item-obj_name + IMPORTING + es_dclsrc = . + + + 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 'CREATED_BY' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'CREATED_DATE' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + CLEAR . + + ASSIGN COMPONENT 'SOURCE' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + + mo_files->add_string( iv_ext = 'asdcls' + iv_string = ). + + CLEAR . + + io_xml->add( iv_name = 'DCLS' + ig_data = ). + + CATCH cx_root. + lcx_exception=>raise( 'DCLS error' ). + ENDTRY. + + ENDMETHOD. + + METHOD lif_object~deserialize. + + DATA: lr_data TYPE REF TO data, + li_dcl TYPE REF TO object. + + FIELD-SYMBOLS: TYPE any, + TYPE any. + + CREATE DATA lr_data TYPE ('ACM_S_DCLSRC'). + ASSIGN lr_data->* TO . + + io_xml->read( + EXPORTING + iv_name = 'DCLS' + CHANGING + cg_data = ). + + ASSIGN COMPONENT 'SOURCE' OF STRUCTURE TO . + ASSERT sy-subrc = 0. + = mo_files->read_string( 'asdcls' ). + + TRY. + CALL METHOD ('CL_ACM_DCL_HANDLER_FACTORY')=>('CREATE') + RECEIVING + ro_handler = li_dcl. + + CALL METHOD li_dcl->('SAVE') + EXPORTING + iv_dclname = ms_item-obj_name + iv_put_state = 'A' + is_dclsrc = + iv_devclass = iv_package + iv_access_mode = 'INSERT'. + + tadir_insert( iv_package ). + + CATCH cx_root. + lcx_exception=>raise( 'DCLS error' ). + ENDTRY. + + lcl_objects_activation=>add_item( ms_item ). + + ENDMETHOD. + + METHOD lif_object~compare_to_remote_version. + CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result. + ENDMETHOD. + +ENDCLASS. diff --git a/src/zabapgit_object_dcls.prog.xml b/src/zabapgit_object_dcls.prog.xml new file mode 100644 index 000000000..b362e25f5 --- /dev/null +++ b/src/zabapgit_object_dcls.prog.xml @@ -0,0 +1,22 @@ + + + + + + ZABAPGIT_OBJECT_DCLS + A + X + I + E + X + + + + R + Include ZABAPGIT_OBJECT_DCLS + 28 + + + + + diff --git a/src/zabapgit_object_serializing.prog.abap b/src/zabapgit_object_serializing.prog.abap index 7c8aa5f11..7fe44f18d 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_dcls. INCLUDE zabapgit_object_ddls. INCLUDE zabapgit_object_doct. INCLUDE zabapgit_object_docv.