mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
Merge pull request #928 from EduardoCopat/sadl-generated-class
Fixes #921 DDLS skip generated SADL classes
This commit is contained in:
commit
f4c1932375
|
@ -67,6 +67,8 @@ INCLUDE zabapgit_objects_impl.
|
|||
|
||||
INCLUDE zabapgit_object_serializing. " All serializing classes here
|
||||
|
||||
INCLUDE zabapgit_skip_objects.
|
||||
|
||||
INCLUDE zabapgit_repo_impl.
|
||||
INCLUDE zabapgit_background.
|
||||
INCLUDE zabapgit_transport.
|
||||
|
|
|
@ -144,8 +144,8 @@ CLASS lcl_file_status IMPLEMENTATION.
|
|||
|
||||
METHOD status.
|
||||
|
||||
DATA: lv_index LIKE sy-tabix,
|
||||
lo_dot_abapgit TYPE REF TO lcl_dot_abapgit.
|
||||
DATA: lv_index LIKE sy-tabix,
|
||||
lo_dot_abapgit TYPE REF TO lcl_dot_abapgit.
|
||||
|
||||
FIELD-SYMBOLS <ls_result> LIKE LINE OF rt_results.
|
||||
|
||||
|
|
|
@ -125,7 +125,12 @@ INTERFACE lif_oo_object_fnc.
|
|||
IMPORTING
|
||||
is_deletion_key TYPE seoclskey
|
||||
RAISING
|
||||
lcx_exception.
|
||||
lcx_exception,
|
||||
read_superclass
|
||||
IMPORTING
|
||||
iv_classname TYPE seoclsname
|
||||
RETURNING
|
||||
VALUE(rv_superclass) TYPE seoclsname.
|
||||
ENDINTERFACE.
|
||||
|
||||
CLASS lcl_oo_serializer DEFINITION.
|
||||
|
@ -612,6 +617,11 @@ CLASS lcl_oo_base IMPLEMENTATION.
|
|||
ASSERT 0 = 1. "Subclass responsibility
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_oo_object_fnc~read_superclass.
|
||||
SELECT SINGLE refclsname FROM vseoextend INTO rv_superclass
|
||||
WHERE clsname = iv_classname.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
"Backdoor injection for test purposes
|
||||
|
|
|
@ -636,7 +636,8 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
lt_tadir = lcl_tadir=>read(
|
||||
iv_package = get_package( )
|
||||
iv_ignore_subpackages = ignore_subpackages( )
|
||||
io_dot = get_dot_abapgit( ) ).
|
||||
io_dot = get_dot_abapgit( )
|
||||
io_log = io_log ).
|
||||
|
||||
lt_filter = it_filter.
|
||||
lv_filter_exist = boolc( lines( lt_filter ) > 0 ).
|
||||
|
|
47
src/zabapgit_skip_objects.prog.abap
Normal file
47
src/zabapgit_skip_objects.prog.abap
Normal file
|
@ -0,0 +1,47 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include zabapgit_skip_objects
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_skip_objects IMPLEMENTATION.
|
||||
METHOD skip_sadl_generated_objects.
|
||||
DATA: ls_tadir_class LIKE LINE OF rt_tadir,
|
||||
lo_sadl_class TYPE REF TO lif_object,
|
||||
ls_item TYPE lif_defs=>ty_tadir,
|
||||
ls_tadir LIKE LINE OF rt_tadir,
|
||||
lt_lines_to_delete TYPE lif_defs=>ty_tadir_tt.
|
||||
|
||||
rt_tadir = it_tadir.
|
||||
LOOP AT it_tadir INTO ls_tadir WHERE object = 'DDLS'.
|
||||
LOOP AT rt_tadir INTO ls_tadir_class
|
||||
WHERE object = 'CLAS' AND obj_name CS ls_tadir-obj_name.
|
||||
|
||||
IF has_sadl_superclass( ls_tadir_class ).
|
||||
APPEND ls_tadir_class TO lt_lines_to_delete.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDLOOP.
|
||||
|
||||
DELETE ADJACENT DUPLICATES FROM lt_lines_to_delete.
|
||||
LOOP AT lt_lines_to_delete INTO ls_tadir_class.
|
||||
DELETE TABLE rt_tadir FROM ls_tadir_class.
|
||||
IF io_log IS BOUND.
|
||||
io_log->add(
|
||||
iv_msg = |{ ls_tadir_class-obj_name } skipped: generated by SADL|
|
||||
iv_type = 'W' ).
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD has_sadl_superclass.
|
||||
DATA: lo_oo_functions TYPE REF TO lif_oo_object_fnc,
|
||||
lv_class_name TYPE seoclsname,
|
||||
lv_superclass TYPE seoclsname.
|
||||
|
||||
lo_oo_functions = lcl_oo_factory=>make( is_class-object ).
|
||||
lv_class_name = is_class-obj_name.
|
||||
lv_superclass = lo_oo_functions->read_superclass( lv_class_name ).
|
||||
IF lv_superclass = 'CL_SADL_GTK_EXPOSURE_MPC'.
|
||||
rv_return = abap_true.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
25
src/zabapgit_skip_objects.prog.xml
Normal file
25
src/zabapgit_skip_objects.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_SKIP_OBJECTS</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>Include ZABAPGIT_SKIP_OBJECTS</ENTRY>
|
||||
<LENGTH>29</LENGTH>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -7,6 +7,24 @@
|
|||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_skip_objects DEFINITION.
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
skip_sadl_generated_objects
|
||||
IMPORTING
|
||||
it_tadir TYPE lif_defs=>ty_tadir_tt
|
||||
io_log TYPE REF TO lcl_log OPTIONAL
|
||||
RETURNING
|
||||
VALUE(rt_tadir) TYPE lif_defs=>ty_tadir_tt.
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
has_sadl_superclass
|
||||
IMPORTING
|
||||
is_class TYPE lif_defs=>ty_tadir
|
||||
RETURNING
|
||||
VALUE(rv_return) TYPE abap_bool.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_tadir DEFINITION FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
@ -15,6 +33,7 @@ CLASS lcl_tadir DEFINITION FINAL.
|
|||
IMPORTING iv_package TYPE tadir-devclass
|
||||
iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false
|
||||
io_dot TYPE REF TO lcl_dot_abapgit OPTIONAL
|
||||
io_log TYPE REF TO lcl_log OPTIONAL
|
||||
RETURNING VALUE(rt_tadir) TYPE lif_defs=>ty_tadir_tt
|
||||
RAISING lcx_exception,
|
||||
read_single
|
||||
|
@ -50,6 +69,7 @@ CLASS lcl_tadir DEFINITION FINAL.
|
|||
iv_top TYPE tadir-devclass
|
||||
io_dot TYPE REF TO lcl_dot_abapgit
|
||||
iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false
|
||||
io_log TYPE REF TO lcl_log OPTIONAL
|
||||
RETURNING VALUE(rt_tadir) TYPE lif_defs=>ty_tadir_tt
|
||||
RAISING lcx_exception.
|
||||
|
||||
|
@ -188,7 +208,8 @@ CLASS lcl_tadir IMPLEMENTATION.
|
|||
rt_tadir = build( iv_package = iv_package
|
||||
iv_top = iv_package
|
||||
io_dot = io_dot
|
||||
iv_ignore_subpackages = iv_ignore_subpackages ).
|
||||
iv_ignore_subpackages = iv_ignore_subpackages
|
||||
io_log = io_log ).
|
||||
|
||||
rt_tadir = check_exists( rt_tadir ).
|
||||
|
||||
|
@ -196,9 +217,10 @@ CLASS lcl_tadir IMPLEMENTATION.
|
|||
|
||||
METHOD build.
|
||||
|
||||
DATA: lt_tadir TYPE lif_defs=>ty_tadir_tt,
|
||||
lt_tdevc TYPE STANDARD TABLE OF tdevc,
|
||||
lv_path TYPE string.
|
||||
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.
|
||||
|
||||
FIELD-SYMBOLS: <ls_tdevc> LIKE LINE OF lt_tdevc,
|
||||
<ls_tadir> LIKE LINE OF rt_tadir.
|
||||
|
@ -216,6 +238,11 @@ CLASS lcl_tadir IMPLEMENTATION.
|
|||
AND delflag = abap_false
|
||||
ORDER BY PRIMARY KEY. "#EC CI_GENBUFF "#EC CI_SUBRC
|
||||
|
||||
CREATE OBJECT lo_skip_objects.
|
||||
rt_tadir = lo_skip_objects->skip_sadl_generated_objects(
|
||||
it_tadir = rt_tadir
|
||||
io_log = io_log ).
|
||||
|
||||
IF NOT io_dot IS INITIAL.
|
||||
lv_path = lcl_folder_logic=>package_to_path(
|
||||
iv_top = iv_top
|
||||
|
@ -243,7 +270,8 @@ CLASS lcl_tadir IMPLEMENTATION.
|
|||
LOOP AT lt_tdevc ASSIGNING <ls_tdevc>.
|
||||
lt_tadir = build( iv_package = <ls_tdevc>-devclass
|
||||
iv_top = iv_top
|
||||
io_dot = io_dot ).
|
||||
io_dot = io_dot
|
||||
io_log = io_log ).
|
||||
APPEND LINES OF lt_tadir TO rt_tadir.
|
||||
ENDLOOP.
|
||||
|
||||
|
|
|
@ -150,6 +150,10 @@ CLASS ltd_spy_oo_object IMPLEMENTATION.
|
|||
ms_delete_key = is_deletion_key.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_oo_object_fnc~read_superclass.
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltd_fake_object_files DEFINITION FOR TESTING
|
||||
|
|
Loading…
Reference in New Issue
Block a user