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,
|
||||
requirements TYPE ty_requirement_tt,
|
||||
advanced_packages TYPE abap_bool,
|
||||
original_package TYPE devclass,
|
||||
END OF ty_dot_abapgit.
|
||||
|
||||
CLASS-METHODS:
|
||||
|
@ -71,7 +72,11 @@ CLASS lcl_dot_abapgit DEFINITION FINAL FRIENDS ltcl_dot_abapgit.
|
|||
uses_advanced_packages
|
||||
RETURNING VALUE(rv_advanced_packages) TYPE abap_bool,
|
||||
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.
|
||||
DATA: ms_data TYPE ty_dot_abapgit.
|
||||
|
@ -280,4 +285,12 @@ CLASS lcl_dot_abapgit IMPLEMENTATION.
|
|||
ms_data-advanced_packages = iv_use_advanced_packages.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_original_package.
|
||||
rv_package = ms_data-original_package.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_original_package.
|
||||
ms_data-original_package = iv_package.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -164,8 +164,14 @@ CLASS lcl_file_status IMPLEMENTATION.
|
|||
|
||||
IF lo_dot_abapgit->is_ignored(
|
||||
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.
|
||||
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.
|
||||
ENDLOOP.
|
||||
|
||||
|
@ -224,7 +230,6 @@ CLASS lcl_file_status IMPLEMENTATION.
|
|||
ev_is_xml = lv_is_xml ).
|
||||
|
||||
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(
|
||||
iv_object = ls_item-obj_type
|
||||
|
|
|
@ -8,19 +8,20 @@ CLASS lcl_folder_logic DEFINITION.
|
|||
CLASS-METHODS:
|
||||
package_to_path
|
||||
IMPORTING
|
||||
iv_top TYPE devclass
|
||||
io_dot TYPE REF TO lcl_dot_abapgit
|
||||
iv_package TYPE devclass
|
||||
RETURNING
|
||||
VALUE(rv_path) TYPE string
|
||||
iv_top TYPE devclass
|
||||
io_dot TYPE REF TO lcl_dot_abapgit
|
||||
iv_package TYPE devclass
|
||||
RETURNING VALUE(rv_path) TYPE string
|
||||
RAISING zcx_abapgit_exception,
|
||||
path_to_package
|
||||
IMPORTING
|
||||
iv_top TYPE devclass
|
||||
io_dot TYPE REF TO lcl_dot_abapgit
|
||||
iv_path TYPE string
|
||||
iv_top TYPE devclass
|
||||
io_dot TYPE REF TO lcl_dot_abapgit
|
||||
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
|
||||
VALUE(rv_package) TYPE devclass
|
||||
VALUE(rv_package) TYPE devclass
|
||||
RAISING
|
||||
zcx_abapgit_exception.
|
||||
|
||||
|
@ -33,16 +34,24 @@ CLASS lcl_folder_logic IMPLEMENTATION.
|
|||
DATA: lv_length TYPE i,
|
||||
lv_parent TYPE devclass,
|
||||
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( ) ).
|
||||
IF lv_length > strlen( iv_path ).
|
||||
zcx_abapgit_exception=>raise( 'unexpected folder structure' ).
|
||||
ENDIF.
|
||||
lv_path = iv_path+lv_length.
|
||||
lv_parent = iv_top.
|
||||
rv_package = iv_top.
|
||||
lv_parent = lv_top.
|
||||
rv_package = lv_top.
|
||||
|
||||
WHILE lv_path CA '/'.
|
||||
SPLIT lv_path AT '/' INTO lv_new lv_path.
|
||||
|
@ -62,14 +71,15 @@ CLASS lcl_folder_logic IMPLEMENTATION.
|
|||
|
||||
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 ).
|
||||
ENDIF.
|
||||
|
||||
lv_parent = rv_package.
|
||||
ENDWHILE.
|
||||
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD package_to_path.
|
||||
|
@ -79,7 +89,6 @@ CLASS lcl_folder_logic IMPLEMENTATION.
|
|||
lv_message TYPE string,
|
||||
lv_parentcl TYPE tdevc-parentcl.
|
||||
|
||||
|
||||
IF iv_top = iv_package.
|
||||
rv_path = io_dot->get_starting_folder( ).
|
||||
ELSE.
|
||||
|
@ -137,13 +146,13 @@ CLASS ltcl_folder_logic_helper DEFINITION FOR TESTING FINAL.
|
|||
|
||||
PUBLIC SECTION.
|
||||
CLASS-METHODS: test
|
||||
IMPORTING
|
||||
iv_starting TYPE string
|
||||
iv_top TYPE devclass
|
||||
iv_logic TYPE string
|
||||
iv_package TYPE devclass
|
||||
iv_path TYPE string
|
||||
RAISING zcx_abapgit_exception.
|
||||
IMPORTING
|
||||
iv_starting TYPE string
|
||||
iv_top TYPE devclass
|
||||
iv_logic TYPE string
|
||||
iv_package TYPE devclass
|
||||
iv_path TYPE string
|
||||
RAISING zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
|
|
@ -27,9 +27,9 @@ CLASS lcl_object_devc DEFINITION
|
|||
iv_lock TYPE abap_bool
|
||||
RAISING lcx_exception.
|
||||
DATA:
|
||||
mv_local_devclass TYPE devclass,
|
||||
mv_repo_devclass TYPE devclass,
|
||||
mv_installation_package TYPE devclass.
|
||||
mv_local_devclass TYPE devclass,
|
||||
mv_repo_devclass TYPE devclass,
|
||||
mv_is_installation_package TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_object_devc IMPLEMENTATION.
|
||||
|
@ -149,30 +149,36 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
|||
CHANGING
|
||||
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?
|
||||
* 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
|
||||
* IF mv_installation_package <> ls_package_data-devclass.
|
||||
* " The package is serialized under a different name -> change it
|
||||
* ls_package_data-devclass = mv_installation_package.
|
||||
* mv_local_devclass = mv_installation_package.
|
||||
* ENDIF.
|
||||
* ENDIF.
|
||||
ENDIF.
|
||||
|
||||
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.
|
||||
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-korrflag = abap_true.
|
||||
ls_data_sign-as4user = 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-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-intfprefx = abap_true.
|
||||
ls_data_sign-packtype = abap_true.
|
||||
|
@ -232,6 +238,7 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
|||
|
||||
ELSE.
|
||||
" 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(
|
||||
IMPORTING
|
||||
e_package = li_package
|
||||
|
@ -297,7 +304,8 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
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(
|
||||
EXPORTING
|
||||
i_package_name = mv_local_devclass
|
||||
|
@ -362,9 +370,9 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
ls_package_data-devclass = mv_repo_devclass.
|
||||
IF mv_local_devclass = mv_installation_package. ##TODO
|
||||
CLEAR ls_package_data-parentcl.
|
||||
ENDIF.
|
||||
* IF mv_is_installation_package = abap_true.
|
||||
CLEAR ls_package_data-parentcl.
|
||||
* ENDIF.
|
||||
|
||||
" Clear administrative data to prevent diffs
|
||||
CLEAR: ls_package_data-created_by,
|
||||
|
@ -377,6 +385,12 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
|||
CLEAR: ls_package_data-comp_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 ).
|
||||
|
||||
" Save package interface usages
|
||||
|
@ -403,6 +417,14 @@ CLASS lcl_object_devc IMPLEMENTATION.
|
|||
lcx_exception=>raise(
|
||||
|Error from IF_PACKAGE_PERMISSION_TO_USE->GET_ALL_ATTRIBUTES { sy-subrc }| ).
|
||||
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.
|
||||
ENDLOOP.
|
||||
|
||||
|
|
|
@ -222,8 +222,8 @@ CLASS lcl_tadir IMPLEMENTATION.
|
|||
lt_tdevc TYPE STANDARD TABLE OF tdevc,
|
||||
lv_path TYPE string,
|
||||
lo_skip_objects TYPE REF TO lcl_skip_objects,
|
||||
lt_excludes TYPE RANGE OF trobjtype,
|
||||
ls_exclude LIKE LINE OF lt_excludes.
|
||||
lt_excludes TYPE RANGE OF trobjtype,
|
||||
ls_exclude LIKE LINE OF lt_excludes.
|
||||
|
||||
FIELD-SYMBOLS: <ls_tdevc> LIKE LINE OF lt_tdevc,
|
||||
<ls_tadir> LIKE LINE OF rt_tadir.
|
||||
|
@ -240,11 +240,10 @@ CLASS lcl_tadir IMPLEMENTATION.
|
|||
ls_exclude-low = 'STOB'. " auto generated by core data services
|
||||
APPEND ls_exclude TO lt_excludes.
|
||||
|
||||
##TODO.
|
||||
* IF sy-uname <> 'DEVELOPER' AND io_dot IS NOT BOUND OR io_dot->uses_advanced_packages( ) = abap_false.
|
||||
* ls_exclude-low = 'DEVC'.
|
||||
* APPEND ls_exclude TO lt_excludes.
|
||||
* ENDIF.
|
||||
IF io_dot IS NOT BOUND OR io_dot->uses_advanced_packages( ) = abap_false.
|
||||
ls_exclude-low = 'DEVC'.
|
||||
APPEND ls_exclude TO lt_excludes.
|
||||
ENDIF.
|
||||
|
||||
SELECT * FROM tadir
|
||||
INTO CORRESPONDING FIELDS OF TABLE rt_tadir
|
||||
|
@ -259,6 +258,16 @@ CLASS lcl_tadir IMPLEMENTATION.
|
|||
it_tadir = rt_tadir
|
||||
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.
|
||||
lv_path = lcl_folder_logic=>package_to_path(
|
||||
iv_top = iv_top
|
||||
|
@ -278,9 +287,11 @@ CLASS lcl_tadir IMPLEMENTATION.
|
|||
" The package on this system might be named differently to the one in the repository.
|
||||
IF io_dot IS BOUND.
|
||||
<ls_tadir>-obj_name = lcl_folder_logic=>path_to_package(
|
||||
iv_top = iv_top
|
||||
io_dot = io_dot
|
||||
iv_path = lv_path ).
|
||||
iv_top = iv_top
|
||||
io_dot = io_dot
|
||||
iv_path = lv_path
|
||||
iv_local_path = abap_false
|
||||
iv_create_if_not_exists = abap_false ).
|
||||
ENDIF.
|
||||
|
||||
ENDCASE.
|
||||
|
|
Loading…
Reference in New Issue
Block a user