mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Initial support for DEVC
This commit is contained in:
parent
8eda51c010
commit
49ee7b9543
|
@ -19,11 +19,12 @@ CLASS lcl_dot_abapgit DEFINITION FINAL FRIENDS ltcl_dot_abapgit.
|
|||
END OF ty_requirement,
|
||||
ty_requirement_tt TYPE STANDARD TABLE OF ty_requirement WITH DEFAULT KEY,
|
||||
BEGIN OF ty_dot_abapgit,
|
||||
master_language TYPE spras,
|
||||
starting_folder TYPE string,
|
||||
folder_logic TYPE string,
|
||||
ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY,
|
||||
requirements TYPE ty_requirement_tt,
|
||||
master_language TYPE spras,
|
||||
starting_folder TYPE string,
|
||||
folder_logic TYPE string,
|
||||
ignore TYPE STANDARD TABLE OF string WITH DEFAULT KEY,
|
||||
requirements TYPE ty_requirement_tt,
|
||||
advanced_packages TYPE abap_bool,
|
||||
END OF ty_dot_abapgit.
|
||||
|
||||
CLASS-METHODS:
|
||||
|
@ -66,7 +67,11 @@ CLASS lcl_dot_abapgit DEFINITION FINAL FRIENDS ltcl_dot_abapgit.
|
|||
* IMPORTING iv_language TYPE spras,
|
||||
get_signature
|
||||
RETURNING VALUE(rs_signature) TYPE lif_defs=>ty_file_signature
|
||||
RAISING zcx_abapgit_exception.
|
||||
RAISING zcx_abapgit_exception,
|
||||
uses_advanced_packages
|
||||
RETURNING VALUE(rv_advanced_packages) TYPE abap_bool,
|
||||
set_advanced_packages
|
||||
IMPORTING iv_use_advanced_packages TYPE abap_bool.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA: ms_data TYPE ty_dot_abapgit.
|
||||
|
@ -119,9 +124,10 @@ CLASS lcl_dot_abapgit IMPLEMENTATION.
|
|||
DATA: ls_data TYPE ty_dot_abapgit.
|
||||
|
||||
|
||||
ls_data-master_language = sy-langu.
|
||||
ls_data-starting_folder = '/'.
|
||||
ls_data-folder_logic = c_folder_logic-prefix.
|
||||
ls_data-master_language = sy-langu.
|
||||
ls_data-starting_folder = '/'.
|
||||
ls_data-folder_logic = c_folder_logic-prefix.
|
||||
ls_data-advanced_packages = abap_false.
|
||||
|
||||
APPEND '/.gitignore' TO ls_data-ignore.
|
||||
APPEND '/LICENSE' TO ls_data-ignore.
|
||||
|
@ -266,4 +272,12 @@ CLASS lcl_dot_abapgit IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "get_signature
|
||||
|
||||
METHOD uses_advanced_packages.
|
||||
rv_advanced_packages = ms_data-advanced_packages.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_advanced_packages.
|
||||
ms_data-advanced_packages = iv_use_advanced_packages.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
532
src/zabapgit_object_devc.prog.abap
Normal file
532
src/zabapgit_object_devc.prog.abap
Normal file
|
@ -0,0 +1,532 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include zabapgit_object_devc
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_object_devc DEFINITION
|
||||
INHERITING FROM lcl_objects_super
|
||||
FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES:
|
||||
lif_object.
|
||||
ALIASES:
|
||||
mo_files FOR lif_object~mo_files.
|
||||
METHODS:
|
||||
constructor IMPORTING is_item TYPE lif_defs=>ty_item
|
||||
iv_language TYPE spras.
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
get_package IMPORTING iv_devclass TYPE devclass
|
||||
RETURNING VALUE(ri_package) TYPE REF TO if_package
|
||||
RAISING lcx_exception,
|
||||
update_pinf_usages IMPORTING ii_package TYPE REF TO if_package
|
||||
it_usage_data TYPE scomppdata
|
||||
RAISING lcx_exception,
|
||||
set_lock IMPORTING ii_package TYPE REF TO if_package
|
||||
iv_lock TYPE abap_bool
|
||||
RAISING lcx_exception.
|
||||
DATA:
|
||||
mv_devclass TYPE devclass,
|
||||
mv_local_devclass TYPE devclass,
|
||||
mv_installation_package TYPE devclass.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_object_devc IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
super->constructor( is_item = is_item
|
||||
iv_language = iv_language ).
|
||||
mv_devclass = is_item-obj_name.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD get_package.
|
||||
cl_package_factory=>load_package(
|
||||
EXPORTING
|
||||
i_package_name = iv_devclass
|
||||
i_force_reload = abap_true
|
||||
IMPORTING
|
||||
e_package = ri_package
|
||||
EXCEPTIONS
|
||||
object_not_existing = 1
|
||||
unexpected_error = 2
|
||||
intern_err = 3
|
||||
no_access = 4
|
||||
object_locked_and_modified = 5
|
||||
OTHERS = 6 ).
|
||||
IF sy-subrc = 1.
|
||||
RETURN.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from CL_PACKAGE_FACTORY=>LOAD_PACKAGE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = get_package( mv_devclass )->changed_by.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_comparison_null.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~delete.
|
||||
DATA: li_package TYPE REF TO if_package,
|
||||
lv_changeable TYPE abap_bool.
|
||||
|
||||
RETURN ##TODO.
|
||||
|
||||
" Package deletion is a bit tricky. A package can only be deleted if there are no objects
|
||||
" contained in it. This includes subpackages, so first the leaf packages need to be deleted.
|
||||
" Unfortunately deleted objects that are still contained in an unreleased transport request
|
||||
" also count towards the contained objects counter.
|
||||
|
||||
li_package = get_package( mv_devclass ).
|
||||
li_package->get_changeable( IMPORTING e_changeable = lv_changeable ).
|
||||
|
||||
IF lv_changeable = abap_false.
|
||||
li_package->set_changeable(
|
||||
EXPORTING
|
||||
i_changeable = abap_true
|
||||
EXCEPTIONS
|
||||
object_locked_by_other_user = 1
|
||||
permission_failure = 2
|
||||
object_already_changeable = 3
|
||||
object_already_unlocked = 4
|
||||
object_just_created = 5
|
||||
object_deleted = 6
|
||||
object_modified = 7
|
||||
object_not_existing = 8
|
||||
object_invalid = 9
|
||||
unexpected_error = 10
|
||||
OTHERS = 11 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE->SET_CHANGEABLE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
li_package->delete(
|
||||
EXCEPTIONS
|
||||
object_not_empty = 1
|
||||
object_not_changeable = 2
|
||||
object_invalid = 3
|
||||
intern_err = 4
|
||||
OTHERS = 5 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE->DELETE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
li_package->save(
|
||||
EXCEPTIONS
|
||||
object_invalid = 1
|
||||
object_not_changeable = 2
|
||||
cancelled_in_corr = 3
|
||||
permission_failure = 4
|
||||
unexpected_error = 5
|
||||
intern_err = 6
|
||||
OTHERS = 7 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE->SAVE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~deserialize.
|
||||
DATA: li_package TYPE REF TO if_package,
|
||||
ls_package_data TYPE scompkdtln,
|
||||
ls_data_sign TYPE scompksign,
|
||||
lv_changeable TYPE abap_bool,
|
||||
lt_usage_data TYPE scomppdata,
|
||||
lt_permissions TYPE tpak_permission_to_use_list,
|
||||
li_usage TYPE REF TO if_package_permission_to_use,
|
||||
ls_usage_data_sign TYPE scomppsign,
|
||||
ls_save_sign TYPE paksavsign.
|
||||
FIELD-SYMBOLS: <ls_usage_data> TYPE scomppdtln.
|
||||
|
||||
io_xml->read(
|
||||
EXPORTING
|
||||
iv_name = 'DEVC'
|
||||
CHANGING
|
||||
cg_data = ls_package_data ).
|
||||
|
||||
mv_local_devclass = mv_devclass.
|
||||
|
||||
" Is it the top level package?
|
||||
* IF ls_package_data-parentcl IS INITIAL.
|
||||
* " 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.
|
||||
|
||||
li_package = get_package( mv_devclass ).
|
||||
|
||||
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-comp_posid = abap_true.
|
||||
ls_data_sign-component = abap_true.
|
||||
ls_data_sign-parentcl = abap_true.
|
||||
ls_data_sign-perminher = abap_true.
|
||||
ls_data_sign-intfprefx = abap_true.
|
||||
ls_data_sign-packtype = abap_true.
|
||||
* ls_data_sign-restricted = abap_true.
|
||||
ls_data_sign-mainpack = abap_true.
|
||||
ls_data_sign-srv_check = abap_true.
|
||||
ls_data_sign-cli_check = abap_true.
|
||||
ls_data_sign-ext_alias = abap_true.
|
||||
ls_data_sign-project_guid = abap_true.
|
||||
ls_data_sign-project_id = abap_true.
|
||||
ls_data_sign-project_passdown = abap_true.
|
||||
|
||||
IF ls_package_data-ctext IS INITIAL.
|
||||
ls_package_data-ctext = mv_devclass.
|
||||
ENDIF.
|
||||
IF ls_package_data-dlvunit IS INITIAL.
|
||||
ls_package_data-dlvunit = 'HOME'.
|
||||
ENDIF.
|
||||
|
||||
ls_package_data-as4user = cl_abap_syst=>get_user_name( ).
|
||||
|
||||
IF li_package IS BOUND.
|
||||
" Package already exists, change it
|
||||
set_lock( ii_package = li_package iv_lock = abap_true ).
|
||||
|
||||
li_package->set_all_attributes(
|
||||
EXPORTING
|
||||
i_package_data = ls_package_data
|
||||
i_data_sign = ls_data_sign
|
||||
EXCEPTIONS
|
||||
object_not_changeable = 1
|
||||
object_deleted = 2
|
||||
object_invalid = 3
|
||||
short_text_missing = 4
|
||||
author_not_existing = 5
|
||||
local_package = 6
|
||||
software_component_invalid = 7
|
||||
layer_invalid = 8
|
||||
korrflag_invalid = 9
|
||||
component_not_existing = 10
|
||||
component_missing = 11
|
||||
authorize_failure = 12
|
||||
prefix_in_use = 13
|
||||
unexpected_error = 14
|
||||
intern_err = 15
|
||||
wrong_mainpack_value = 16
|
||||
superpackage_invalid = 17
|
||||
OTHERS = 18 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE->SET_ALL_ATTRIBUTES { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
* " If the application component was cleared SET_ALL_ATTRIBUTES doesn't change it
|
||||
* IF ls_package_data-component IS INITIAL AND li_package->application_component IS NOT INITIAL.
|
||||
*
|
||||
* ENDIF.
|
||||
|
||||
ELSE.
|
||||
" Package does not exist yet, create it
|
||||
cl_package_factory=>create_new_package(
|
||||
IMPORTING
|
||||
e_package = li_package
|
||||
CHANGING
|
||||
c_package_data = ls_package_data
|
||||
EXCEPTIONS
|
||||
object_already_existing = 1
|
||||
object_just_created = 2
|
||||
not_authorized = 3
|
||||
wrong_name_prefix = 4
|
||||
undefined_name = 5
|
||||
reserved_local_name = 6
|
||||
invalid_package_name = 7
|
||||
short_text_missing = 8
|
||||
software_component_invalid = 9
|
||||
layer_invalid = 10
|
||||
author_not_existing = 11
|
||||
component_not_existing = 12
|
||||
component_missing = 13
|
||||
prefix_in_use = 14
|
||||
unexpected_error = 15
|
||||
intern_err = 16
|
||||
no_access = 17
|
||||
invalid_translation_depth = 18
|
||||
wrong_mainpack_value = 19
|
||||
superpackage_invalid = 20
|
||||
error_in_cts_checks = 21
|
||||
OTHERS = 22 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from CL_PACKAGE_FACTORY=>CREATE_NEW_PACKAGE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
" Load package interface usages
|
||||
TRY.
|
||||
io_xml->read(
|
||||
EXPORTING
|
||||
iv_name = 'PERMISSION'
|
||||
CHANGING
|
||||
cg_data = lt_usage_data ).
|
||||
CATCH lcx_exception ##NO_HANDLER.
|
||||
" No permissions saved
|
||||
ENDTRY.
|
||||
|
||||
update_pinf_usages( ii_package = li_package
|
||||
it_usage_data = lt_usage_data ).
|
||||
|
||||
ls_save_sign-pack = ls_save_sign-permis = ls_save_sign-elems = ls_save_sign-interf = abap_true.
|
||||
li_package->save_generic(
|
||||
EXPORTING
|
||||
i_save_sign = ls_save_sign
|
||||
EXCEPTIONS
|
||||
cancelled_in_corr = 1
|
||||
permission_failure = 2
|
||||
object_not_changeable = 3
|
||||
object_invalid = 4
|
||||
OTHERS = 5 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE->SAVE_GENERIC { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
set_lock( ii_package = li_package iv_lock = abap_false ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~exists.
|
||||
cl_package_helper=>check_package_existence(
|
||||
EXPORTING
|
||||
i_package_name = mv_devclass
|
||||
IMPORTING
|
||||
e_package_exists = rv_bool
|
||||
EXCEPTIONS
|
||||
intern_err = 1
|
||||
package_hierarchy_error = 2
|
||||
OTHERS = 3 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from CL_PACKAGE_HELPER=>CHECK_PACKAGE_EXISTENCE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
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
|
||||
EXCEPTIONS
|
||||
not_executed = 1
|
||||
invalid_object_type = 2
|
||||
OTHERS = 3.
|
||||
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from RS_TOOL_ACCESS, DEVC| ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~serialize.
|
||||
DATA: ls_package_data TYPE scompkdtln,
|
||||
li_package TYPE REF TO if_package,
|
||||
lt_intf_usages TYPE tpak_permission_to_use_list,
|
||||
lt_usage_data TYPE scomppdata,
|
||||
ls_usage_data TYPE scomppdtln,
|
||||
li_usage TYPE REF TO if_package_permission_to_use.
|
||||
|
||||
li_package = get_package( mv_devclass ).
|
||||
IF li_package IS NOT BOUND.
|
||||
lcx_exception=>raise( |Could not find package to serialize.| ).
|
||||
ENDIF.
|
||||
|
||||
li_package->get_all_attributes(
|
||||
IMPORTING
|
||||
e_package_data = ls_package_data
|
||||
EXCEPTIONS
|
||||
object_invalid = 1
|
||||
package_deleted = 2
|
||||
intern_err = 3
|
||||
OTHERS = 4 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE->GET_ALL_ATTRIBUTES { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
ls_package_data-devclass = mv_devclass.
|
||||
IF mv_devclass = mv_installation_package.
|
||||
CLEAR ls_package_data-parentcl.
|
||||
ENDIF.
|
||||
|
||||
io_xml->add( iv_name = 'DEVC' ig_data = ls_package_data ).
|
||||
|
||||
" Save package interface usages
|
||||
li_package->get_permissions_to_use(
|
||||
IMPORTING
|
||||
e_permissions = lt_intf_usages
|
||||
EXCEPTIONS
|
||||
object_invalid = 1
|
||||
unexpected_error = 2
|
||||
OTHERS = 3
|
||||
).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE->GET_PERMISSION_TO_USE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
LOOP AT lt_intf_usages INTO li_usage.
|
||||
li_usage->get_all_attributes(
|
||||
IMPORTING
|
||||
e_permission_data = ls_usage_data
|
||||
EXCEPTIONS
|
||||
object_invalid = 1
|
||||
intern_err = 2
|
||||
OTHERS = 3 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise(
|
||||
|Error from IF_PACKAGE_PERMISSION_TO_USE->GET_ALL_ATTRIBUTES { sy-subrc }| ).
|
||||
ENDIF.
|
||||
APPEND ls_usage_data TO lt_usage_data.
|
||||
ENDLOOP.
|
||||
|
||||
IF lt_usage_data IS NOT INITIAL.
|
||||
io_xml->add( iv_name = 'PERMISSION' ig_data = lt_usage_data ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD update_pinf_usages.
|
||||
DATA: lt_current_permissions TYPE tpak_permission_to_use_list,
|
||||
li_usage TYPE REF TO if_package_permission_to_use,
|
||||
ls_data_sign TYPE scomppsign,
|
||||
ls_add_permission_data TYPE pkgpermdat,
|
||||
lt_handled TYPE SORTED TABLE OF i WITH UNIQUE KEY table_line.
|
||||
FIELD-SYMBOLS: <ls_usage_data> LIKE LINE OF it_usage_data.
|
||||
|
||||
" Get the current permissions
|
||||
ii_package->get_permissions_to_use(
|
||||
IMPORTING
|
||||
e_permissions = lt_current_permissions
|
||||
EXCEPTIONS
|
||||
object_invalid = 1
|
||||
unexpected_error = 2
|
||||
OTHERS = 3 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE=>GET_PERMISSIONS_TO_USE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
ls_data_sign-err_sever = abap_true.
|
||||
|
||||
" New permissions
|
||||
LOOP AT it_usage_data ASSIGNING <ls_usage_data>.
|
||||
READ TABLE lt_current_permissions
|
||||
WITH KEY table_line->package_interface_name = <ls_usage_data>-intf_name
|
||||
INTO li_usage.
|
||||
|
||||
IF sy-subrc = 0 AND li_usage IS BOUND.
|
||||
INSERT sy-tabix INTO TABLE lt_handled.
|
||||
|
||||
" Permission already exists, update attributes
|
||||
li_usage->set_all_attributes(
|
||||
EXPORTING
|
||||
i_permission_data = <ls_usage_data>
|
||||
i_data_sign = ls_data_sign
|
||||
EXCEPTIONS
|
||||
object_not_changeable = 1
|
||||
object_invalid = 2
|
||||
intern_err = 3
|
||||
OTHERS = 4
|
||||
).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE_PERMISSION_TO_USE->SET_ALL_ATTRIBUTES { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
ELSE.
|
||||
" Permission does not exist yet, add it
|
||||
MOVE-CORRESPONDING <ls_usage_data> TO ls_add_permission_data.
|
||||
ii_package->add_permission_to_use(
|
||||
EXPORTING
|
||||
i_pkg_permission_data = ls_add_permission_data
|
||||
EXCEPTIONS
|
||||
object_not_changeable = 1
|
||||
object_access_error = 2
|
||||
object_already_existing = 3
|
||||
object_invalid = 4
|
||||
unexpected_error = 5
|
||||
OTHERS = 6 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE->ADD_PERMISSION_TO_USE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
|
||||
ENDIF.
|
||||
|
||||
FREE li_usage.
|
||||
ENDLOOP.
|
||||
|
||||
" Delete missing usages
|
||||
LOOP AT lt_current_permissions INTO li_usage.
|
||||
READ TABLE lt_handled WITH TABLE KEY table_line = sy-tabix TRANSPORTING NO FIELDS.
|
||||
IF sy-subrc = 0.
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
li_usage->delete(
|
||||
EXCEPTIONS
|
||||
object_not_changeable = 1
|
||||
object_invalid = 2
|
||||
deletion_not_allowed = 3
|
||||
intern_err = 4
|
||||
OTHERS = 5 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE->DELETE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD set_lock.
|
||||
DATA: lv_changeable TYPE abap_bool.
|
||||
|
||||
ii_package->get_changeable( IMPORTING e_changeable = lv_changeable ).
|
||||
IF lv_changeable <> iv_lock.
|
||||
ii_package->set_changeable(
|
||||
EXPORTING
|
||||
i_changeable = iv_lock
|
||||
EXCEPTIONS
|
||||
object_locked_by_other_user = 1
|
||||
permission_failure = 2
|
||||
object_already_changeable = 3
|
||||
object_already_unlocked = 4
|
||||
object_just_created = 5
|
||||
object_deleted = 6
|
||||
object_modified = 7
|
||||
object_not_existing = 8
|
||||
object_invalid = 9
|
||||
unexpected_error = 10
|
||||
OTHERS = 11 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE->SET_CHANGEABLE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
ii_package->set_permissions_changeable(
|
||||
EXPORTING
|
||||
i_changeable = iv_lock
|
||||
i_suppress_dialog = abap_true
|
||||
EXCEPTIONS
|
||||
object_already_changeable = 1
|
||||
object_already_unlocked = 2
|
||||
object_locked_by_other_user = 3
|
||||
object_modified = 4
|
||||
object_just_created = 5
|
||||
object_deleted = 6
|
||||
permission_failure = 7
|
||||
object_invalid = 8
|
||||
unexpected_error = 9
|
||||
OTHERS = 10 ).
|
||||
IF ( sy-subrc = 1 AND iv_lock = abap_true ) OR ( sy-subrc = 2 AND iv_lock = abap_false ).
|
||||
" There's no getter to find out beforehand...
|
||||
ELSEIF sy-subrc <> 0.
|
||||
lcx_exception=>raise( |Error from IF_PACKAGE->SET_PERMISSIONS_CHANGEABLE { sy-subrc }| ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
25
src/zabapgit_object_devc.prog.xml
Normal file
25
src/zabapgit_object_devc.prog.xml
Normal file
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_DEVC</NAME>
|
||||
<STATE>A</STATE>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL>S</DBAPL>
|
||||
<DBNA>D$</DBNA>
|
||||
<SUBC>I</SUBC>
|
||||
<FIXPT>X</FIXPT>
|
||||
<LDBNAME>D$S</LDBNAME>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<ENTRY>ZABAPGIT_OBJECT_DEVC</ENTRY>
|
||||
<LENGTH>20</LENGTH>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -12,6 +12,7 @@ INCLUDE zabapgit_object_clas_new.
|
|||
INCLUDE zabapgit_object_cmpt.
|
||||
INCLUDE zabapgit_object_dcls.
|
||||
INCLUDE zabapgit_object_ddls.
|
||||
INCLUDE zabapgit_object_devc.
|
||||
INCLUDE zabapgit_object_dial.
|
||||
INCLUDE zabapgit_object_doct.
|
||||
INCLUDE zabapgit_object_docv.
|
||||
|
|
|
@ -557,10 +557,16 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
APPEND <ls_result> TO rt_results.
|
||||
ENDLOOP.
|
||||
|
||||
* PINF has to be handled before DEVC for package interface usage
|
||||
LOOP AT it_results ASSIGNING <ls_result> WHERE obj_type = 'PINF'.
|
||||
APPEND <ls_result> TO rt_results.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT it_results ASSIGNING <ls_result>
|
||||
WHERE obj_type <> 'IASP'
|
||||
AND obj_type <> 'PROG'
|
||||
AND obj_type <> 'XSLT'.
|
||||
AND obj_type <> 'XSLT'
|
||||
AND obj_type <> 'PINF'.
|
||||
APPEND <ls_result> TO rt_results.
|
||||
ENDLOOP.
|
||||
|
||||
|
|
|
@ -157,7 +157,9 @@ CLASS lcl_sap_package IMPLEMENTATION.
|
|||
no_access = 4
|
||||
object_locked_and_modified = 5 ).
|
||||
IF sy-subrc = 0.
|
||||
RETURN. "Package already exists. We assume this is fine
|
||||
" Package already exists. We assume this is fine. Its properties might be changed later at
|
||||
" DEVC deserialization.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ls_package = is_package.
|
||||
|
|
|
@ -220,21 +220,35 @@ CLASS lcl_tadir IMPLEMENTATION.
|
|||
DATA: lt_tadir TYPE lif_defs=>ty_tadir_tt,
|
||||
lt_tdevc TYPE STANDARD TABLE OF tdevc,
|
||||
lv_path TYPE string,
|
||||
lo_skip_objects TYPE REF TO lcl_skip_objects.
|
||||
lo_skip_objects TYPE REF TO lcl_skip_objects,
|
||||
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.
|
||||
|
||||
ls_exclude-sign = 'I'.
|
||||
ls_exclude-option = 'EQ'.
|
||||
|
||||
ls_exclude-low = 'SOTR'.
|
||||
APPEND ls_exclude TO lt_excludes.
|
||||
ls_exclude-low = 'SFB1'.
|
||||
APPEND ls_exclude TO lt_excludes.
|
||||
ls_exclude-low = 'SFB2'.
|
||||
APPEND ls_exclude TO lt_excludes.
|
||||
ls_exclude-low = 'STOB'. " auto generated by core data services
|
||||
APPEND ls_exclude TO lt_excludes.
|
||||
|
||||
* 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.
|
||||
|
||||
SELECT * FROM tadir
|
||||
INTO CORRESPONDING FIELDS OF TABLE rt_tadir
|
||||
WHERE devclass = iv_package
|
||||
AND pgmid = 'R3TR'
|
||||
AND object <> 'DEVC'
|
||||
AND object <> 'SOTR'
|
||||
AND object <> 'SFB1'
|
||||
AND object <> 'SFB2'
|
||||
AND object <> 'STOB' " auto generated by core data services
|
||||
AND object NOT IN lt_excludes
|
||||
AND delflag = abap_false
|
||||
ORDER BY PRIMARY KEY. "#EC CI_GENBUFF "#EC CI_SUBRC
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user