mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +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_object_serializing. " All serializing classes here
|
||||||
|
|
||||||
|
INCLUDE zabapgit_skip_objects.
|
||||||
|
|
||||||
INCLUDE zabapgit_repo_impl.
|
INCLUDE zabapgit_repo_impl.
|
||||||
INCLUDE zabapgit_background.
|
INCLUDE zabapgit_background.
|
||||||
INCLUDE zabapgit_transport.
|
INCLUDE zabapgit_transport.
|
||||||
|
|
|
@ -144,8 +144,8 @@ CLASS lcl_file_status IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD status.
|
METHOD status.
|
||||||
|
|
||||||
DATA: lv_index LIKE sy-tabix,
|
DATA: lv_index LIKE sy-tabix,
|
||||||
lo_dot_abapgit TYPE REF TO lcl_dot_abapgit.
|
lo_dot_abapgit TYPE REF TO lcl_dot_abapgit.
|
||||||
|
|
||||||
FIELD-SYMBOLS <ls_result> LIKE LINE OF rt_results.
|
FIELD-SYMBOLS <ls_result> LIKE LINE OF rt_results.
|
||||||
|
|
||||||
|
|
|
@ -125,7 +125,12 @@ INTERFACE lif_oo_object_fnc.
|
||||||
IMPORTING
|
IMPORTING
|
||||||
is_deletion_key TYPE seoclskey
|
is_deletion_key TYPE seoclskey
|
||||||
RAISING
|
RAISING
|
||||||
lcx_exception.
|
lcx_exception,
|
||||||
|
read_superclass
|
||||||
|
IMPORTING
|
||||||
|
iv_classname TYPE seoclsname
|
||||||
|
RETURNING
|
||||||
|
VALUE(rv_superclass) TYPE seoclsname.
|
||||||
ENDINTERFACE.
|
ENDINTERFACE.
|
||||||
|
|
||||||
CLASS lcl_oo_serializer DEFINITION.
|
CLASS lcl_oo_serializer DEFINITION.
|
||||||
|
@ -612,6 +617,11 @@ CLASS lcl_oo_base IMPLEMENTATION.
|
||||||
ASSERT 0 = 1. "Subclass responsibility
|
ASSERT 0 = 1. "Subclass responsibility
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD lif_oo_object_fnc~read_superclass.
|
||||||
|
SELECT SINGLE refclsname FROM vseoextend INTO rv_superclass
|
||||||
|
WHERE clsname = iv_classname.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
"Backdoor injection for test purposes
|
"Backdoor injection for test purposes
|
||||||
|
|
|
@ -636,7 +636,8 @@ CLASS lcl_repo IMPLEMENTATION.
|
||||||
lt_tadir = lcl_tadir=>read(
|
lt_tadir = lcl_tadir=>read(
|
||||||
iv_package = get_package( )
|
iv_package = get_package( )
|
||||||
iv_ignore_subpackages = ignore_subpackages( )
|
iv_ignore_subpackages = ignore_subpackages( )
|
||||||
io_dot = get_dot_abapgit( ) ).
|
io_dot = get_dot_abapgit( )
|
||||||
|
io_log = io_log ).
|
||||||
|
|
||||||
lt_filter = it_filter.
|
lt_filter = it_filter.
|
||||||
lv_filter_exist = boolc( lines( lt_filter ) > 0 ).
|
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.
|
CLASS lcl_tadir DEFINITION FINAL.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
|
@ -15,6 +33,7 @@ CLASS lcl_tadir DEFINITION FINAL.
|
||||||
IMPORTING iv_package TYPE tadir-devclass
|
IMPORTING iv_package TYPE tadir-devclass
|
||||||
iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false
|
iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false
|
||||||
io_dot TYPE REF TO lcl_dot_abapgit OPTIONAL
|
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
|
RETURNING VALUE(rt_tadir) TYPE lif_defs=>ty_tadir_tt
|
||||||
RAISING lcx_exception,
|
RAISING lcx_exception,
|
||||||
read_single
|
read_single
|
||||||
|
@ -50,6 +69,7 @@ CLASS lcl_tadir DEFINITION FINAL.
|
||||||
iv_top TYPE tadir-devclass
|
iv_top TYPE tadir-devclass
|
||||||
io_dot TYPE REF TO lcl_dot_abapgit
|
io_dot TYPE REF TO lcl_dot_abapgit
|
||||||
iv_ignore_subpackages TYPE abap_bool DEFAULT abap_false
|
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
|
RETURNING VALUE(rt_tadir) TYPE lif_defs=>ty_tadir_tt
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
@ -188,7 +208,8 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
rt_tadir = build( iv_package = iv_package
|
rt_tadir = build( iv_package = iv_package
|
||||||
iv_top = iv_package
|
iv_top = iv_package
|
||||||
io_dot = io_dot
|
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 ).
|
rt_tadir = check_exists( rt_tadir ).
|
||||||
|
|
||||||
|
@ -196,9 +217,10 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD build.
|
METHOD build.
|
||||||
|
|
||||||
DATA: lt_tadir TYPE lif_defs=>ty_tadir_tt,
|
DATA: lt_tadir TYPE lif_defs=>ty_tadir_tt,
|
||||||
lt_tdevc TYPE STANDARD TABLE OF tdevc,
|
lt_tdevc TYPE STANDARD TABLE OF tdevc,
|
||||||
lv_path TYPE string.
|
lv_path TYPE string,
|
||||||
|
lo_skip_objects TYPE REF TO lcl_skip_objects.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_tdevc> LIKE LINE OF lt_tdevc,
|
FIELD-SYMBOLS: <ls_tdevc> LIKE LINE OF lt_tdevc,
|
||||||
<ls_tadir> LIKE LINE OF rt_tadir.
|
<ls_tadir> LIKE LINE OF rt_tadir.
|
||||||
|
@ -216,6 +238,11 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
AND delflag = abap_false
|
AND delflag = abap_false
|
||||||
ORDER BY PRIMARY KEY. "#EC CI_GENBUFF "#EC CI_SUBRC
|
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.
|
IF NOT io_dot IS INITIAL.
|
||||||
lv_path = lcl_folder_logic=>package_to_path(
|
lv_path = lcl_folder_logic=>package_to_path(
|
||||||
iv_top = iv_top
|
iv_top = iv_top
|
||||||
|
@ -243,7 +270,8 @@ CLASS lcl_tadir IMPLEMENTATION.
|
||||||
LOOP AT lt_tdevc ASSIGNING <ls_tdevc>.
|
LOOP AT lt_tdevc ASSIGNING <ls_tdevc>.
|
||||||
lt_tadir = build( iv_package = <ls_tdevc>-devclass
|
lt_tadir = build( iv_package = <ls_tdevc>-devclass
|
||||||
iv_top = iv_top
|
iv_top = iv_top
|
||||||
io_dot = io_dot ).
|
io_dot = io_dot
|
||||||
|
io_log = io_log ).
|
||||||
APPEND LINES OF lt_tadir TO rt_tadir.
|
APPEND LINES OF lt_tadir TO rt_tadir.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
|
|
@ -150,6 +150,10 @@ CLASS ltd_spy_oo_object IMPLEMENTATION.
|
||||||
ms_delete_key = is_deletion_key.
|
ms_delete_key = is_deletion_key.
|
||||||
ENDMETHOD.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
METHOD lif_oo_object_fnc~read_superclass.
|
||||||
|
RETURN.
|
||||||
|
ENDMETHOD.
|
||||||
|
|
||||||
ENDCLASS.
|
ENDCLASS.
|
||||||
|
|
||||||
CLASS ltd_fake_object_files DEFINITION FOR TESTING
|
CLASS ltd_fake_object_files DEFINITION FOR TESTING
|
||||||
|
|
Loading…
Reference in New Issue
Block a user