mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
CLAS cleanup (#2204)
* cleanup old experimental CLAS * Move ZCL_ABAPGIT_OO_CLASS_NEW to _CLASS
This commit is contained in:
parent
79f7a82235
commit
c9252b1b2a
|
@ -37,15 +37,19 @@ CLASS zcl_abapgit_object_clas DEFINITION PUBLIC INHERITING FROM zcl_abapgit_obje
|
|||
RAISING zcx_abapgit_exception.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS zcl_abapgit_object_clas IMPLEMENTATION.
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OBJECT_CLAS IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD constructor.
|
||||
super->constructor( is_item = is_item
|
||||
iv_language = iv_language ).
|
||||
|
||||
CREATE OBJECT mi_object_oriented_object_fct TYPE zcl_abapgit_oo_class_new.
|
||||
CREATE OBJECT mi_object_oriented_object_fct TYPE zcl_abapgit_oo_class.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD deserialize_abap.
|
||||
* same as in zcl_abapgit_object_clas, but without "mo_object_oriented_object_fct->add_to_activation_list"
|
||||
|
||||
|
@ -110,6 +114,167 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD deserialize_docu.
|
||||
|
||||
DATA: lt_lines TYPE tlinetab,
|
||||
lv_object TYPE dokhl-object.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'LINES'
|
||||
CHANGING cg_data = lt_lines ).
|
||||
|
||||
IF lines( lt_lines ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_object = ms_item-obj_name.
|
||||
|
||||
mi_object_oriented_object_fct->create_documentation(
|
||||
it_lines = lt_lines
|
||||
iv_object_name = lv_object
|
||||
iv_language = mv_language ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD deserialize_sotr.
|
||||
"OTR stands for Online Text Repository
|
||||
DATA: lt_sotr TYPE zif_abapgit_definitions=>ty_sotr_tt.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'SOTR'
|
||||
CHANGING cg_data = lt_sotr ).
|
||||
|
||||
IF lines( lt_sotr ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
mi_object_oriented_object_fct->create_sotr(
|
||||
iv_package = iv_package
|
||||
it_sotr = lt_sotr ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD deserialize_tpool.
|
||||
|
||||
DATA: lv_clsname TYPE seoclsname,
|
||||
lt_tpool_ext TYPE zif_abapgit_definitions=>ty_tpool_tt,
|
||||
lt_tpool TYPE textpool_table.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'TPOOL'
|
||||
CHANGING cg_data = lt_tpool_ext ).
|
||||
lt_tpool = read_tpool( lt_tpool_ext ).
|
||||
|
||||
IF lines( lt_tpool ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_clsname = ms_item-obj_name.
|
||||
|
||||
mi_object_oriented_object_fct->insert_text_pool(
|
||||
iv_class_name = lv_clsname
|
||||
it_text_pool = lt_tpool
|
||||
iv_language = mv_language ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD is_class_locked.
|
||||
|
||||
DATA: lv_argument TYPE seqg3-garg.
|
||||
|
||||
lv_argument = ms_item-obj_name.
|
||||
OVERLAY lv_argument WITH '=============================='.
|
||||
lv_argument = lv_argument && '*'.
|
||||
|
||||
rv_is_class_locked = exists_a_lock_entry_for( iv_lock_object = 'ESEOCLASS'
|
||||
iv_argument = lv_argument ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD serialize_xml.
|
||||
|
||||
DATA: ls_vseoclass TYPE vseoclass,
|
||||
lt_tpool TYPE textpool_table,
|
||||
lt_descriptions TYPE zif_abapgit_definitions=>ty_seocompotx_tt,
|
||||
ls_clskey TYPE seoclskey,
|
||||
lt_sotr TYPE zif_abapgit_definitions=>ty_sotr_tt,
|
||||
lt_lines TYPE tlinetab,
|
||||
lt_attributes TYPE zif_abapgit_definitions=>ty_obj_attribute_tt.
|
||||
|
||||
ls_clskey-clsname = ms_item-obj_name.
|
||||
|
||||
"If class was deserialized with a previous versions of abapGit and current language was different
|
||||
"from master language at this time, this call would return SY-LANGU as master language. To fix
|
||||
"these objects, set SY-LANGU to master language temporarily.
|
||||
zcl_abapgit_language=>set_current_language( mv_language ).
|
||||
|
||||
TRY.
|
||||
ls_vseoclass = mi_object_oriented_object_fct->get_class_properties( ls_clskey ).
|
||||
|
||||
CLEANUP.
|
||||
zcl_abapgit_language=>restore_login_language( ).
|
||||
|
||||
ENDTRY.
|
||||
|
||||
zcl_abapgit_language=>restore_login_language( ).
|
||||
|
||||
CLEAR: ls_vseoclass-uuid,
|
||||
ls_vseoclass-author,
|
||||
ls_vseoclass-createdon,
|
||||
ls_vseoclass-changedby,
|
||||
ls_vseoclass-changedon,
|
||||
ls_vseoclass-r3release,
|
||||
ls_vseoclass-chgdanyby,
|
||||
ls_vseoclass-chgdanyon,
|
||||
ls_vseoclass-clsfinal,
|
||||
ls_vseoclass-clsabstrct,
|
||||
ls_vseoclass-exposure.
|
||||
|
||||
IF mv_skip_testclass = abap_true.
|
||||
CLEAR ls_vseoclass-with_unit_tests.
|
||||
ENDIF.
|
||||
|
||||
io_xml->add( iv_name = 'VSEOCLASS'
|
||||
ig_data = ls_vseoclass ).
|
||||
|
||||
lt_tpool = mi_object_oriented_object_fct->read_text_pool(
|
||||
iv_class_name = ls_clskey-clsname
|
||||
iv_language = mv_language ).
|
||||
io_xml->add( iv_name = 'TPOOL'
|
||||
ig_data = add_tpool( lt_tpool ) ).
|
||||
|
||||
IF ls_vseoclass-category = seoc_category_exception.
|
||||
lt_sotr = mi_object_oriented_object_fct->read_sotr( ms_item-obj_name ).
|
||||
IF lines( lt_sotr ) > 0.
|
||||
io_xml->add( iv_name = 'SOTR'
|
||||
ig_data = lt_sotr ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
lt_lines = mi_object_oriented_object_fct->read_documentation(
|
||||
iv_class_name = ls_clskey-clsname
|
||||
iv_language = mv_language ).
|
||||
IF lines( lt_lines ) > 0.
|
||||
io_xml->add( iv_name = 'LINES'
|
||||
ig_data = lt_lines ).
|
||||
ENDIF.
|
||||
|
||||
lt_descriptions = mi_object_oriented_object_fct->read_descriptions( ls_clskey-clsname ).
|
||||
IF lines( lt_descriptions ) > 0.
|
||||
io_xml->add( iv_name = 'DESCRIPTIONS'
|
||||
ig_data = lt_descriptions ).
|
||||
ENDIF.
|
||||
|
||||
lt_attributes = mi_object_oriented_object_fct->read_attributes( ls_clskey-clsname ).
|
||||
IF lines( lt_attributes ) > 0.
|
||||
io_xml->add( iv_name = 'ATTRIBUTES'
|
||||
ig_data = lt_attributes ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~changed_by.
|
||||
|
||||
TYPES: BEGIN OF ty_includes,
|
||||
|
@ -205,6 +370,27 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~is_active.
|
||||
rv_active = is_active( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
DATA: lv_classpool TYPE program.
|
||||
|
||||
lv_classpool = cl_oo_classname_service=>get_classpool_name( |{ ms_item-obj_name }| ).
|
||||
|
||||
IF is_class_locked( ) = abap_true
|
||||
OR is_text_locked( lv_classpool ) = abap_true.
|
||||
|
||||
rv_is_locked = abap_true.
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~jump.
|
||||
CALL FUNCTION 'RS_TOOL_ACCESS'
|
||||
EXPORTING
|
||||
|
@ -276,180 +462,4 @@ CLASS zcl_abapgit_object_clas IMPLEMENTATION.
|
|||
serialize_xml( io_xml ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_object~is_locked.
|
||||
|
||||
DATA: lv_classpool TYPE program.
|
||||
|
||||
lv_classpool = cl_oo_classname_service=>get_classpool_name( |{ ms_item-obj_name }| ).
|
||||
|
||||
IF is_class_locked( ) = abap_true
|
||||
OR is_text_locked( lv_classpool ) = abap_true.
|
||||
|
||||
rv_is_locked = abap_true.
|
||||
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD deserialize_docu.
|
||||
|
||||
DATA: lt_lines TYPE tlinetab,
|
||||
lv_object TYPE dokhl-object.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'LINES'
|
||||
CHANGING cg_data = lt_lines ).
|
||||
|
||||
IF lines( lt_lines ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_object = ms_item-obj_name.
|
||||
|
||||
mi_object_oriented_object_fct->create_documentation(
|
||||
it_lines = lt_lines
|
||||
iv_object_name = lv_object
|
||||
iv_language = mv_language ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD deserialize_sotr.
|
||||
"OTR stands for Online Text Repository
|
||||
DATA: lt_sotr TYPE zif_abapgit_definitions=>ty_sotr_tt.
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'SOTR'
|
||||
CHANGING cg_data = lt_sotr ).
|
||||
|
||||
IF lines( lt_sotr ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
mi_object_oriented_object_fct->create_sotr(
|
||||
iv_package = iv_package
|
||||
it_sotr = lt_sotr ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD deserialize_tpool.
|
||||
|
||||
DATA: lv_clsname TYPE seoclsname,
|
||||
lt_tpool_ext TYPE zif_abapgit_definitions=>ty_tpool_tt,
|
||||
lt_tpool TYPE textpool_table.
|
||||
|
||||
|
||||
io_xml->read( EXPORTING iv_name = 'TPOOL'
|
||||
CHANGING cg_data = lt_tpool_ext ).
|
||||
lt_tpool = read_tpool( lt_tpool_ext ).
|
||||
|
||||
IF lines( lt_tpool ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_clsname = ms_item-obj_name.
|
||||
|
||||
mi_object_oriented_object_fct->insert_text_pool(
|
||||
iv_class_name = lv_clsname
|
||||
it_text_pool = lt_tpool
|
||||
iv_language = mv_language ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD serialize_xml.
|
||||
|
||||
DATA: ls_vseoclass TYPE vseoclass,
|
||||
lt_tpool TYPE textpool_table,
|
||||
lt_descriptions TYPE zif_abapgit_definitions=>ty_seocompotx_tt,
|
||||
ls_clskey TYPE seoclskey,
|
||||
lt_sotr TYPE zif_abapgit_definitions=>ty_sotr_tt,
|
||||
lt_lines TYPE tlinetab,
|
||||
lt_attributes TYPE zif_abapgit_definitions=>ty_obj_attribute_tt.
|
||||
|
||||
ls_clskey-clsname = ms_item-obj_name.
|
||||
|
||||
"If class was deserialized with a previous versions of abapGit and current language was different
|
||||
"from master language at this time, this call would return SY-LANGU as master language. To fix
|
||||
"these objects, set SY-LANGU to master language temporarily.
|
||||
zcl_abapgit_language=>set_current_language( mv_language ).
|
||||
|
||||
TRY.
|
||||
ls_vseoclass = mi_object_oriented_object_fct->get_class_properties( ls_clskey ).
|
||||
|
||||
CLEANUP.
|
||||
zcl_abapgit_language=>restore_login_language( ).
|
||||
|
||||
ENDTRY.
|
||||
|
||||
zcl_abapgit_language=>restore_login_language( ).
|
||||
|
||||
CLEAR: ls_vseoclass-uuid,
|
||||
ls_vseoclass-author,
|
||||
ls_vseoclass-createdon,
|
||||
ls_vseoclass-changedby,
|
||||
ls_vseoclass-changedon,
|
||||
ls_vseoclass-r3release,
|
||||
ls_vseoclass-chgdanyby,
|
||||
ls_vseoclass-chgdanyon,
|
||||
ls_vseoclass-clsfinal,
|
||||
ls_vseoclass-clsabstrct,
|
||||
ls_vseoclass-exposure.
|
||||
|
||||
IF mv_skip_testclass = abap_true.
|
||||
CLEAR ls_vseoclass-with_unit_tests.
|
||||
ENDIF.
|
||||
|
||||
io_xml->add( iv_name = 'VSEOCLASS'
|
||||
ig_data = ls_vseoclass ).
|
||||
|
||||
lt_tpool = mi_object_oriented_object_fct->read_text_pool(
|
||||
iv_class_name = ls_clskey-clsname
|
||||
iv_language = mv_language ).
|
||||
io_xml->add( iv_name = 'TPOOL'
|
||||
ig_data = add_tpool( lt_tpool ) ).
|
||||
|
||||
IF ls_vseoclass-category = seoc_category_exception.
|
||||
lt_sotr = mi_object_oriented_object_fct->read_sotr( ms_item-obj_name ).
|
||||
IF lines( lt_sotr ) > 0.
|
||||
io_xml->add( iv_name = 'SOTR'
|
||||
ig_data = lt_sotr ).
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
lt_lines = mi_object_oriented_object_fct->read_documentation(
|
||||
iv_class_name = ls_clskey-clsname
|
||||
iv_language = mv_language ).
|
||||
IF lines( lt_lines ) > 0.
|
||||
io_xml->add( iv_name = 'LINES'
|
||||
ig_data = lt_lines ).
|
||||
ENDIF.
|
||||
|
||||
lt_descriptions = mi_object_oriented_object_fct->read_descriptions( ls_clskey-clsname ).
|
||||
IF lines( lt_descriptions ) > 0.
|
||||
io_xml->add( iv_name = 'DESCRIPTIONS'
|
||||
ig_data = lt_descriptions ).
|
||||
ENDIF.
|
||||
|
||||
lt_attributes = mi_object_oriented_object_fct->read_attributes( ls_clskey-clsname ).
|
||||
IF lines( lt_attributes ) > 0.
|
||||
io_xml->add( iv_name = 'ATTRIBUTES'
|
||||
ig_data = lt_attributes ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD is_class_locked.
|
||||
|
||||
DATA: lv_argument TYPE seqg3-garg.
|
||||
|
||||
lv_argument = ms_item-obj_name.
|
||||
OVERLAY lv_argument WITH '=============================='.
|
||||
lv_argument = lv_argument && '*'.
|
||||
|
||||
rv_is_class_locked = exists_a_lock_entry_for( iv_lock_object = 'ESEOCLASS'
|
||||
iv_argument = lv_argument ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_object~is_active.
|
||||
rv_active = is_active( ).
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -1,23 +0,0 @@
|
|||
"! This class is just a different name for zcl_zabapgit_object_clas.
|
||||
"! It has been created to heal repositories of the brave ones who uses abapGit
|
||||
"! experimental features "! and had the luck to serialize their CLAS objects with
|
||||
"! the serializer LCL_OBJECT_CLAS_NEW.
|
||||
"! It can be removed on 2019-04 where we expect all CLAS object being
|
||||
"! re-serialized with the serializer LCL_OBJECT_CLAS.
|
||||
"! References: https://github.com/larshp/abapGit/pull/1311
|
||||
CLASS zcl_abapgit_object_clas_new DEFINITION PUBLIC INHERITING FROM zcl_abapgit_object_clas.
|
||||
|
||||
PROTECTED SECTION.
|
||||
METHODS:
|
||||
get_metadata REDEFINITION.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS zcl_abapgit_object_clas_new IMPLEMENTATION.
|
||||
|
||||
METHOD get_metadata.
|
||||
rs_metadata = super->get_metadata( ).
|
||||
rs_metadata-class = 'ZCL_ABAPGIT_OBJECT_CLAS'.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
|
@ -1,16 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_OBJECT_CLAS_NEW</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -1,24 +1,377 @@
|
|||
CLASS zcl_abapgit_oo_class DEFINITION PUBLIC INHERITING FROM zcl_abapgit_oo_base.
|
||||
CLASS zcl_abapgit_oo_class DEFINITION
|
||||
PUBLIC
|
||||
INHERITING FROM zcl_abapgit_oo_base
|
||||
CREATE PUBLIC .
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
zif_abapgit_oo_object_fnc~create REDEFINITION,
|
||||
zif_abapgit_oo_object_fnc~generate_locals REDEFINITION,
|
||||
zif_abapgit_oo_object_fnc~insert_text_pool REDEFINITION,
|
||||
zif_abapgit_oo_object_fnc~create_sotr REDEFINITION,
|
||||
zif_abapgit_oo_object_fnc~get_includes REDEFINITION,
|
||||
zif_abapgit_oo_object_fnc~get_class_properties REDEFINITION,
|
||||
zif_abapgit_oo_object_fnc~read_text_pool REDEFINITION,
|
||||
zif_abapgit_oo_object_fnc~read_sotr REDEFINITION,
|
||||
zif_abapgit_oo_object_fnc~delete REDEFINITION.
|
||||
|
||||
METHODS zif_abapgit_oo_object_fnc~create
|
||||
REDEFINITION .
|
||||
METHODS zif_abapgit_oo_object_fnc~create_sotr
|
||||
REDEFINITION .
|
||||
METHODS zif_abapgit_oo_object_fnc~delete
|
||||
REDEFINITION .
|
||||
METHODS zif_abapgit_oo_object_fnc~generate_locals
|
||||
REDEFINITION .
|
||||
METHODS zif_abapgit_oo_object_fnc~get_class_properties
|
||||
REDEFINITION .
|
||||
METHODS zif_abapgit_oo_object_fnc~get_includes
|
||||
REDEFINITION .
|
||||
METHODS zif_abapgit_oo_object_fnc~insert_text_pool
|
||||
REDEFINITION .
|
||||
METHODS zif_abapgit_oo_object_fnc~read_sotr
|
||||
REDEFINITION .
|
||||
METHODS zif_abapgit_oo_object_fnc~read_text_pool
|
||||
REDEFINITION .
|
||||
METHODS zif_abapgit_oo_object_fnc~deserialize_source
|
||||
REDEFINITION .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
CLASS-METHODS update_source_index
|
||||
IMPORTING
|
||||
!iv_clsname TYPE csequence
|
||||
!io_scanner TYPE REF TO cl_oo_source_scanner_class .
|
||||
CLASS-METHODS update_report
|
||||
IMPORTING
|
||||
!iv_program TYPE programm
|
||||
!it_source TYPE string_table
|
||||
RETURNING
|
||||
VALUE(rv_updated) TYPE abap_bool
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS generate_classpool
|
||||
IMPORTING
|
||||
!iv_name TYPE seoclsname
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS update_meta
|
||||
IMPORTING
|
||||
!iv_name TYPE seoclsname
|
||||
!iv_exposure TYPE seoexpose
|
||||
!it_source TYPE rswsourcet
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS determine_method_include
|
||||
IMPORTING
|
||||
!iv_name TYPE seoclsname
|
||||
!iv_method TYPE seocpdname
|
||||
RETURNING
|
||||
VALUE(rv_program) TYPE programm
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS init_scanner
|
||||
IMPORTING
|
||||
!it_source TYPE zif_abapgit_definitions=>ty_string_tt
|
||||
!iv_name TYPE seoclsname
|
||||
RETURNING
|
||||
VALUE(ro_scanner) TYPE REF TO cl_oo_source_scanner_class
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS update_full_class_include
|
||||
IMPORTING
|
||||
!iv_classname TYPE seoclsname
|
||||
!it_source TYPE string_table
|
||||
!it_methods TYPE cl_oo_source_scanner_class=>type_method_implementations .
|
||||
CLASS-METHODS create_report
|
||||
IMPORTING
|
||||
!iv_program TYPE programm
|
||||
!it_source TYPE string_table
|
||||
!iv_extension TYPE sychar02
|
||||
!iv_program_type TYPE sychar01
|
||||
!iv_version TYPE r3state .
|
||||
CLASS-METHODS update_cs_number_of_methods
|
||||
IMPORTING
|
||||
!iv_classname TYPE seoclsname
|
||||
!iv_number_of_impl_methods TYPE i .
|
||||
ENDCLASS.
|
||||
|
||||
CLASS zcl_abapgit_oo_class IMPLEMENTATION.
|
||||
|
||||
|
||||
CLASS ZCL_ABAPGIT_OO_CLASS IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD create_report.
|
||||
INSERT REPORT iv_program FROM it_source EXTENSION TYPE iv_extension STATE iv_version PROGRAM TYPE iv_program_type.
|
||||
ASSERT sy-subrc = 0.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
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.
|
||||
zcx_abapgit_exception=>raise( 'error from SEO_METHOD_GENERATE_INCLUDE' ).
|
||||
ENDIF.
|
||||
|
||||
rv_program = cl_oo_classname_service=>get_method_include( ls_mtdkey ).
|
||||
|
||||
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.
|
||||
zcx_abapgit_exception=>raise( 'error from SEO_CLASS_GENERATE_CLASSPOOL' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD init_scanner.
|
||||
|
||||
TRY.
|
||||
ro_scanner = cl_oo_source_scanner_class=>create_class_scanner(
|
||||
clif_name = iv_name
|
||||
source = it_source ).
|
||||
ro_scanner->scan( ).
|
||||
CATCH cx_clif_scan_error.
|
||||
zcx_abapgit_exception=>raise( 'error initializing CLAS scanner' ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD update_cs_number_of_methods.
|
||||
|
||||
" Indirect access to keep downward compatibility
|
||||
DATA lr_cache_entry TYPE REF TO data.
|
||||
|
||||
FIELD-SYMBOLS: <lg_cache_entry> TYPE any,
|
||||
<lg_field> TYPE any.
|
||||
|
||||
|
||||
TRY.
|
||||
CREATE DATA lr_cache_entry TYPE ('SEO_CS_CACHE').
|
||||
CATCH cx_sy_create_data_error.
|
||||
* does not exist in some older systems
|
||||
RETURN.
|
||||
ENDTRY.
|
||||
|
||||
ASSIGN lr_cache_entry->* TO <lg_cache_entry>.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ASSIGN COMPONENT 'CLSNAME' OF STRUCTURE <lg_cache_entry>
|
||||
TO <lg_field>.
|
||||
ASSERT sy-subrc = 0.
|
||||
<lg_field> = iv_classname.
|
||||
|
||||
ASSIGN COMPONENT 'NO_OF_METHOD_IMPLS' OF STRUCTURE <lg_cache_entry>
|
||||
TO <lg_field>.
|
||||
ASSERT sy-subrc = 0.
|
||||
<lg_field> = iv_number_of_impl_methods.
|
||||
|
||||
MODIFY ('SEO_CS_CACHE') FROM <lg_cache_entry>.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD update_full_class_include.
|
||||
|
||||
CONSTANTS: lc_class_source_extension TYPE sychar02 VALUE 'CS',
|
||||
lc_include_program_type TYPE sychar01 VALUE 'I',
|
||||
lc_active_version TYPE r3state VALUE 'A'.
|
||||
|
||||
|
||||
create_report( iv_program = cl_oo_classname_service=>get_cs_name( iv_classname )
|
||||
it_source = it_source
|
||||
iv_extension = lc_class_source_extension
|
||||
iv_program_type = lc_include_program_type
|
||||
iv_version = lc_active_version ).
|
||||
|
||||
" Assuming that all methods that were scanned are implemented
|
||||
update_cs_number_of_methods( iv_classname = iv_classname
|
||||
iv_number_of_impl_methods = lines( it_methods ) ).
|
||||
|
||||
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.
|
||||
|
||||
TRY.
|
||||
CREATE OBJECT lo_update TYPE ('CL_OO_CLASS_SECTION_SOURCE')
|
||||
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.
|
||||
CATCH cx_sy_dyn_call_param_not_found.
|
||||
* downport to 702, see https://github.com/larshp/abapGit/issues/933
|
||||
* this will READ REPORT instead of using it_source, which should be okay
|
||||
CREATE OBJECT lo_update TYPE cl_oo_class_section_source
|
||||
EXPORTING
|
||||
clskey = ls_clskey
|
||||
exposure = iv_exposure
|
||||
state = 'A'
|
||||
EXCEPTIONS
|
||||
class_not_existing = 1
|
||||
read_source_error = 2
|
||||
OTHERS = 3.
|
||||
ENDTRY.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error instantiating CL_OO_CLASS_SECTION_SOURCE' ).
|
||||
ENDIF.
|
||||
|
||||
lo_update->set_dark_mode( seox_true ).
|
||||
TRY.
|
||||
CALL METHOD lo_update->('SET_AMDP_SUPPORT')
|
||||
EXPORTING
|
||||
enabled = abap_true.
|
||||
CATCH cx_sy_dyn_call_illegal_method.
|
||||
* AMDP not supported in this system, ignore error
|
||||
ENDTRY.
|
||||
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.
|
||||
zcx_abapgit_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 update_report.
|
||||
|
||||
DATA: lt_old TYPE string_table.
|
||||
|
||||
READ REPORT iv_program INTO lt_old.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Fatal error. Include { iv_program } should have been created previously!| ).
|
||||
ENDIF.
|
||||
|
||||
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 update_source_index.
|
||||
|
||||
CONSTANTS:
|
||||
lc_version_active TYPE r3state VALUE 'A', "#EC NOTEXT
|
||||
lc_version_inactive TYPE r3state VALUE 'I'. "#EC NOTEXT
|
||||
|
||||
" dynamic invocation, IF_OO_SOURCE_POS_INDEX_HELPER doesn't exist in 702.
|
||||
DATA lo_index_helper TYPE REF TO object.
|
||||
|
||||
TRY.
|
||||
CREATE OBJECT lo_index_helper TYPE ('CL_OO_SOURCE_POS_INDEX_HELPER').
|
||||
|
||||
CALL METHOD lo_index_helper->('IF_OO_SOURCE_POS_INDEX_HELPER~CREATE_INDEX_WITH_SCANNER')
|
||||
EXPORTING
|
||||
class_name = iv_clsname
|
||||
version = lc_version_active
|
||||
scanner = io_scanner.
|
||||
|
||||
CALL METHOD lo_index_helper->('IF_OO_SOURCE_POS_INDEX_HELPER~DELETE_INDEX')
|
||||
EXPORTING
|
||||
class_name = iv_clsname
|
||||
version = lc_version_inactive.
|
||||
|
||||
CATCH cx_root.
|
||||
" it's probably okay to no update the index
|
||||
RETURN.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~create.
|
||||
|
||||
DATA: lt_vseoattrib TYPE seoo_attributes_r.
|
||||
FIELD-SYMBOLS: <lv_clsname> TYPE seoclsname.
|
||||
|
||||
* same as in super class, but with "version = seoc_version_active"
|
||||
|
||||
ASSIGN COMPONENT 'CLSNAME' OF STRUCTURE cg_properties TO <lv_clsname>.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
|
@ -30,6 +383,7 @@ CLASS zcl_abapgit_oo_class IMPLEMENTATION.
|
|||
EXPORTING
|
||||
devclass = iv_package
|
||||
overwrite = iv_overwrite
|
||||
version = seoc_version_active
|
||||
CHANGING
|
||||
class = cg_properties
|
||||
attributes = lt_vseoattrib
|
||||
|
@ -44,44 +398,9 @@ CLASS zcl_abapgit_oo_class IMPLEMENTATION.
|
|||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from SEO_CLASS_CREATE_COMPLETE' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~generate_locals.
|
||||
CALL FUNCTION 'SEO_CLASS_GENERATE_LOCALS'
|
||||
EXPORTING
|
||||
clskey = is_key
|
||||
force = iv_force
|
||||
locals_def = it_local_definitions
|
||||
locals_imp = it_local_implementations
|
||||
locals_mac = it_local_macros
|
||||
locals_testclasses = it_local_test_classes
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
model_only = 2
|
||||
locals_not_generated = 3
|
||||
locals_not_initialised = 4
|
||||
OTHERS = 5.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from generate_locals' ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~insert_text_pool.
|
||||
DATA: lv_cp TYPE program.
|
||||
|
||||
lv_cp = cl_oo_classname_service=>get_classpool_name( iv_class_name ).
|
||||
|
||||
INSERT TEXTPOOL lv_cp
|
||||
FROM it_text_pool
|
||||
LANGUAGE iv_language
|
||||
STATE 'I'.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from INSERT TEXTPOOL' ).
|
||||
ENDIF.
|
||||
|
||||
zcl_abapgit_objects_activation=>add( iv_type = 'REPT'
|
||||
iv_name = lv_cp ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~create_sotr.
|
||||
DATA: lt_sotr TYPE zif_abapgit_definitions=>ty_sotr_tt,
|
||||
|
@ -143,6 +462,176 @@ CLASS zcl_abapgit_oo_class IMPLEMENTATION.
|
|||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~delete.
|
||||
CALL FUNCTION 'SEO_CLASS_DELETE_COMPLETE'
|
||||
EXPORTING
|
||||
clskey = is_deletion_key
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
is_interface = 2
|
||||
db_error = 3
|
||||
no_access = 4
|
||||
other = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc = 1.
|
||||
* ignore deletion of objects that does not exist
|
||||
* this can happen when the SXCI object is deleted before the implementing CLAS
|
||||
RETURN.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error from SEO_CLASS_DELETE_COMPLETE: { sy-subrc }| ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_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.
|
||||
|
||||
|
||||
"Buffer needs to be refreshed,
|
||||
"otherwise standard SAP CLIF_SOURCE reorder methods alphabetically
|
||||
CALL FUNCTION 'SEO_BUFFER_INIT'.
|
||||
CALL FUNCTION 'SEO_BUFFER_REFRESH'
|
||||
EXPORTING
|
||||
cifkey = is_key
|
||||
version = seoc_version_inactive.
|
||||
|
||||
lo_scanner = init_scanner(
|
||||
it_source = it_source
|
||||
iv_name = is_key-clsname ).
|
||||
|
||||
* public
|
||||
lt_source = lo_scanner->get_public_section_source( ).
|
||||
IF lt_source IS NOT INITIAL.
|
||||
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.
|
||||
ENDIF.
|
||||
|
||||
* protected
|
||||
lt_source = lo_scanner->get_protected_section_source( ).
|
||||
IF lt_source IS NOT INITIAL.
|
||||
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.
|
||||
ENDIF.
|
||||
|
||||
* private
|
||||
lt_source = lo_scanner->get_private_section_source( ).
|
||||
IF lt_source IS NOT INITIAL.
|
||||
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.
|
||||
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.
|
||||
zcx_abapgit_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.
|
||||
|
||||
* full class include
|
||||
update_full_class_include( iv_classname = is_key-clsname
|
||||
it_source = it_source
|
||||
it_methods = lt_methods ).
|
||||
|
||||
update_source_index(
|
||||
iv_clsname = is_key-clsname
|
||||
io_scanner = lo_scanner ).
|
||||
|
||||
* TODO, perhaps move this call to somewhere else, to be done while cleaning up the CLAS deserialization
|
||||
zcl_abapgit_objects_activation=>add(
|
||||
iv_type = 'CLAS'
|
||||
iv_name = is_key-clsname ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~generate_locals.
|
||||
|
||||
DATA: lv_program TYPE programm.
|
||||
|
||||
|
||||
IF lines( it_local_definitions ) > 0.
|
||||
lv_program = cl_oo_classname_service=>get_ccdef_name( is_key-clsname ).
|
||||
update_report( iv_program = lv_program
|
||||
it_source = it_local_definitions ).
|
||||
ENDIF.
|
||||
|
||||
IF lines( it_local_implementations ) > 0.
|
||||
lv_program = cl_oo_classname_service=>get_ccimp_name( is_key-clsname ).
|
||||
update_report( iv_program = lv_program
|
||||
it_source = it_local_implementations ).
|
||||
ENDIF.
|
||||
|
||||
IF lines( it_local_macros ) > 0.
|
||||
lv_program = cl_oo_classname_service=>get_ccmac_name( is_key-clsname ).
|
||||
update_report( iv_program = lv_program
|
||||
it_source = it_local_macros ).
|
||||
ENDIF.
|
||||
|
||||
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 zif_abapgit_oo_object_fnc~get_class_properties.
|
||||
CALL FUNCTION 'SEO_CLIF_GET'
|
||||
EXPORTING
|
||||
cifkey = is_class_key
|
||||
version = seoc_version_active
|
||||
IMPORTING
|
||||
class = rs_class_properties
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
deleted = 2
|
||||
model_only = 3
|
||||
OTHERS = 4.
|
||||
IF sy-subrc = 1.
|
||||
RETURN. " in case only inactive version exists
|
||||
ELSEIF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from seo_clif_get' ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~get_includes.
|
||||
* note: includes returned might not exist
|
||||
* method cl_oo_classname_service=>GET_ALL_CLASS_INCLUDES does not exist in 702
|
||||
|
@ -187,33 +676,25 @@ CLASS zcl_abapgit_oo_class IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~get_class_properties.
|
||||
CALL FUNCTION 'SEO_CLIF_GET'
|
||||
EXPORTING
|
||||
cifkey = is_class_key
|
||||
version = seoc_version_active
|
||||
IMPORTING
|
||||
class = rs_class_properties
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
deleted = 2
|
||||
model_only = 3
|
||||
OTHERS = 4.
|
||||
IF sy-subrc = 1.
|
||||
RETURN. " in case only inactive version exists
|
||||
ELSEIF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from seo_clif_get' ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~read_text_pool.
|
||||
DATA:
|
||||
lv_cp TYPE program.
|
||||
METHOD zif_abapgit_oo_object_fnc~insert_text_pool.
|
||||
DATA: lv_cp TYPE program.
|
||||
|
||||
lv_cp = cl_oo_classname_service=>get_classpool_name( iv_class_name ).
|
||||
READ TEXTPOOL lv_cp INTO rt_text_pool LANGUAGE iv_language. "#EC CI_READ_REP
|
||||
|
||||
INSERT TEXTPOOL lv_cp
|
||||
FROM it_text_pool
|
||||
LANGUAGE iv_language
|
||||
STATE 'I'.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from INSERT TEXTPOOL' ).
|
||||
ENDIF.
|
||||
|
||||
zcl_abapgit_objects_activation=>add( iv_type = 'REPT'
|
||||
iv_name = lv_cp ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~read_sotr.
|
||||
DATA: lv_concept TYPE sotr_head-concept,
|
||||
lt_seocompodf TYPE STANDARD TABLE OF seocompodf WITH DEFAULT KEY,
|
||||
|
@ -273,24 +754,12 @@ CLASS zcl_abapgit_oo_class IMPLEMENTATION.
|
|||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~delete.
|
||||
CALL FUNCTION 'SEO_CLASS_DELETE_COMPLETE'
|
||||
EXPORTING
|
||||
clskey = is_deletion_key
|
||||
EXCEPTIONS
|
||||
not_existing = 1
|
||||
is_interface = 2
|
||||
db_error = 3
|
||||
no_access = 4
|
||||
other = 5
|
||||
OTHERS = 6.
|
||||
IF sy-subrc = 1.
|
||||
* ignore deletion of objects that does not exist
|
||||
* this can happen when the SXCI object is deleted before the implementing CLAS
|
||||
RETURN.
|
||||
ELSEIF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Error from SEO_CLASS_DELETE_COMPLETE: { sy-subrc }| ).
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~read_text_pool.
|
||||
DATA:
|
||||
lv_cp TYPE program.
|
||||
|
||||
lv_cp = cl_oo_classname_service=>get_classpool_name( iv_class_name ).
|
||||
READ TEXTPOOL lv_cp INTO rt_text_pool LANGUAGE iv_language. "#EC CI_READ_REP
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
|
|
@ -1,510 +0,0 @@
|
|||
CLASS zcl_abapgit_oo_class_new DEFINITION PUBLIC INHERITING FROM zcl_abapgit_oo_class.
|
||||
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
zif_abapgit_oo_object_fnc~create REDEFINITION,
|
||||
zif_abapgit_oo_object_fnc~generate_locals REDEFINITION,
|
||||
zif_abapgit_oo_object_fnc~deserialize_source REDEFINITION.
|
||||
|
||||
PRIVATE SECTION.
|
||||
|
||||
CLASS-METHODS update_source_index
|
||||
IMPORTING
|
||||
!iv_clsname TYPE csequence
|
||||
!io_scanner TYPE REF TO cl_oo_source_scanner_class .
|
||||
CLASS-METHODS update_report
|
||||
IMPORTING
|
||||
!iv_program TYPE programm
|
||||
!it_source TYPE string_table
|
||||
RETURNING
|
||||
VALUE(rv_updated) TYPE abap_bool
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS generate_classpool
|
||||
IMPORTING
|
||||
!iv_name TYPE seoclsname
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS update_meta
|
||||
IMPORTING
|
||||
!iv_name TYPE seoclsname
|
||||
!iv_exposure TYPE seoexpose
|
||||
!it_source TYPE rswsourcet
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS determine_method_include
|
||||
IMPORTING
|
||||
!iv_name TYPE seoclsname
|
||||
!iv_method TYPE seocpdname
|
||||
RETURNING
|
||||
VALUE(rv_program) TYPE programm
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS init_scanner
|
||||
IMPORTING
|
||||
!it_source TYPE zif_abapgit_definitions=>ty_string_tt
|
||||
!iv_name TYPE seoclsname
|
||||
RETURNING
|
||||
VALUE(ro_scanner) TYPE REF TO cl_oo_source_scanner_class
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS update_full_class_include
|
||||
IMPORTING
|
||||
!iv_classname TYPE seoclsname
|
||||
!it_source TYPE string_table
|
||||
!it_methods TYPE cl_oo_source_scanner_class=>type_method_implementations .
|
||||
CLASS-METHODS create_report
|
||||
IMPORTING
|
||||
!iv_program TYPE programm
|
||||
!it_source TYPE string_table
|
||||
!iv_extension TYPE sychar02
|
||||
!iv_program_type TYPE sychar01
|
||||
!iv_version TYPE r3state .
|
||||
CLASS-METHODS update_cs_number_of_methods
|
||||
IMPORTING
|
||||
!iv_classname TYPE seoclsname
|
||||
!iv_number_of_impl_methods TYPE i .
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_oo_class_new IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD create_report.
|
||||
INSERT REPORT iv_program FROM it_source EXTENSION TYPE iv_extension STATE iv_version PROGRAM TYPE iv_program_type.
|
||||
ASSERT sy-subrc = 0.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
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.
|
||||
zcx_abapgit_exception=>raise( 'error from SEO_METHOD_GENERATE_INCLUDE' ).
|
||||
ENDIF.
|
||||
|
||||
rv_program = cl_oo_classname_service=>get_method_include( ls_mtdkey ).
|
||||
|
||||
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.
|
||||
zcx_abapgit_exception=>raise( 'error from SEO_CLASS_GENERATE_CLASSPOOL' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD init_scanner.
|
||||
|
||||
TRY.
|
||||
ro_scanner = cl_oo_source_scanner_class=>create_class_scanner(
|
||||
clif_name = iv_name
|
||||
source = it_source ).
|
||||
ro_scanner->scan( ).
|
||||
CATCH cx_clif_scan_error.
|
||||
zcx_abapgit_exception=>raise( 'error initializing CLAS scanner' ).
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD update_cs_number_of_methods.
|
||||
|
||||
" Indirect access to keep downward compatibility
|
||||
DATA lr_cache_entry TYPE REF TO data.
|
||||
|
||||
FIELD-SYMBOLS: <lg_cache_entry> TYPE any,
|
||||
<lg_field> TYPE any.
|
||||
|
||||
|
||||
TRY.
|
||||
CREATE DATA lr_cache_entry TYPE ('SEO_CS_CACHE').
|
||||
CATCH cx_sy_create_data_error.
|
||||
* does not exist in some older systems
|
||||
RETURN.
|
||||
ENDTRY.
|
||||
|
||||
ASSIGN lr_cache_entry->* TO <lg_cache_entry>.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
ASSIGN COMPONENT 'CLSNAME' OF STRUCTURE <lg_cache_entry>
|
||||
TO <lg_field>.
|
||||
ASSERT sy-subrc = 0.
|
||||
<lg_field> = iv_classname.
|
||||
|
||||
ASSIGN COMPONENT 'NO_OF_METHOD_IMPLS' OF STRUCTURE <lg_cache_entry>
|
||||
TO <lg_field>.
|
||||
ASSERT sy-subrc = 0.
|
||||
<lg_field> = iv_number_of_impl_methods.
|
||||
|
||||
MODIFY ('SEO_CS_CACHE') FROM <lg_cache_entry>.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD update_full_class_include.
|
||||
|
||||
CONSTANTS: lc_class_source_extension TYPE sychar02 VALUE 'CS',
|
||||
lc_include_program_type TYPE sychar01 VALUE 'I',
|
||||
lc_active_version TYPE r3state VALUE 'A'.
|
||||
|
||||
|
||||
create_report( iv_program = cl_oo_classname_service=>get_cs_name( iv_classname )
|
||||
it_source = it_source
|
||||
iv_extension = lc_class_source_extension
|
||||
iv_program_type = lc_include_program_type
|
||||
iv_version = lc_active_version ).
|
||||
|
||||
" Assuming that all methods that were scanned are implemented
|
||||
update_cs_number_of_methods( iv_classname = iv_classname
|
||||
iv_number_of_impl_methods = lines( it_methods ) ).
|
||||
|
||||
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.
|
||||
|
||||
TRY.
|
||||
CREATE OBJECT lo_update TYPE ('CL_OO_CLASS_SECTION_SOURCE')
|
||||
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.
|
||||
CATCH cx_sy_dyn_call_param_not_found.
|
||||
* downport to 702, see https://github.com/larshp/abapGit/issues/933
|
||||
* this will READ REPORT instead of using it_source, which should be okay
|
||||
CREATE OBJECT lo_update TYPE cl_oo_class_section_source
|
||||
EXPORTING
|
||||
clskey = ls_clskey
|
||||
exposure = iv_exposure
|
||||
state = 'A'
|
||||
EXCEPTIONS
|
||||
class_not_existing = 1
|
||||
read_source_error = 2
|
||||
OTHERS = 3.
|
||||
ENDTRY.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error instantiating CL_OO_CLASS_SECTION_SOURCE' ).
|
||||
ENDIF.
|
||||
|
||||
lo_update->set_dark_mode( seox_true ).
|
||||
TRY.
|
||||
CALL METHOD lo_update->('SET_AMDP_SUPPORT')
|
||||
EXPORTING
|
||||
enabled = abap_true.
|
||||
CATCH cx_sy_dyn_call_illegal_method.
|
||||
* AMDP not supported in this system, ignore error
|
||||
ENDTRY.
|
||||
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.
|
||||
zcx_abapgit_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 update_report.
|
||||
|
||||
DATA: lt_old TYPE string_table.
|
||||
|
||||
READ REPORT iv_program INTO lt_old.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( |Fatal error. Include { iv_program } should have been created previously!| ).
|
||||
ENDIF.
|
||||
|
||||
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 update_source_index.
|
||||
|
||||
CONSTANTS:
|
||||
lc_version_active TYPE r3state VALUE 'A', "#EC NOTEXT
|
||||
lc_version_inactive TYPE r3state VALUE 'I'. "#EC NOTEXT
|
||||
|
||||
" dynamic invocation, IF_OO_SOURCE_POS_INDEX_HELPER doesn't exist in 702.
|
||||
DATA lo_index_helper TYPE REF TO object.
|
||||
|
||||
TRY.
|
||||
CREATE OBJECT lo_index_helper TYPE ('CL_OO_SOURCE_POS_INDEX_HELPER').
|
||||
|
||||
CALL METHOD lo_index_helper->('IF_OO_SOURCE_POS_INDEX_HELPER~CREATE_INDEX_WITH_SCANNER')
|
||||
EXPORTING
|
||||
class_name = iv_clsname
|
||||
version = lc_version_active
|
||||
scanner = io_scanner.
|
||||
|
||||
CALL METHOD lo_index_helper->('IF_OO_SOURCE_POS_INDEX_HELPER~DELETE_INDEX')
|
||||
EXPORTING
|
||||
class_name = iv_clsname
|
||||
version = lc_version_inactive.
|
||||
|
||||
CATCH cx_root.
|
||||
" it's probably okay to no update the index
|
||||
RETURN.
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~create.
|
||||
DATA: lt_vseoattrib TYPE seoo_attributes_r.
|
||||
FIELD-SYMBOLS: <lv_clsname> TYPE seoclsname.
|
||||
|
||||
* same as in super class, but with "version = seoc_version_active"
|
||||
|
||||
ASSIGN COMPONENT 'CLSNAME' OF STRUCTURE cg_properties TO <lv_clsname>.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
lt_vseoattrib = convert_attrib_to_vseoattrib(
|
||||
iv_clsname = <lv_clsname>
|
||||
it_attributes = it_attributes ).
|
||||
|
||||
CALL FUNCTION 'SEO_CLASS_CREATE_COMPLETE'
|
||||
EXPORTING
|
||||
devclass = iv_package
|
||||
overwrite = iv_overwrite
|
||||
version = seoc_version_active
|
||||
CHANGING
|
||||
class = cg_properties
|
||||
attributes = lt_vseoattrib
|
||||
EXCEPTIONS
|
||||
existing = 1
|
||||
is_interface = 2
|
||||
db_error = 3
|
||||
component_error = 4
|
||||
no_access = 5
|
||||
other = 6
|
||||
OTHERS = 7.
|
||||
IF sy-subrc <> 0.
|
||||
zcx_abapgit_exception=>raise( 'error from SEO_CLASS_CREATE_COMPLETE' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_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.
|
||||
|
||||
|
||||
"Buffer needs to be refreshed,
|
||||
"otherwise standard SAP CLIF_SOURCE reorder methods alphabetically
|
||||
CALL FUNCTION 'SEO_BUFFER_INIT'.
|
||||
CALL FUNCTION 'SEO_BUFFER_REFRESH'
|
||||
EXPORTING
|
||||
cifkey = is_key
|
||||
version = seoc_version_inactive.
|
||||
|
||||
lo_scanner = init_scanner(
|
||||
it_source = it_source
|
||||
iv_name = is_key-clsname ).
|
||||
|
||||
* public
|
||||
lt_source = lo_scanner->get_public_section_source( ).
|
||||
IF lt_source IS NOT INITIAL.
|
||||
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.
|
||||
ENDIF.
|
||||
|
||||
* protected
|
||||
lt_source = lo_scanner->get_protected_section_source( ).
|
||||
IF lt_source IS NOT INITIAL.
|
||||
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.
|
||||
ENDIF.
|
||||
|
||||
* private
|
||||
lt_source = lo_scanner->get_private_section_source( ).
|
||||
IF lt_source IS NOT INITIAL.
|
||||
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.
|
||||
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.
|
||||
zcx_abapgit_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.
|
||||
|
||||
* full class include
|
||||
update_full_class_include( iv_classname = is_key-clsname
|
||||
it_source = it_source
|
||||
it_methods = lt_methods ).
|
||||
|
||||
update_source_index(
|
||||
iv_clsname = is_key-clsname
|
||||
io_scanner = lo_scanner ).
|
||||
|
||||
* TODO, perhaps move this call to somewhere else, to be done while cleaning up the CLAS deserialization
|
||||
zcl_abapgit_objects_activation=>add(
|
||||
iv_type = 'CLAS'
|
||||
iv_name = is_key-clsname ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD zif_abapgit_oo_object_fnc~generate_locals.
|
||||
|
||||
DATA: lv_program TYPE programm.
|
||||
|
||||
|
||||
IF lines( it_local_definitions ) > 0.
|
||||
lv_program = cl_oo_classname_service=>get_ccdef_name( is_key-clsname ).
|
||||
update_report( iv_program = lv_program
|
||||
it_source = it_local_definitions ).
|
||||
ENDIF.
|
||||
|
||||
IF lines( it_local_implementations ) > 0.
|
||||
lv_program = cl_oo_classname_service=>get_ccimp_name( is_key-clsname ).
|
||||
update_report( iv_program = lv_program
|
||||
it_source = it_local_implementations ).
|
||||
ENDIF.
|
||||
|
||||
IF lines( it_local_macros ) > 0.
|
||||
lv_program = cl_oo_classname_service=>get_ccmac_name( is_key-clsname ).
|
||||
update_report( iv_program = lv_program
|
||||
it_source = it_local_macros ).
|
||||
ENDIF.
|
||||
|
||||
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.
|
||||
ENDCLASS.
|
|
@ -1,16 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<VSEOCLASS>
|
||||
<CLSNAME>ZCL_ABAPGIT_OO_CLASS_NEW</CLSNAME>
|
||||
<VERSION>1</VERSION>
|
||||
<LANGU>E</LANGU>
|
||||
<STATE>1</STATE>
|
||||
<CLSCCINCL>X</CLSCCINCL>
|
||||
<FIXPT>X</FIXPT>
|
||||
<UNICODE>X</UNICODE>
|
||||
</VSEOCLASS>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -385,11 +385,6 @@ CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
|||
lv_class_name = class_name( is_item ).
|
||||
ENDIF.
|
||||
|
||||
* IF zcl_abapgit_persist_settings=>get_instance( )->read( )->get_experimental_features( ) = abap_true
|
||||
* AND is_item-obj_type = 'CLAS'.
|
||||
* lv_class_name = 'LCL_OBJECT_CLAS_NEW'.
|
||||
* ENDIF.
|
||||
|
||||
REPLACE FIRST OCCURRENCE OF 'LCL' IN lv_class_name WITH 'ZCL_ABAPGIT'.
|
||||
|
||||
TRY.
|
||||
|
|
Loading…
Reference in New Issue
Block a user