mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
folder support, close #5
objects will now serialize to the correct packages, which will be created automatically
This commit is contained in:
parent
5e87c81f6a
commit
80f03391c0
|
@ -3,7 +3,7 @@ REPORT zabapgit.
|
||||||
* See http://www.abapgit.org
|
* See http://www.abapgit.org
|
||||||
|
|
||||||
CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT
|
CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT
|
||||||
gc_abap_version TYPE string VALUE 'v1.9.18'. "#EC NOTEXT
|
gc_abap_version TYPE string VALUE 'v1.10.0'. "#EC NOTEXT
|
||||||
|
|
||||||
********************************************************************************
|
********************************************************************************
|
||||||
* The MIT License (MIT)
|
* The MIT License (MIT)
|
||||||
|
@ -2651,6 +2651,13 @@ CLASS lcl_diff IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD map_beacons.
|
METHOD map_beacons.
|
||||||
|
|
||||||
|
DEFINE _add_regex.
|
||||||
|
CREATE OBJECT lo_regex
|
||||||
|
EXPORTING pattern = &1
|
||||||
|
ignore_case = abap_true.
|
||||||
|
APPEND lo_regex TO lt_regex_set.
|
||||||
|
END-OF-DEFINITION.
|
||||||
|
|
||||||
DATA: lv_beacon TYPE i,
|
DATA: lv_beacon TYPE i,
|
||||||
lv_offs TYPE i,
|
lv_offs TYPE i,
|
||||||
lv_code_line TYPE string,
|
lv_code_line TYPE string,
|
||||||
|
@ -2659,12 +2666,6 @@ CLASS lcl_diff IMPLEMENTATION.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_diff> LIKE LINE OF mt_diff.
|
FIELD-SYMBOLS: <ls_diff> LIKE LINE OF mt_diff.
|
||||||
|
|
||||||
DEFINE _add_regex.
|
|
||||||
CREATE OBJECT lo_regex
|
|
||||||
EXPORTING pattern = &1
|
|
||||||
ignore_case = abap_true.
|
|
||||||
APPEND lo_regex TO lt_regex_set.
|
|
||||||
END-OF-DEFINITION.
|
|
||||||
|
|
||||||
_add_regex '^\s*(CLASS|FORM|MODULE|REPORT)\s'.
|
_add_regex '^\s*(CLASS|FORM|MODULE|REPORT)\s'.
|
||||||
_add_regex '^\s*START-OF-'.
|
_add_regex '^\s*START-OF-'.
|
||||||
|
@ -13144,6 +13145,13 @@ CLASS lcl_objects DEFINITION FINAL.
|
||||||
IMPORTING it_results TYPE lcl_file_status=>ty_results_tt
|
IMPORTING it_results TYPE lcl_file_status=>ty_results_tt
|
||||||
RETURNING VALUE(rt_results) TYPE lcl_file_status=>ty_results_tt.
|
RETURNING VALUE(rt_results) TYPE lcl_file_status=>ty_results_tt.
|
||||||
|
|
||||||
|
CLASS-METHODS
|
||||||
|
path_to_package
|
||||||
|
IMPORTING iv_top TYPE devclass
|
||||||
|
iv_path TYPE string
|
||||||
|
RETURNING VALUE(rv_package) TYPE devclass
|
||||||
|
RAISING lcx_exception.
|
||||||
|
|
||||||
CLASS-METHODS class_name
|
CLASS-METHODS class_name
|
||||||
IMPORTING is_item TYPE ty_item
|
IMPORTING is_item TYPE ty_item
|
||||||
RETURNING VALUE(rv_class_name) TYPE string.
|
RETURNING VALUE(rv_class_name) TYPE string.
|
||||||
|
@ -13314,18 +13322,30 @@ ENDCLASS. "lcl_tadir IMPLEMENTATION
|
||||||
CLASS lcl_sap_package DEFINITION FINAL.
|
CLASS lcl_sap_package DEFINITION FINAL.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
TYPES: ty_devclass_tt TYPE STANDARD TABLE OF devclass WITH DEFAULT KEY.
|
||||||
|
|
||||||
CLASS-METHODS:
|
CLASS-METHODS:
|
||||||
check
|
check
|
||||||
IMPORTING io_log TYPE REF TO lcl_log
|
IMPORTING io_log TYPE REF TO lcl_log
|
||||||
it_results TYPE lcl_file_status=>ty_results_tt
|
it_results TYPE lcl_file_status=>ty_results_tt
|
||||||
iv_start TYPE string
|
iv_start TYPE string
|
||||||
iv_top TYPE devclass,
|
iv_top TYPE devclass,
|
||||||
|
list_subpackages IMPORTING iv_package TYPE devclass
|
||||||
|
RETURNING VALUE(rt_list) TYPE ty_devclass_tt,
|
||||||
create_local
|
create_local
|
||||||
IMPORTING iv_package TYPE devclass
|
IMPORTING iv_package TYPE devclass
|
||||||
RAISING lcx_exception,
|
RAISING lcx_exception,
|
||||||
create
|
create
|
||||||
IMPORTING is_package TYPE scompkdtln
|
IMPORTING is_package TYPE scompkdtln
|
||||||
RAISING lcx_exception.
|
RETURNING VALUE(ri_package) TYPE REF TO if_package
|
||||||
|
RAISING lcx_exception,
|
||||||
|
create_child
|
||||||
|
IMPORTING iv_parent TYPE devclass
|
||||||
|
iv_child TYPE devclass
|
||||||
|
RAISING lcx_exception,
|
||||||
|
exists
|
||||||
|
IMPORTING iv_package TYPE devclass
|
||||||
|
RETURNING VALUE(rv_bool) TYPE abap_bool.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
CLASS-METHODS:
|
CLASS-METHODS:
|
||||||
|
@ -13599,11 +13619,57 @@ CLASS lcl_sap_package IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD. "check
|
ENDMETHOD. "check
|
||||||
|
|
||||||
|
METHOD exists.
|
||||||
|
|
||||||
|
cl_package_factory=>load_package(
|
||||||
|
EXPORTING
|
||||||
|
i_package_name = iv_package
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_existing = 1
|
||||||
|
unexpected_error = 2
|
||||||
|
intern_err = 3
|
||||||
|
no_access = 4
|
||||||
|
object_locked_and_modified = 5 ).
|
||||||
|
rv_bool = boolc( sy-subrc <> 1 ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD create_child.
|
||||||
|
|
||||||
|
DATA: li_parent TYPE REF TO if_package,
|
||||||
|
ls_child TYPE scompkdtln.
|
||||||
|
|
||||||
|
|
||||||
|
cl_package_factory=>load_package(
|
||||||
|
EXPORTING
|
||||||
|
i_package_name = iv_parent
|
||||||
|
IMPORTING
|
||||||
|
e_package = li_parent
|
||||||
|
EXCEPTIONS
|
||||||
|
object_not_existing = 1
|
||||||
|
unexpected_error = 2
|
||||||
|
intern_err = 3
|
||||||
|
no_access = 4
|
||||||
|
object_locked_and_modified = 5 ).
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
_raise 'error reading parent package'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ls_child-devclass = iv_child.
|
||||||
|
ls_child-ctext = iv_child.
|
||||||
|
ls_child-parentcl = iv_parent.
|
||||||
|
ls_child-component = li_parent->transport_layer.
|
||||||
|
ls_child-as4user = sy-uname.
|
||||||
|
|
||||||
|
create( ls_child ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD create.
|
METHOD create.
|
||||||
|
|
||||||
DATA: lv_err TYPE string,
|
DATA: lv_err TYPE string,
|
||||||
ls_package LIKE is_package,
|
li_super TYPE REF TO if_package,
|
||||||
li_package TYPE REF TO if_package.
|
ls_package LIKE is_package.
|
||||||
|
|
||||||
|
|
||||||
ASSERT NOT is_package-devclass IS INITIAL.
|
ASSERT NOT is_package-devclass IS INITIAL.
|
||||||
|
@ -13628,7 +13694,7 @@ CLASS lcl_sap_package IMPLEMENTATION.
|
||||||
i_reuse_deleted_object = abap_true
|
i_reuse_deleted_object = abap_true
|
||||||
* i_suppress_dialog = abap_true " does not exist in 730
|
* i_suppress_dialog = abap_true " does not exist in 730
|
||||||
IMPORTING
|
IMPORTING
|
||||||
e_package = li_package
|
e_package = ri_package
|
||||||
CHANGING
|
CHANGING
|
||||||
c_package_data = ls_package
|
c_package_data = ls_package
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
|
@ -13659,7 +13725,26 @@ CLASS lcl_sap_package IMPLEMENTATION.
|
||||||
_raise lv_err.
|
_raise lv_err.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
li_package->save(
|
* IF NOT ls_package-pdevclass IS INITIAL.
|
||||||
|
* cl_package_factory=>load_package(
|
||||||
|
* EXPORTING
|
||||||
|
* i_package_name = is_package-pdevclass
|
||||||
|
* IMPORTING
|
||||||
|
* e_package = li_super
|
||||||
|
* EXCEPTIONS
|
||||||
|
* object_not_existing = 1
|
||||||
|
* unexpected_error = 2
|
||||||
|
* intern_err = 3
|
||||||
|
* no_access = 4
|
||||||
|
* object_locked_and_modified = 5 ).
|
||||||
|
* IF sy-subrc <> 0.
|
||||||
|
* _raise 'error reading super package'.
|
||||||
|
* ENDIF.
|
||||||
|
|
||||||
|
* ri_package->set_super_package_name( PARENTCL ).
|
||||||
|
* ENDIF.
|
||||||
|
|
||||||
|
ri_package->save(
|
||||||
* EXPORTING
|
* EXPORTING
|
||||||
* i_suppress_dialog = abap_true " Controls whether popups can be transmitted
|
* i_suppress_dialog = abap_true " Controls whether popups can be transmitted
|
||||||
EXCEPTIONS
|
EXCEPTIONS
|
||||||
|
@ -13676,6 +13761,25 @@ CLASS lcl_sap_package IMPLEMENTATION.
|
||||||
_raise lv_err.
|
_raise lv_err.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
ri_package->set_changeable( abap_false ).
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD list_subpackages.
|
||||||
|
|
||||||
|
DATA: lt_list LIKE rt_list,
|
||||||
|
lv_devclass LIKE LINE OF rt_list.
|
||||||
|
|
||||||
|
|
||||||
|
SELECT devclass INTO TABLE rt_list
|
||||||
|
FROM tdevc WHERE parentcl = iv_package.
|
||||||
|
|
||||||
|
* note the recursion, since packages are added to the list
|
||||||
|
LOOP AT rt_list INTO lv_devclass.
|
||||||
|
lt_list = list_subpackages( lv_devclass ).
|
||||||
|
APPEND LINES OF lt_list TO rt_list.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD create_local.
|
METHOD create_local.
|
||||||
|
@ -13685,7 +13789,7 @@ CLASS lcl_sap_package IMPLEMENTATION.
|
||||||
|
|
||||||
ls_package-devclass = iv_package.
|
ls_package-devclass = iv_package.
|
||||||
ls_package-ctext = iv_package.
|
ls_package-ctext = iv_package.
|
||||||
ls_package-pdevclass = '$TMP'.
|
ls_package-parentcl = '$TMP'.
|
||||||
ls_package-component = 'LOCAL'.
|
ls_package-component = 'LOCAL'.
|
||||||
ls_package-as4user = sy-uname.
|
ls_package-as4user = sy-uname.
|
||||||
|
|
||||||
|
@ -13807,16 +13911,23 @@ CLASS lcl_objects IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD update_package_tree.
|
METHOD update_package_tree.
|
||||||
|
|
||||||
DATA: lv_tree TYPE dirtree-tname.
|
DATA: lt_packages TYPE lcl_sap_package=>ty_devclass_tt,
|
||||||
|
lv_package LIKE LINE OF lt_packages,
|
||||||
|
lv_tree TYPE dirtree-tname.
|
||||||
|
|
||||||
|
|
||||||
|
lt_packages = lcl_sap_package=>list_subpackages( iv_package ).
|
||||||
|
APPEND iv_package TO lt_packages.
|
||||||
|
|
||||||
|
LOOP AT lt_packages INTO lv_package.
|
||||||
* update package tree for SE80
|
* update package tree for SE80
|
||||||
lv_tree = 'EU_' && iv_package.
|
lv_tree = 'EU_' && lv_package.
|
||||||
CALL FUNCTION 'WB_TREE_ACTUALIZE'
|
CALL FUNCTION 'WB_TREE_ACTUALIZE'
|
||||||
EXPORTING
|
EXPORTING
|
||||||
tree_name = lv_tree
|
tree_name = lv_tree
|
||||||
without_crossreference = abap_true
|
without_crossreference = abap_true
|
||||||
with_tcode_index = abap_true.
|
with_tcode_index = abap_true.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
ENDMETHOD. "update_package_tree
|
ENDMETHOD. "update_package_tree
|
||||||
|
|
||||||
|
@ -13928,6 +14039,28 @@ CLASS lcl_objects IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD. "exists
|
ENDMETHOD. "exists
|
||||||
|
|
||||||
|
METHOD path_to_package.
|
||||||
|
|
||||||
|
DATA: lv_length TYPE i.
|
||||||
|
|
||||||
|
|
||||||
|
CONCATENATE iv_top iv_path INTO rv_package.
|
||||||
|
|
||||||
|
TRANSLATE rv_package USING '/_'.
|
||||||
|
|
||||||
|
lv_length = strlen( rv_package ) - 1.
|
||||||
|
|
||||||
|
rv_package = rv_package(lv_length).
|
||||||
|
|
||||||
|
TRANSLATE rv_package TO UPPER CASE.
|
||||||
|
|
||||||
|
IF lcl_sap_package=>exists( rv_package ) = abap_false.
|
||||||
|
lcl_sap_package=>create_child( iv_parent = iv_top
|
||||||
|
iv_child = rv_package ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD class_name.
|
METHOD class_name.
|
||||||
|
|
||||||
CONCATENATE 'LCL_OBJECT_' is_item-obj_type INTO rv_class_name. "#EC NOTEXT
|
CONCATENATE 'LCL_OBJECT_' is_item-obj_type INTO rv_class_name. "#EC NOTEXT
|
||||||
|
@ -14188,14 +14321,16 @@ CLASS lcl_objects IMPLEMENTATION.
|
||||||
METHOD deserialize.
|
METHOD deserialize.
|
||||||
|
|
||||||
TYPES: BEGIN OF ty_late,
|
TYPES: BEGIN OF ty_late,
|
||||||
obj TYPE REF TO lif_object,
|
obj TYPE REF TO lif_object,
|
||||||
xml TYPE REF TO lcl_xml_input,
|
xml TYPE REF TO lcl_xml_input,
|
||||||
|
package TYPE devclass,
|
||||||
END OF ty_late.
|
END OF ty_late.
|
||||||
|
|
||||||
DATA: ls_item TYPE ty_item,
|
DATA: ls_item TYPE ty_item,
|
||||||
lv_cancel TYPE abap_bool,
|
lv_cancel TYPE abap_bool,
|
||||||
li_obj TYPE REF TO lif_object,
|
li_obj TYPE REF TO lif_object,
|
||||||
lt_remote TYPE ty_files_tt,
|
lt_remote TYPE ty_files_tt,
|
||||||
|
lv_package TYPE devclass,
|
||||||
lo_files TYPE REF TO lcl_objects_files,
|
lo_files TYPE REF TO lcl_objects_files,
|
||||||
lo_xml TYPE REF TO lcl_xml_input,
|
lo_xml TYPE REF TO lcl_xml_input,
|
||||||
lt_results TYPE lcl_file_status=>ty_results_tt,
|
lt_results TYPE lcl_file_status=>ty_results_tt,
|
||||||
|
@ -14251,14 +14386,18 @@ CLASS lcl_objects IMPLEMENTATION.
|
||||||
|
|
||||||
li_obj->mo_files = lo_files.
|
li_obj->mo_files = lo_files.
|
||||||
|
|
||||||
|
lv_package = path_to_package( iv_top = io_repo->get_package( )
|
||||||
|
iv_path = <ls_result>-path ).
|
||||||
|
|
||||||
IF li_obj->get_metadata( )-late_deser = abap_true.
|
IF li_obj->get_metadata( )-late_deser = abap_true.
|
||||||
APPEND INITIAL LINE TO lt_late ASSIGNING <ls_late>.
|
APPEND INITIAL LINE TO lt_late ASSIGNING <ls_late>.
|
||||||
<ls_late>-obj = li_obj.
|
<ls_late>-obj = li_obj.
|
||||||
<ls_late>-xml = lo_xml.
|
<ls_late>-xml = lo_xml.
|
||||||
|
<ls_late>-package = lv_package.
|
||||||
CONTINUE.
|
CONTINUE.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
li_obj->deserialize( iv_package = io_repo->get_package( )
|
li_obj->deserialize( iv_package = lv_package
|
||||||
io_xml = lo_xml ).
|
io_xml = lo_xml ).
|
||||||
|
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
@ -14266,7 +14405,7 @@ CLASS lcl_objects IMPLEMENTATION.
|
||||||
lcl_objects_activation=>activate( ).
|
lcl_objects_activation=>activate( ).
|
||||||
|
|
||||||
LOOP AT lt_late ASSIGNING <ls_late>.
|
LOOP AT lt_late ASSIGNING <ls_late>.
|
||||||
<ls_late>-obj->deserialize( iv_package = io_repo->get_package( )
|
<ls_late>-obj->deserialize( iv_package = <ls_late>-package
|
||||||
io_xml = <ls_late>-xml ).
|
io_xml = <ls_late>-xml ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
@ -20053,7 +20192,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
||||||
lx_error TYPE REF TO lcx_exception,
|
lx_error TYPE REF TO lcx_exception,
|
||||||
lo_log TYPE REF TO lcl_log.
|
lo_log TYPE REF TO lcl_log.
|
||||||
|
|
||||||
FIELD-SYMBOLS <item> TYPE ty_repo_item.
|
FIELD-SYMBOLS <ls_item> LIKE LINE OF lt_repo_items.
|
||||||
|
|
||||||
|
|
||||||
CREATE OBJECT ro_html.
|
CREATE OBJECT ro_html.
|
||||||
|
|
||||||
|
@ -20074,8 +20214,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
||||||
&& '<center>Empty package</center>'
|
&& '<center>Empty package</center>'
|
||||||
&& '</td></tr>' ) ##NO_TEXT.
|
&& '</td></tr>' ) ##NO_TEXT.
|
||||||
ELSE.
|
ELSE.
|
||||||
LOOP AT lt_repo_items ASSIGNING <item>.
|
LOOP AT lt_repo_items ASSIGNING <ls_item>.
|
||||||
ro_html->add( render_repo_item( io_repo = io_repo is_item = <item> ) ).
|
ro_html->add( render_repo_item( io_repo = io_repo is_item = <ls_item> ) ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
@ -20359,7 +20499,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
IF iv_target_package IS NOT INITIAL AND iv_target_package <> lv_package.
|
IF iv_target_package IS NOT INITIAL AND iv_target_package <> lv_package.
|
||||||
lv_err = |Installation to package { lv_package } detected. Cancelling installation|.
|
lv_err = |Installation to package { lv_package
|
||||||
|
} detected. Cancelling installation|.
|
||||||
_raise lv_err.
|
_raise lv_err.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user