Merge pull request #2 from larshp/master

pull from origin master
This commit is contained in:
apex8 2017-09-12 08:53:29 +02:00 committed by GitHub
commit 30794b77e8
13 changed files with 590 additions and 120 deletions

View File

@ -8,6 +8,14 @@ Legend
+ : added + : added
- : removed - : removed
2017-09-11 v1.41.2
------------------
* FUGR table maintenance, namespaces
* SICF show error message when deleting root node
* DDLS better error messages
* ENHS allow transport popup
+ experimental, optional opt-in: CLAS deserialization performance
2017-09-03 v1.41.1 2017-09-03 v1.41.1
------------------ ------------------
* DDLS changed_by * DDLS changed_by

View File

@ -31,9 +31,12 @@ Example: abapGit own .abapgit.xml
# Description # Description
## Location
The `.abapgit.xml` file must be located in the root folder of the git repository.
## Master Language ## Master Language
The language in which all documentation and dictionary elements texts will be created. Follows SAP `sy-langu` values. The language in which all documentation and dictionary elements texts will be created. Follows SAP `sy-langu` values. Note that this implies that all objects in a repository will/should have the same master language.
## Starting Folder ## Starting Folder
@ -69,4 +72,4 @@ will give folder structure /zsomething/zhello/
## Ignore ## Ignore
Files which abapGit will not download into your ABAP system. Files which abapGit will not download into your ABAP system.

View File

@ -7,7 +7,7 @@ TYPE-POOLS seop.
INTERFACE lif_defs. INTERFACE lif_defs.
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.41.1'. "#EC NOTEXT gc_abap_version TYPE string VALUE 'v1.41.2'. "#EC NOTEXT
TYPES: ty_type TYPE c LENGTH 6, TYPES: ty_type TYPE c LENGTH 6,
ty_bitbyte TYPE c LENGTH 8, ty_bitbyte TYPE c LENGTH 8,

View File

