mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Update local package mapping
This commit is contained in:
parent
b5e1345e8b
commit
f384330357
|
@ -25,6 +25,7 @@ CLASS lcl_dot_abapgit DEFINITION FINAL FRIENDS ltcl_dot_abapgit.
|
||||||
ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY,
|
ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY,
|
||||||
requirements TYPE ty_requirement_tt,
|
requirements TYPE ty_requirement_tt,
|
||||||
advanced_packages TYPE abap_bool,
|
advanced_packages TYPE abap_bool,
|
||||||
|
original_package TYPE devclass,
|
||||||
END OF ty_dot_abapgit.
|
END OF ty_dot_abapgit.
|
||||||
|
|
||||||
CLASS-METHODS:
|
CLASS-METHODS:
|
||||||
|
@ -71,7 +72,11 @@ CLASS lcl_dot_abapgit DEFINITION FINAL FRIENDS ltcl_dot_abapgit.
|
||||||
uses_advanced_packages
|
uses_advanced_packages
|
||||||
RETURNING VALUE(rv_advanced_packages) TYPE abap_bool,
|
RETURNING VALUE(rv_advanced_packages) TYPE abap_bool,
|
||||||
set_advanced_packages
|
set_advanced_packages
|
||||||
IMPORTING iv_use_advanced_packages TYPE abap_bool.
|
IMPORTING iv_use_advanced_packages TYPE abap_bool,
|
||||||
|
get_original_package
|
||||||
|
RETURNING VALUE(rv_package) TYPE devclass,
|
||||||
|
set_original_package
|
||||||
|
IMPORTING iv_package TYPE devclass.
|
||||||
|
|
||||||
PRIVATE SECTION.
|
PRIVATE SECTION.
|
||||||
DATA: ms_data TYPE ty_dot_abapgit.
|
DATA: ms_data TYPE ty_dot_abapgit.
|
||||||
|
@ -280,4 +285,12 @@ CLASS lcl_dot_abapgit IMPLEMENTATION.
|
||||||
ms_data-advanced_packages = iv_use_advanced_packages.
|
ms_data-advanced_packages = iv_use_advanced_packages.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD get_original_package.
|
||||||
|
rv_package = ms_data-original_package.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD set_original_package.
|
||||||
|
ms_data-original_package = iv_package.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
|
@ -164,8 +164,14 @@ CLASS lcl_file_status IMPLEMENTATION.
|
||||||
|
|
||||||
IF lo_dot_abapgit->is_ignored(
|
IF lo_dot_abapgit->is_ignored(
|
||||||
iv_path = <ls_result>-path
|
iv_path = <ls_result>-path
|
||||||
iv_filename = <ls_result>-filename ) = abap_true. "OR <ls_result>-obj_type = 'DEVC' ##TODO.
|
iv_filename = <ls_result>-filename ) = abap_true.
|
||||||
DELETE rt_results INDEX lv_index.
|
DELETE rt_results INDEX lv_index.
|
||||||
|
CONTINUE.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
IF <ls_result>-obj_type = 'DEVC'.
|
||||||
|
CLEAR <ls_result>-package. " Needs to be cleared, otherwise later an assertion fails, which
|
||||||
|
" checks the installation package.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
@ -224,7 +230,6 @@ CLASS lcl_file_status IMPLEMENTATION.
|
||||||
ev_is_xml = lv_is_xml ).
|
ev_is_xml = lv_is_xml ).
|
||||||
|
|
||||||
CHECK lv_is_xml = abap_true. " Skip all but obj definitions
|
CHECK lv_is_xml = abap_true. " Skip all but obj definitions
|
||||||
CHECK ls_item-obj_type <> 'DEVC' ##TODO.
|
|
||||||
|
|
||||||
ls_item-devclass = lcl_tadir=>get_object_package(
|
ls_item-devclass = lcl_tadir=>get_object_package(
|
||||||
iv_object = ls_item-obj_type
|
iv_object = ls_item-obj_type
|
||||||
|
|
|
@ -11,14 +11,15 @@ CLASS lcl_folder_logic DEFINITION.
|
||||||
iv_top TYPE devclass
|
iv_top TYPE devclass
|
||||||
io_dot TYPE REF TO lcl_dot_abapgit
|
io_dot TYPE REF TO lcl_dot_abapgit
|
||||||
iv_package TYPE devclass
|
iv_package TYPE devclass
|
||||||
RETURNING
|
RETURNING VALUE(rv_path) TYPE string
|
||||||
VALUE(rv_path) TYPE string
|
|
||||||
RAISING zcx_abapgit_exception,
|
RAISING zcx_abapgit_exception,
|
||||||
path_to_package
|
path_to_package
|
||||||
IMPORTING
|
IMPORTING
|
||||||
iv_top TYPE devclass
|
iv_top TYPE devclass
|
||||||
io_dot TYPE REF TO lcl_dot_abapgit
|
io_dot TYPE REF TO lcl_dot_abapgit
|
||||||
iv_path TYPE string
|
iv_path TYPE string
|
||||||
|
iv_create_if_not_exists TYPE abap_bool DEFAULT abap_true
|
||||||
|
iv_local_path TYPE abap_bool DEFAULT abap_true
|
||||||
RETURNING
|
RETURNING
|
||||||
VALUE(rv_package) TYPE devclass
|
VALUE(rv_package) TYPE devclass
|
||||||
RAISING
|
RAISING
|
||||||
|
@ -33,16 +34,24 @@ CLASS lcl_folder_logic IMPLEMENTATION.
|
||||||
DATA: lv_length TYPE i,
|
DATA: lv_length TYPE i,
|
||||||
lv_parent TYPE devclass,
|
lv_parent TYPE devclass,
|
||||||
lv_new TYPE string,
|
lv_new TYPE string,
|
||||||
lv_path TYPE string.
|
lv_path TYPE string,
|
||||||
|
lv_top TYPE devclass.
|
||||||
|
|
||||||
|
lv_top = iv_top.
|
||||||
|
|
||||||
|
IF iv_local_path = abap_false AND io_dot->uses_advanced_packages( ) = abap_true AND
|
||||||
|
io_dot->get_original_package( ) <> lv_top.
|
||||||
|
|
||||||
|
lv_top = io_dot->get_original_package( ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
lv_length = strlen( io_dot->get_starting_folder( ) ).
|
lv_length = strlen( io_dot->get_starting_folder( ) ).
|
||||||
IF lv_length > strlen( iv_path ).
|
IF lv_length > strlen( iv_path ).
|
||||||
zcx_abapgit_exception=>raise( 'unexpected folder structure' ).
|
zcx_abapgit_exception=>raise( 'unexpected folder structure' ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
lv_path = iv_path+lv_length.
|
lv_path = iv_path+lv_length.
|
||||||
lv_parent = iv_top.
|
lv_parent = lv_top.
|
||||||
rv_package = iv_top.
|
rv_package = lv_top.
|
||||||
|
|
||||||
WHILE lv_path CA '/'.
|
WHILE lv_path CA '/'.
|
||||||
SPLIT lv_path AT '/' INTO lv_new lv_path.
|
SPLIT lv_path AT '/' INTO lv_new lv_path.
|
||||||
|
@ -62,14 +71,15 @@ CLASS lcl_folder_logic IMPLEMENTATION.
|
||||||
|
|
||||||
TRANSLATE rv_package TO UPPER CASE.
|
TRANSLATE rv_package TO UPPER CASE.
|
||||||
|
|
||||||
IF lcl_sap_package=>get( rv_package )->exists( ) = abap_false.
|
IF lcl_sap_package=>get( rv_package )->exists( ) = abap_false AND
|
||||||
|
iv_create_if_not_exists = abap_true.
|
||||||
|
|
||||||
lcl_sap_package=>get( lv_parent )->create_child( rv_package ).
|
lcl_sap_package=>get( lv_parent )->create_child( rv_package ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
lv_parent = rv_package.
|
lv_parent = rv_package.
|
||||||
ENDWHILE.
|
ENDWHILE.
|
||||||
|
|
||||||
|
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD package_to_path.
|
METHOD package_to_path.
|
||||||
|
@ -79,7 +89,6 @@ CLASS lcl_folder_logic IMPLEMENTATION.
|
||||||
lv_message TYPE string,
|
lv_message TYPE string,
|
||||||
lv_parentcl TYPE tdevc-parentcl.
|
lv_parentcl TYPE tdevc-parentcl.
|
||||||
|
|
||||||
|
|
||||||
IF iv_top = iv_package.
|
IF iv_top = iv_package.
|
||||||
rv_path = io_dot->get_starting_folder( ).
|
rv_path = io_dot->get_starting_folder( ).
|
||||||
ELSE.
|
ELSE.
|
||||||
|
|
|
@ -29,7 +29,7 @@ CLASS lcl_object_devc DEFINITION
|
||||||
DATA:
|
DATA:
|
||||||
mv_local_devclass TYPE devclass,
|
mv_local_devclass TYPE devclass,
|
||||||
mv_repo_devclass TYPE devclass,
|
mv_repo_devclass TYPE devclass,
|
||||||
mv_installation_package TYPE devclass.
|
mv_is_installation_package TYPE abap_bool.
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS lcl_object_devc IMPLEMENTATION.
|
CLASS lcl_object_devc IMPLEMENTATION.
|
||||||
|
@ -149,30 +149,36 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
||||||
CHANGING
|
CHANGING
|
||||||
cg_data = ls_package_data ).
|
cg_data = ls_package_data ).
|
||||||
|
|
||||||
* mv_local_devclass = mv_local_devclass.
|
ASSERT mv_repo_devclass = ls_package_data-devclass.
|
||||||
|
|
||||||
" Is it the top level package?
|
" Is it the top level package?
|
||||||
* IF ls_package_data-parentcl IS INITIAL.
|
IF ls_package_data-parentcl IS INITIAL.
|
||||||
|
mv_is_installation_package = abap_true.
|
||||||
* " Check if the local installation package has a different name
|
* " Check if the local installation package has a different name
|
||||||
* IF mv_installation_package <> ls_package_data-devclass.
|
* IF mv_installation_package <> ls_package_data-devclass.
|
||||||
* " The package is serialized under a different name -> change it
|
* " The package is serialized under a different name -> change it
|
||||||
* ls_package_data-devclass = mv_installation_package.
|
* ls_package_data-devclass = mv_installation_package.
|
||||||
* mv_local_devclass = mv_installation_package.
|
* mv_local_devclass = mv_installation_package.
|
||||||
* ENDIF.
|
* ENDIF.
|
||||||
* ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
li_package = get_package( mv_local_devclass ).
|
li_package = get_package( mv_local_devclass ).
|
||||||
|
|
||||||
|
" Swap out repository package name with the local installation package name
|
||||||
ls_package_data-devclass = mv_local_devclass.
|
ls_package_data-devclass = mv_local_devclass.
|
||||||
CLEAR ls_package_data-parentcl. ##TODO "
|
|
||||||
|
" Parent package is not changed. Assume the folder logic already created the package and set
|
||||||
|
" the hierarchy before.
|
||||||
|
CLEAR ls_package_data-parentcl.
|
||||||
|
|
||||||
ls_data_sign-ctext = abap_true.
|
ls_data_sign-ctext = abap_true.
|
||||||
* ls_data_sign-korrflag = abap_true.
|
* ls_data_sign-korrflag = abap_true.
|
||||||
ls_data_sign-as4user = abap_true.
|
ls_data_sign-as4user = abap_true.
|
||||||
ls_data_sign-pdevclass = abap_true.
|
ls_data_sign-pdevclass = abap_true.
|
||||||
ls_data_sign-dlvunit = abap_true.
|
* ls_data_sign-dlvunit = abap_true.
|
||||||
ls_data_sign-comp_posid = abap_true.
|
ls_data_sign-comp_posid = abap_true.
|
||||||
ls_data_sign-component = abap_true.
|
ls_data_sign-component = abap_true.
|
||||||
* ls_data_sign-parentcl = abap_true.
|
* ls_data_sign-parentcl = abap_true. " No parent package change here
|
||||||
ls_data_sign-perminher = abap_true.
|
ls_data_sign-perminher = abap_true.
|
||||||
ls_data_sign-intfprefx = abap_true.
|
ls_data_sign-intfprefx = abap_true.
|
||||||
ls_data_sign-packtype = abap_true.
|
ls_data_sign-packtype = abap_true.
|
||||||
|
@ -232,6 +238,7 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
||||||
|
|
||||||
ELSE.
|
ELSE.
|
||||||
" Package does not exist yet, create it
|
" Package does not exist yet, create it
|
||||||
|
" This shouldn't really happen, because the folder logic initially creates the packages.
|
||||||
cl_package_factory=>create_new_package(
|
cl_package_factory=>create_new_package(
|
||||||
IMPORTING
|
IMPORTING
|
||||||
e_package = li_package
|
e_package = li_package
|
||||||
|
@ -297,7 +304,8 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD lif_object~exists.
|
METHOD lif_object~exists.
|
||||||
ASSERT mv_local_devclass IS NOT INITIAL ##TODO.
|
ASSERT mv_local_devclass IS NOT INITIAL.
|
||||||
|
|
||||||
cl_package_helper=>check_package_existence(
|
cl_package_helper=>check_package_existence(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
i_package_name = mv_local_devclass
|
i_package_name = mv_local_devclass
|
||||||
|
@ -362,9 +370,9 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ls_package_data-devclass = mv_repo_devclass.
|
ls_package_data-devclass = mv_repo_devclass.
|
||||||
IF mv_local_devclass = mv_installation_package. ##TODO
|
* IF mv_is_installation_package = abap_true.
|
||||||
CLEAR ls_package_data-parentcl.
|
CLEAR ls_package_data-parentcl.
|
||||||
ENDIF.
|
* ENDIF.
|
||||||
|
|
||||||
" Clear administrative data to prevent diffs
|
" Clear administrative data to prevent diffs
|
||||||
CLEAR: ls_package_data-created_by,
|
CLEAR: ls_package_data-created_by,
|
||||||
|
@ -377,6 +385,12 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
||||||
CLEAR: ls_package_data-comp_text,
|
CLEAR: ls_package_data-comp_text,
|
||||||
ls_package_data-dlvu_text.
|
ls_package_data-dlvu_text.
|
||||||
|
|
||||||
|
" Clear things related to local installation package
|
||||||
|
CLEAR: ls_package_data-namespace,
|
||||||
|
ls_package_data-dlvunit.
|
||||||
|
|
||||||
|
CLEAR: ls_package_data-korrflag.
|
||||||
|
|
||||||
io_xml->add( iv_name = 'DEVC' ig_data = ls_package_data ).
|
io_xml->add( iv_name = 'DEVC' ig_data = ls_package_data ).
|
||||||
|
|
||||||
" Save package interface usages
|
" Save package interface usages
|
||||||
|
@ -403,6 +417,14 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
||||||
lcx_exception=>raise(
|
lcx_exception=>raise(
|
||||||
|Error from IF_PACKAGE_PERMISSION_TO_USE->GET_ALL_ATTRIBUTES { sy-subrc }| ).
|
|Error from IF_PACKAGE_PERMISSION_TO_USE->GET_ALL_ATTRIBUTES { sy-subrc }| ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
" Swap the package name
|
||||||
|
ls_usage_data-client_pak = mv_repo_devclass.
|
||||||
|
" The name of the package where the interface belongs to is also retrieved, but should not
|
||||||
|
" be serialized because it may be a local package name and not the 'original' one. The
|
||||||
|
" package interface name should be unique enough anyways.
|
||||||
|
CLEAR ls_usage_data-pack_name.
|
||||||
|
|
||||||
APPEND ls_usage_data TO lt_usage_data.
|
APPEND ls_usage_data TO lt_usage_data.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
|
|
@ -240,11 +240,10 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
ls_exclude-low = 'STOB'. " auto generated by core data services
|
ls_exclude-low = 'STOB'. " auto generated by core data services
|
||||||
APPEND ls_exclude TO lt_excludes.
|
APPEND ls_exclude TO lt_excludes.
|
||||||
|
|
||||||
##TODO.
|
IF io_dot IS NOT BOUND OR io_dot->uses_advanced_packages( ) = abap_false.
|
||||||
* IF sy-uname <> 'DEVELOPER' AND io_dot IS NOT BOUND OR io_dot->uses_advanced_packages( ) = abap_false.
|
ls_exclude-low = 'DEVC'.
|
||||||
* ls_exclude-low = 'DEVC'.
|
APPEND ls_exclude TO lt_excludes.
|
||||||
* APPEND ls_exclude TO lt_excludes.
|
ENDIF.
|
||||||
* ENDIF.
|
|
||||||
|
|
||||||
SELECT * FROM tadir
|
SELECT * FROM tadir
|
||||||
INTO CORRESPONDING FIELDS OF TABLE rt_tadir
|
INTO CORRESPONDING FIELDS OF TABLE rt_tadir
|
||||||
|
@ -259,6 +258,16 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
it_tadir = rt_tadir
|
it_tadir = rt_tadir
|
||||||
io_log = io_log ).
|
io_log = io_log ).
|
||||||
|
|
||||||
|
" Local packages are not in TADIR, only in TDEVC, act as if they were
|
||||||
|
IF io_dot->uses_advanced_packages( ) = abap_true AND
|
||||||
|
( iv_package CP '$*' ). " OR iv_package CP 'T*' ).
|
||||||
|
APPEND INITIAL LINE TO rt_tadir ASSIGNING <ls_tadir>.
|
||||||
|
<ls_tadir>-pgmid = 'R3TR'.
|
||||||
|
<ls_tadir>-object = 'DEVC'.
|
||||||
|
<ls_tadir>-obj_name = iv_package.
|
||||||
|
<ls_tadir>-devclass = iv_package.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
IF NOT io_dot IS INITIAL.
|
IF NOT io_dot IS INITIAL.
|
||||||
lv_path = lcl_folder_logic=>package_to_path(
|
lv_path = lcl_folder_logic=>package_to_path(
|
||||||
iv_top = iv_top
|
iv_top = iv_top
|
||||||
|
@ -280,7 +289,9 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
<ls_tadir>-obj_name = lcl_folder_logic=>path_to_package(
|
<ls_tadir>-obj_name = lcl_folder_logic=>path_to_package(
|
||||||
iv_top = iv_top
|
iv_top = iv_top
|
||||||
io_dot = io_dot
|
io_dot = io_dot
|
||||||
iv_path = lv_path ).
|
iv_path = lv_path
|
||||||
|
iv_local_path = abap_false
|
||||||
|
iv_create_if_not_exists = abap_false ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user