Merge pull request #928 from EduardoCopat/sadl-generated-class

Fixes #921 DDLS skip generated SADL classes
This commit is contained in:
Lars Hvam 2017-10-01 09:00:49 +02:00 committed by GitHub
commit f4c1932375
8 changed files with 126 additions and 9 deletions

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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 ).

View 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.

View 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>

View File

@ -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.

View File

@ -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