@ -18,32 +18,27 @@ CLASS lcl_object_clas DEFINITION INHERITING FROM lcl_objects_program.
iv_language TYPE spras. iv_language TYPE spras.
PROTECTED SECTION. PROTECTED SECTION.
METHODS deserialize_abap DATA: mo_object_oriented_object_fct TYPE REF TO lif_oo_object_fnc,
IMPORTING io_xml TYPE REF TO lcl_xml_input mv_skip_testclass TYPE abap_bool.
iv_package TYPE devclass
RAISING lcx_exception.
METHODS deserialize_docu
IMPORTING io_xml TYPE REF TO lcl_xml_input
RAISING lcx_exception.
DATA mo_object_oriented_object_fct TYPE REF TO lif_oo_object_fnc.
PRIVATE SECTION.
DATA mv_skip_testclass TYPE abap_bool.
METHODS deserialize_tpool
IMPORTING io_xml TYPE REF TO lcl_xml_input
RAISING lcx_exception.
METHODS deserialize_sotr
IMPORTING io_xml TYPE REF TO lcl_xml_input
iv_package TYPE devclass
RAISING lcx_exception.
METHODS serialize_xml
IMPORTING io_xml TYPE REF TO lcl_xml_output
RAISING lcx_exception.
METHODS:
deserialize_abap
IMPORTING io_xml TYPE REF TO lcl_xml_input
iv_package TYPE devclass
RAISING lcx_exception,
deserialize_docu
IMPORTING io_xml TYPE REF TO lcl_xml_input
RAISING lcx_exception,
deserialize_tpool
IMPORTING io_xml TYPE REF TO lcl_xml_input
RAISING lcx_exception,
deserialize_sotr
IMPORTING io_xml TYPE REF TO lcl_xml_input
iv_package TYPE devclass
RAISING lcx_exception,
serialize_xml
IMPORTING io_xml TYPE REF TO lcl_xml_output
RAISING lcx_exception.
ENDCLASS. "lcl_object_dtel DEFINITION ENDCLASS. "lcl_object_dtel DEFINITION
@ -366,6 +361,7 @@ CLASS lcl_object_clas IMPLEMENTATION.
iv_package = iv_package iv_package = iv_package
CHANGING CHANGING
is_properties = ls_vseoclass ). is_properties = ls_vseoclass ).
mo_object_oriented_object_fct->generate_locals( mo_object_oriented_object_fct->generate_locals(
is_key = ls_class_key is_key = ls_class_key
iv_force = seox_true iv_force = seox_true
@ -375,8 +371,8 @@ CLASS lcl_object_clas IMPLEMENTATION.
it_local_test_classes = lt_test_classes ). it_local_test_classes = lt_test_classes ).
mo_object_oriented_object_fct->deserialize_source( mo_object_oriented_object_fct->deserialize_source(
is_key = ls_class_key is_key = ls_class_key
it_source = lt_source ). it_source = lt_source ).
io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS' io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS'
CHANGING cg_data = lt_descriptions ). CHANGING cg_data = lt_descriptions ).
@ -385,7 +381,7 @@ CLASS lcl_object_clas IMPLEMENTATION.
is_key = ls_class_key is_key = ls_class_key
it_descriptions = lt_descriptions ). it_descriptions = lt_descriptions ).
mo_object_oriented_object_fct->add_to_activation_list( is_item = ms_item ). mo_object_oriented_object_fct->add_to_activation_list( ms_item ).
ENDMETHOD. "deserialize ENDMETHOD. "deserialize
METHOD lif_object~compare_to_remote_version. METHOD lif_object~compare_to_remote_version.
@ -396,7 +392,7 @@ CLASS lcl_object_clas IMPLEMENTATION.
super->constructor( super->constructor(
is_item = is_item is_item = is_item
iv_language = iv_language ). iv_language = iv_language ).
mo_object_oriented_object_fct = lcl_oo_factory=>make( iv_object_type = ms_item-obj_type ). mo_object_oriented_object_fct = lcl_oo_factory=>make( ms_item-obj_type ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. "lcl_object_CLAS IMPLEMENTATION ENDCLASS. "lcl_object_CLAS IMPLEMENTATION
@ -457,8 +453,9 @@ CLASS lcl_oo_class IMPLEMENTATION.
lcx_exception=>raise( 'error from generate_locals' ). lcx_exception=>raise( 'error from generate_locals' ).
ENDIF. ENDIF.
ENDMETHOD. ENDMETHOD.
METHOD lif_oo_object_fnc~insert_text_pool. METHOD lif_oo_object_fnc~insert_text_pool.
DATA: lv_cp TYPE program. DATA: lv_cp TYPE program.
lv_cp = cl_oo_classname_service=>get_classpool_name( iv_class_name ). lv_cp = cl_oo_classname_service=>get_classpool_name( iv_class_name ).

View File

@ -0,0 +1,406 @@
*&---------------------------------------------------------------------*
*& Include ZABAPGIT_OBJECT_CLAS_NEW
*&---------------------------------------------------------------------*
* todo: refactoring
* todo: testing, possible from master branch via experimental switch
CLASS lcl_oo_class_new DEFINITION INHERITING FROM lcl_oo_class.
PUBLIC SECTION.
METHODS:
lif_oo_object_fnc~create REDEFINITION,
lif_oo_object_fnc~generate_locals REDEFINITION,
lif_oo_object_fnc~deserialize_source REDEFINITION.
PRIVATE SECTION.
CLASS-METHODS:
update_report
IMPORTING
iv_program TYPE programm
it_source TYPE string_table
RETURNING
VALUE(rv_updated) TYPE abap_bool,
generate_classpool
IMPORTING
iv_name TYPE seoclsname
RAISING
lcx_exception,
update_meta
IMPORTING
iv_name TYPE seoclsname
iv_exposure TYPE seoexpose
it_source TYPE rswsourcet
RAISING
lcx_exception,
determine_method_include
IMPORTING
iv_name TYPE seoclsname
iv_method TYPE seocpdname
RETURNING
VALUE(rv_program) TYPE programm
RAISING
lcx_exception,
init_scanner
IMPORTING
it_source TYPE lif_defs=>ty_string_tt
iv_name TYPE seoclsname
RETURNING
VALUE(ro_scanner) TYPE REF TO cl_oo_source_scanner_class.
ENDCLASS.
CLASS lcl_oo_class_new IMPLEMENTATION.
METHOD determine_method_include.
DATA: ls_mtdkey TYPE seocpdkey.
ls_mtdkey-clsname = iv_name.
ls_mtdkey-cpdname = iv_method.
cl_oo_classname_service=>get_method_include(
EXPORTING
mtdkey = ls_mtdkey
RECEIVING
result = rv_program
EXCEPTIONS
method_not_existing = 1 ).
IF sy-subrc = 0.
RETURN.
ENDIF.
CALL FUNCTION 'SEO_METHOD_GENERATE_INCLUDE'
EXPORTING
suppress_mtdkey_check = seox_true
mtdkey = ls_mtdkey
EXCEPTIONS
not_existing = 1
model_only = 2
include_existing = 3
method_imp_not_generated = 4
method_imp_not_initialised = 5
_internal_class_not_existing = 6
_internal_method_overflow = 7
cancelled = 8
method_is_abstract_implemented = 9
method_is_final_implemented = 10
internal_error_insert_report = 11
OTHERS = 12.
IF sy-subrc <> 0.
lcx_exception=>raise( 'error from SEO_METHOD_GENERATE_INCLUDE' ).
ENDIF.
rv_program = cl_oo_classname_service=>get_method_include( ls_mtdkey ).
ENDMETHOD.
METHOD lif_oo_object_fnc~create.
* same as in super class, but with "version = seoc_version_active"
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'
EXPORTING
devclass = iv_package
overwrite = iv_overwrite
version = seoc_version_active
CHANGING
class = is_properties
EXCEPTIONS
existing = 1
is_interface = 2
db_error = 3
component_error = 4
no_access = 5
other = 6
OTHERS = 7.
IF sy-subrc <> 0.
lcx_exception=>raise( 'error from SEO_CLASS_CREATE_COMPLETE' ).
ENDIF.
ENDMETHOD.
METHOD init_scanner.
ro_scanner = cl_oo_source_scanner_class=>create_class_scanner(
clif_name = iv_name
source = it_source ).
ro_scanner->scan( ).
ENDMETHOD.
METHOD update_report.
DATA: lt_old TYPE string_table.
READ REPORT iv_program INTO lt_old.
ASSERT sy-subrc = 0. " include should have been created previously
IF lt_old <> it_source.
INSERT REPORT iv_program FROM it_source.
ASSERT sy-subrc = 0.
rv_updated = abap_true.
ELSE.
rv_updated = abap_false.
ENDIF.
ENDMETHOD.
METHOD lif_oo_object_fnc~generate_locals.
DATA: lv_program TYPE programm.
lv_program = cl_oo_classname_service=>get_ccdef_name( is_key-clsname ).
update_report( iv_program = lv_program
it_source = it_local_definitions ).
lv_program = cl_oo_classname_service=>get_ccimp_name( is_key-clsname ).
update_report( iv_program = lv_program
it_source = it_local_implementations ).
lv_program = cl_oo_classname_service=>get_ccmac_name( is_key-clsname ).
update_report( iv_program = lv_program
it_source = it_local_macros ).
IF lines( it_local_test_classes ) > 0.
lv_program = cl_oo_classname_service=>get_ccau_name( is_key-clsname ).
update_report( iv_program = lv_program
it_source = it_local_test_classes ).
ENDIF.
ENDMETHOD.
METHOD update_meta.
DATA: lo_update TYPE REF TO cl_oo_class_section_source,
ls_clskey TYPE seoclskey,
lv_scan_error TYPE seox_boolean.
ls_clskey-clsname = iv_name.
CREATE OBJECT lo_update
EXPORTING
clskey = ls_clskey
exposure = iv_exposure
state = 'A'
source = it_source
suppress_constrctr_generation = seox_true
EXCEPTIONS
class_not_existing = 1
read_source_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
lcx_exception=>raise( 'error instantiating CL_OO_CLASS_SECTION_SOURCE' ).
ENDIF.
lo_update->set_dark_mode( seox_true ).
lo_update->set_amdp_support( abap_true ).
lo_update->scan_section_source(
RECEIVING
scan_error = lv_scan_error
EXCEPTIONS
scan_abap_source_error = 1
OTHERS = 2 ).
IF sy-subrc <> 0 OR lv_scan_error = abap_true.
lcx_exception=>raise( 'CLAS, error while scanning source' ).
ENDIF.
* this will update the SEO* database tables
lo_update->revert_scan_result( ).
IF iv_exposure = seoc_exposure_public.
generate_classpool( iv_name ).
ENDIF.
ENDMETHOD.
METHOD generate_classpool.
DATA: ls_clskey TYPE seoclskey.
ls_clskey-clsname = iv_name.
CALL FUNCTION 'SEO_CLASS_GENERATE_CLASSPOOL'
EXPORTING
clskey = ls_clskey
suppress_corr = seox_true
EXCEPTIONS
not_existing = 1
model_only = 2
class_pool_not_generated = 3
class_stment_not_generated = 4
locals_not_generated = 5
macros_not_generated = 6
public_sec_not_generated = 7
protected_sec_not_generated = 8
private_sec_not_generated = 9
typeref_not_generated = 10
class_pool_not_initialised = 11
class_stment_not_initialised = 12
locals_not_initialised = 13
macros_not_initialised = 14
public_sec_not_initialised = 15
protected_sec_not_initialised = 16
private_sec_not_initialised = 17
typeref_not_initialised = 18
_internal_class_overflow = 19
OTHERS = 20.
IF sy-subrc <> 0.
lcx_exception=>raise( 'error from SEO_CLASS_GENERATE_CLASSPOOL' ).
ENDIF.
ENDMETHOD.
METHOD lif_oo_object_fnc~deserialize_source.
DATA: lv_updated TYPE abap_bool,
lv_program TYPE program,
lo_scanner TYPE REF TO cl_oo_source_scanner_class,
lt_methods TYPE cl_oo_source_scanner_class=>type_method_implementations,
lv_method LIKE LINE OF lt_methods,
lt_source TYPE seop_source_string.
lo_scanner = init_scanner(
it_source = it_source
iv_name = is_key-clsname ).
* public
lt_source = lo_scanner->get_public_section_source( ).
lv_program = cl_oo_classname_service=>get_pubsec_name( is_key-clsname ).
lv_updated = update_report( iv_program = lv_program
it_source = lt_source ).
IF lv_updated = abap_true.
update_meta( iv_name = is_key-clsname
iv_exposure = seoc_exposure_public
it_source = lt_source ).
ENDIF.
* protected
lt_source = lo_scanner->get_protected_section_source( ).
lv_program = cl_oo_classname_service=>get_prosec_name( is_key-clsname ).
lv_updated = update_report( iv_program = lv_program
it_source = lt_source ).
IF lv_updated = abap_true.
update_meta( iv_name = is_key-clsname
iv_exposure = seoc_exposure_protected
it_source = lt_source ).
ENDIF.
* private
lt_source = lo_scanner->get_private_section_source( ).
lv_program = cl_oo_classname_service=>get_prisec_name( is_key-clsname ).
lv_updated = update_report( iv_program = lv_program
it_source = lt_source ).
IF lv_updated = abap_true.
update_meta( iv_name = is_key-clsname
iv_exposure = seoc_exposure_private
it_source = lt_source ).
ENDIF.
* methods
lt_methods = lo_scanner->get_method_implementations( ).
LOOP AT lt_methods INTO lv_method.
TRY.
lt_source = lo_scanner->get_method_impl_source( lv_method ).
CATCH cx_oo_clif_component.
lcx_exception=>raise( 'error from GET_METHOD_IMPL_SOURCE' ).
ENDTRY.
lv_program = determine_method_include(
iv_name = is_key-clsname
iv_method = lv_method ).
update_report(
iv_program = lv_program
it_source = lt_source ).
ENDLOOP.
ENDMETHOD.
ENDCLASS.
CLASS lcl_object_clas_new DEFINITION INHERITING FROM lcl_object_clas.
PUBLIC SECTION.
METHODS: constructor
IMPORTING
is_item TYPE lif_defs=>ty_item
iv_language TYPE spras.
PROTECTED SECTION.
METHODS:
deserialize_abap REDEFINITION.
ENDCLASS.
CLASS lcl_object_clas_new IMPLEMENTATION.
METHOD constructor.
super->constructor( is_item = is_item
iv_language = iv_language ).
CREATE OBJECT mo_object_oriented_object_fct TYPE lcl_oo_class_new.
ENDMETHOD.
METHOD deserialize_abap.
* same as in lcl_object_clas, but without "mo_object_oriented_object_fct->add_to_activation_list"
DATA: ls_vseoclass TYPE vseoclass,
lt_source TYPE seop_source_string,
lt_local_definitions TYPE seop_source_string,
lt_local_implementations TYPE seop_source_string,
lt_local_macros TYPE seop_source_string,
lt_test_classes TYPE seop_source_string,
lt_descriptions TYPE lif_defs=>ty_seocompotx_tt,
ls_class_key TYPE seoclskey.
lt_source = mo_files->read_abap( ).
lt_local_definitions = mo_files->read_abap( iv_extra = 'locals_def'
iv_error = abap_false ). "#EC NOTEXT
lt_local_implementations = mo_files->read_abap( iv_extra = 'locals_imp'
iv_error = abap_false ). "#EC NOTEXT
lt_local_macros = mo_files->read_abap( iv_extra = 'macros'
iv_error = abap_false ). "#EC NOTEXT
lt_test_classes = mo_files->read_abap( iv_extra = 'testclasses'
iv_error = abap_false ). "#EC NOTEXT
ls_class_key-clsname = ms_item-obj_name.
io_xml->read( EXPORTING iv_name = 'VSEOCLASS'
CHANGING cg_data = ls_vseoclass ).
mo_object_oriented_object_fct->create(
EXPORTING
iv_package = iv_package
CHANGING
is_properties = ls_vseoclass ).
mo_object_oriented_object_fct->generate_locals(
is_key = ls_class_key
iv_force = seox_true
it_local_definitions = lt_local_definitions
it_local_implementations = lt_local_implementations
it_local_macros = lt_local_macros
it_local_test_classes = lt_test_classes ).
mo_object_oriented_object_fct->deserialize_source(
is_key = ls_class_key
it_source = lt_source ).
io_xml->read( EXPORTING iv_name = 'DESCRIPTIONS'
CHANGING cg_data = lt_descriptions ).
mo_object_oriented_object_fct->update_descriptions(
is_key = ls_class_key
it_descriptions = lt_descriptions ).
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,22 @@
<?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_CLAS_NEW</NAME>
<STATE>A</STATE>
<VARCL>X</VARCL>
<SUBC>I</SUBC>
<RLOAD>E</RLOAD>
<UCCHECK>X</UCCHECK>
</PROGDIR>
<TPOOL>
<item>
<ID>R</ID>
<ENTRY>Include ZABAPGIT_OBJECT_CLAS_NEW</ENTRY>
<LENGTH>32</LENGTH>
</item>
</TPOOL>
</asx:values>
</asx:abap>
</abapGit>

View File

@ -142,7 +142,7 @@ CLASS lcl_object_ddls IMPLEMENTATION.
EXPORTING EXPORTING
name = ms_item-obj_name. name = ms_item-obj_name.
CATCH cx_root. CATCH cx_root.
lcx_exception=>raise( 'DDLS error' ). lcx_exception=>raise( 'DDLS error deleting' ).
ENDTRY. ENDTRY.
ENDMETHOD. "delete ENDMETHOD. "delete
@ -171,7 +171,7 @@ CLASS lcl_object_ddls IMPLEMENTATION.
IMPORTING IMPORTING
ddddlsrcv_wa = <ls_data>. ddddlsrcv_wa = <ls_data>.
CATCH cx_root. CATCH cx_root.
lcx_exception=>raise( 'DDLS error' ). lcx_exception=>raise( 'DDLS error reading' ).
ENDTRY. ENDTRY.
ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <ls_data> TO <lv_field>. ASSIGN COMPONENT 'AS4USER' OF STRUCTURE <ls_data> TO <lv_field>.
@ -233,7 +233,7 @@ CLASS lcl_object_ddls IMPLEMENTATION.
devclass = iv_package devclass = iv_package
prid = 0. prid = 0.
CATCH cx_root. CATCH cx_root.
lcx_exception=>raise( 'DDLS error' ). lcx_exception=>raise( 'DDLS error writing TADIR' ).
ENDTRY. ENDTRY.
lcl_objects_activation=>add_item( ms_item ). lcl_objects_activation=>add_item( ms_item ).

View File

@ -430,11 +430,12 @@ CLASS lcl_object_fugr IMPLEMENTATION.
cnam TYPE reposrc-cnam, cnam TYPE reposrc-cnam,
END OF ty_reposrc. END OF ty_reposrc.
DATA: lt_reposrc TYPE STANDARD TABLE OF ty_reposrc WITH DEFAULT KEY, DATA: lt_reposrc TYPE STANDARD TABLE OF ty_reposrc WITH DEFAULT KEY,
ls_reposrc LIKE LINE OF lt_reposrc, ls_reposrc LIKE LINE OF lt_reposrc,
lv_program TYPE program, lv_program TYPE program,
lv_tabix LIKE sy-tabix, lv_offset_ns TYPE i,
lt_functab TYPE ty_rs38l_incl_tt. lv_tabix LIKE sy-tabix,
lt_functab TYPE ty_rs38l_incl_tt.
FIELD-SYMBOLS: <lv_include> LIKE LINE OF rt_includes, FIELD-SYMBOLS: <lv_include> LIKE LINE OF rt_includes,
<ls_func> LIKE LINE OF lt_functab. <ls_func> LIKE LINE OF lt_functab.
@ -464,15 +465,15 @@ CLASS lcl_object_fugr IMPLEMENTATION.
* handle generated maintenance views * handle generated maintenance views
APPEND INITIAL LINE TO rt_includes ASSIGNING <lv_include>. APPEND INITIAL LINE TO rt_includes ASSIGNING <lv_include>.
if ms_item-obj_name(1) <> '/'. IF ms_item-obj_name(1) <> '/'.
"FGroup name does not contain a namespace "FGroup name does not contain a namespace
<lv_include> = |L{ ms_item-obj_name }T00|. <lv_include> = |L{ ms_item-obj_name }T00|.
else. ELSE.
"FGroup name contains a namespace "FGroup name contains a namespace
lv_offset_ns = find( val = ms_item-obj_name+1 sub = '/' ). lv_offset_ns = find( val = ms_item-obj_name+1 sub = '/' ).
lv_offset_ns = lv_offset_ns + 2. lv_offset_ns = lv_offset_ns + 2.
<lv_include> = |{ ms_item-obj_name(lv_offset_ns) }L{ ms_item-obj_name+lv_offset_ns }T00|. <lv_include> = |{ ms_item-obj_name(lv_offset_ns) }L{ ms_item-obj_name+lv_offset_ns }T00|.
endif. ENDIF.
IF lines( rt_includes ) > 0. IF lines( rt_includes ) > 0.
SELECT progname cnam FROM reposrc SELECT progname cnam FROM reposrc

View File

@ -8,6 +8,7 @@ INCLUDE zabapgit_object_acid.
INCLUDE zabapgit_object_auth. INCLUDE zabapgit_object_auth.
INCLUDE zabapgit_object_oo_functions. INCLUDE zabapgit_object_oo_functions.
INCLUDE zabapgit_object_clas. INCLUDE zabapgit_object_clas.
INCLUDE zabapgit_object_clas_new.
INCLUDE zabapgit_object_cmpt. INCLUDE zabapgit_object_cmpt.
INCLUDE zabapgit_object_dcls. INCLUDE zabapgit_object_dcls.
INCLUDE zabapgit_object_ddls. INCLUDE zabapgit_object_ddls.

View File

@ -407,6 +407,11 @@ CLASS lcl_object_sicf IMPLEMENTATION.
RETURN. RETURN.
ENDIF. ENDIF.
IF ls_icfservice-icfparguid CO '0'.
* not supported by the SAP standard API
lcx_exception=>raise( 'SICF - cannot delete root node, delete node manually' ).
ENDIF.
cl_icf_tree=>if_icf_tree~delete_node( cl_icf_tree=>if_icf_tree~delete_node(
EXPORTING EXPORTING
icfparguid = ls_icfservice-icfparguid icfparguid = ls_icfservice-icfparguid

View File

@ -133,6 +133,11 @@ CLASS lcl_objects IMPLEMENTATION.
lv_class_name = class_name( is_item ). lv_class_name = class_name( is_item ).
ENDIF. ENDIF.
IF lcl_app=>settings( )->read( )->get_experimental_features( ) = abap_true
AND is_item-obj_type = 'CLAS'.
lv_class_name = 'LCL_OBJECT_CLAS_NEW'.
ENDIF.
TRY. TRY.
CREATE OBJECT ri_obj TYPE (lv_class_name) CREATE OBJECT ri_obj TYPE (lv_class_name)
EXPORTING EXPORTING
@ -231,30 +236,23 @@ CLASS lcl_objects IMPLEMENTATION.
METHOD jump. METHOD jump.
DATA: li_obj TYPE REF TO lif_object, DATA: li_obj TYPE REF TO lif_object,
adt_jump_enabled TYPE abap_bool. lv_adt_jump_enabled TYPE abap_bool.
li_obj = create_object( is_item = is_item li_obj = create_object( is_item = is_item
iv_language = lif_defs=>gc_english ). iv_language = lif_defs=>gc_english ).
adt_jump_enabled = lcl_app=>settings( )->read( )->get_adt_jump_enabled( ). lv_adt_jump_enabled = lcl_app=>settings( )->read( )->get_adt_jump_enabled( ).
IF adt_jump_enabled = abap_true.
IF lv_adt_jump_enabled = abap_true.
TRY. TRY.
lcl_objects_super=>jump_adt( i_obj_name = is_item-obj_name lcl_objects_super=>jump_adt( i_obj_name = is_item-obj_name
i_obj_type = is_item-obj_type ). i_obj_type = is_item-obj_type ).
CATCH lcx_exception. CATCH lcx_exception.
li_obj->jump( ). li_obj->jump( ).
ENDTRY. ENDTRY.
ELSE. ELSE.
li_obj->jump( ). li_obj->jump( ).
ENDIF. ENDIF.
ENDMETHOD. "jump ENDMETHOD. "jump
@ -589,9 +587,7 @@ CLASS lcl_objects IMPLEMENTATION.
lt_remote = io_repo->get_files_remote( ). lt_remote = io_repo->get_files_remote( ).
lt_results = lcl_file_status=>status( io_repo ). lt_results = lcl_file_status=>status( io_repo ).
DELETE lt_results WHERE DELETE lt_results WHERE match = abap_true. " Full match
match = abap_true. " Full match
* OR rstate IS INITIAL. " no remote changes, only local
SORT lt_results BY obj_type ASCENDING obj_name ASCENDING. SORT lt_results BY obj_type ASCENDING obj_name ASCENDING.
DELETE ADJACENT DUPLICATES FROM lt_results COMPARING obj_type obj_name. DELETE ADJACENT DUPLICATES FROM lt_results COMPARING obj_type obj_name.

View File

@ -164,6 +164,13 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
mo_settings->set_run_critical_tests( abap_false ). mo_settings->set_run_critical_tests( abap_false ).
ENDIF. ENDIF.
READ TABLE it_post_fields ASSIGNING <ls_post_field> WITH KEY name = 'experimental_features'.
IF sy-subrc = 0.
mo_settings->set_experimental_features( abap_true ).
ELSE.
mo_settings->set_experimental_features( abap_false ).
ENDIF.
READ TABLE it_post_fields ASSIGNING <ls_post_field> WITH KEY name = 'max_lines'. READ TABLE it_post_fields ASSIGNING <ls_post_field> WITH KEY name = 'max_lines'.
IF sy-subrc = 0. IF sy-subrc = 0.
lv_i_param_value = <ls_post_field>-value. lv_i_param_value = <ls_post_field>-value.
@ -263,16 +270,24 @@ CLASS lcl_gui_page_settings IMPLEMENTATION.
METHOD render_development_internals. METHOD render_development_internals.
DATA lv_checked TYPE string. DATA: lv_critical_tests TYPE string,
lv_experimental TYPE string.
IF mo_settings->get_run_critical_tests( ) = abap_true. IF mo_settings->get_run_critical_tests( ) = abap_true.
lv_checked = 'checked'. lv_critical_tests = 'checked'.
ENDIF.
IF mo_settings->get_experimental_features( ) = abap_true.
lv_experimental = 'checked'.
ENDIF. ENDIF.
CREATE OBJECT ro_html. CREATE OBJECT ro_html.
ro_html->add( |<h2>abapGit Development Internals settings</h2>| ). ro_html->add( |<h2>abapGit Development Internals settings</h2>| ).
ro_html->add( `<input type="checkbox" name="critical_tests" value="X" ` ro_html->add( `<input type="checkbox" name="critical_tests" `
&& lv_checked && ` > Enable critical unit tests (see LTCL_DANGEROUS)` ). && lv_critical_tests && ` > Enable critical unit tests (see LTCL_DANGEROUS)` ).
ro_html->add( |<br>| ).
ro_html->add( `<input type="checkbox" name="experimental_features" `
&& lv_experimental && ` > Enable experimental features` ).
ro_html->add( |<br>| ). ro_html->add( |<br>| ).
ro_html->add( |<br>| ). ro_html->add( |<br>| ).

View File

@ -119,7 +119,7 @@ CLASS lcl_persistence_repo DEFINITION FINAL.
TYPES: BEGIN OF ty_repo, TYPES: BEGIN OF ty_repo,
key TYPE lcl_persistence_db=>ty_value. key TYPE lcl_persistence_db=>ty_value.
INCLUDE TYPE ty_repo_xml. INCLUDE TYPE ty_repo_xml.
TYPES: END OF ty_repo. TYPES: END OF ty_repo.
TYPES: tt_repo TYPE STANDARD TABLE OF ty_repo WITH DEFAULT KEY. TYPES: tt_repo TYPE STANDARD TABLE OF ty_repo WITH DEFAULT KEY.
TYPES: tt_repo_keys TYPE STANDARD TABLE OF ty_repo-key WITH DEFAULT KEY. TYPES: tt_repo_keys TYPE STANDARD TABLE OF ty_repo-key WITH DEFAULT KEY.
@ -236,7 +236,7 @@ CLASS lcl_persist_background DEFINITION FINAL.
TYPES: BEGIN OF ty_background, TYPES: BEGIN OF ty_background,
key TYPE lcl_persistence_db=>ty_value. key TYPE lcl_persistence_db=>ty_value.
INCLUDE TYPE ty_xml. INCLUDE TYPE ty_xml.
TYPES: END OF ty_background. TYPES: END OF ty_background.
TYPES: tt_background TYPE STANDARD TABLE OF ty_background WITH DEFAULT KEY. TYPES: tt_background TYPE STANDARD TABLE OF ty_background WITH DEFAULT KEY.
@ -284,59 +284,70 @@ CLASS lcl_settings DEFINITION FINAL.
CONSTANTS: c_commitmsg_body_size_dft TYPE i VALUE 72. CONSTANTS: c_commitmsg_body_size_dft TYPE i VALUE 72.
CONSTANTS: c_dbtype_settings TYPE lcl_persistence_db=>ty_type VALUE 'SETTINGS' ##NO_TEXT. CONSTANTS: c_dbtype_settings TYPE lcl_persistence_db=>ty_type VALUE 'SETTINGS' ##NO_TEXT.
METHODS set_proxy_url METHODS: set_proxy_url
IMPORTING IMPORTING
iv_url TYPE string. iv_url TYPE string,
METHODS set_proxy_port set_proxy_port
IMPORTING IMPORTING
iv_port TYPE string. iv_port TYPE string,
METHODS set_proxy_authentication set_proxy_authentication
IMPORTING IMPORTING
iv_auth TYPE abap_bool. iv_auth TYPE abap_bool,
METHODS get_proxy_url get_proxy_url
RETURNING RETURNING
VALUE(rv_proxy_url) TYPE string. VALUE(rv_proxy_url) TYPE string,
METHODS get_proxy_port get_proxy_port
RETURNING RETURNING
VALUE(rv_port) TYPE string. VALUE(rv_port) TYPE string,
METHODS get_proxy_authentication get_proxy_authentication
RETURNING RETURNING
VALUE(rv_auth) TYPE abap_bool. VALUE(rv_auth) TYPE abap_bool,
METHODS set_run_critical_tests set_run_critical_tests
IMPORTING IMPORTING
iv_run TYPE abap_bool. iv_run TYPE abap_bool,
METHODS
get_run_critical_tests get_run_critical_tests
RETURNING VALUE(rv_run) TYPE abap_bool. RETURNING
METHODS set_max_lines VALUE(rv_run) TYPE abap_bool,
IMPORTING iv_lines TYPE i. set_experimental_features
METHODS get_max_lines IMPORTING
RETURNING iv_run TYPE abap_bool,
VALUE(rv_lines) TYPE i. get_experimental_features
METHODS set_adt_jump_enanbled RETURNING
IMPORTING iv_adt_jump_enabled TYPE abap_bool. VALUE(rv_run) TYPE abap_bool,
METHODS get_adt_jump_enabled set_max_lines
RETURNING IMPORTING iv_lines TYPE i,
VALUE(rv_adt_jump_enabled) TYPE abap_bool. get_max_lines
METHODS set_commitmsg_comment_length RETURNING
IMPORTING iv_length TYPE i. VALUE(rv_lines) TYPE i,
METHODS get_commitmsg_comment_length set_adt_jump_enanbled
RETURNING IMPORTING
VALUE(rv_length) TYPE i. iv_adt_jump_enabled TYPE abap_bool,
METHODS set_commitmsg_body_size get_adt_jump_enabled
IMPORTING iv_length TYPE i. RETURNING
METHODS get_commitmsg_body_size VALUE(rv_adt_jump_enabled) TYPE abap_bool,
RETURNING set_commitmsg_comment_length
VALUE(rv_length) TYPE i. IMPORTING
METHODS get_settings_xml iv_length TYPE i,
RETURNING VALUE(ev_settings_xml) TYPE string get_commitmsg_comment_length
RAISING lcx_exception. RETURNING
METHODS set_xml_settings VALUE(rv_length) TYPE i,
IMPORTING iv_settings_xml TYPE string set_commitmsg_body_size
RAISING lcx_exception. IMPORTING
METHODS set_defaults. iv_length TYPE i,
get_commitmsg_body_size
RETURNING
VALUE(rv_length) TYPE i,
get_settings_xml
RETURNING
VALUE(ev_settings_xml) TYPE string
RAISING
lcx_exception,
set_xml_settings
IMPORTING
iv_settings_xml TYPE string
RAISING
lcx_exception,
set_defaults.
PRIVATE SECTION. PRIVATE SECTION.
TYPES: BEGIN OF ty_s_settings, TYPES: BEGIN OF ty_s_settings,
@ -344,6 +355,7 @@ CLASS lcl_settings DEFINITION FINAL.
proxy_port TYPE string, proxy_port TYPE string,
proxy_auth TYPE string, proxy_auth TYPE string,
run_critical_tests TYPE abap_bool, run_critical_tests TYPE abap_bool,
experimental_features TYPE abap_bool,
max_lines TYPE i, max_lines TYPE i,
adt_jump_enabled TYPE abap_bool, adt_jump_enabled TYPE abap_bool,
commitmsg_comment_length TYPE i, commitmsg_comment_length TYPE i,
@ -1828,6 +1840,14 @@ CLASS lcl_settings IMPLEMENTATION.
rv_run = ms_settings-run_critical_tests. rv_run = ms_settings-run_critical_tests.
ENDMETHOD. ENDMETHOD.
METHOD set_experimental_features.
ms_settings-experimental_features = iv_run.
ENDMETHOD.
METHOD get_experimental_features.
rv_run = ms_settings-experimental_features.
ENDMETHOD.
METHOD get_max_lines. METHOD get_max_lines.
rv_lines = ms_settings-max_lines. rv_lines = ms_settings-max_lines.
ENDMETHOD. ENDMETHOD.
@ -1891,15 +1911,11 @@ CLASS lcl_settings IMPLEMENTATION.
CLEAR ms_settings. CLEAR ms_settings.
set_proxy_authentication( abap_false ). set_proxy_authentication( abap_false ).
set_run_critical_tests( abap_false ). set_run_critical_tests( abap_false ).
set_experimental_features( abap_false ).
set_max_lines( 500 ). set_max_lines( 500 ).
set_adt_jump_enanbled( abap_false ). set_adt_jump_enanbled( abap_false ).
set_commitmsg_comment_length( lcl_settings=>c_commitmsg_comment_length_dft ). set_commitmsg_comment_length( lcl_settings=>c_commitmsg_comment_length_dft ).
set_commitmsg_body_size( lcl_settings=>c_commitmsg_body_size_dft ). set_commitmsg_body_size( lcl_settings=>c_commitmsg_body_size_dft ).
ENDMETHOD. ENDMETHOD.