diff --git a/src/objects/core/zcl_abapgit_serialize.clas.abap b/src/objects/core/zcl_abapgit_serialize.clas.abap index 38037a7b1..76cb8e35e 100644 --- a/src/objects/core/zcl_abapgit_serialize.clas.abap +++ b/src/objects/core/zcl_abapgit_serialize.clas.abap @@ -35,6 +35,12 @@ CLASS zcl_abapgit_serialize DEFINITION zcx_abapgit_exception . PROTECTED SECTION. + TYPES: BEGIN OF ty_unsupported_count, + obj_type TYPE tadir-object, + obj_name TYPE tadir-obj_name, + count TYPE i, + END OF ty_unsupported_count, + ty_unsupported_count_tt TYPE HASHED TABLE OF ty_unsupported_count WITH UNIQUE KEY obj_type. TYPES: ty_char32 TYPE c LENGTH 32 . @@ -102,12 +108,15 @@ CLASS zcl_abapgit_serialize DEFINITION VALUE(rv_threads) TYPE i RAISING zcx_abapgit_exception . + METHODS filter_unsupported_objects + CHANGING + !ct_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt. PRIVATE SECTION. ENDCLASS. -CLASS zcl_abapgit_serialize IMPLEMENTATION. +CLASS ZCL_ABAPGIT_SERIALIZE IMPLEMENTATION. METHOD add_apack. @@ -326,6 +335,56 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION. ENDMETHOD. + METHOD filter_unsupported_objects. + + DATA: ls_unsupported_count TYPE ty_unsupported_count, + lt_supported_types TYPE zcl_abapgit_objects=>ty_types_tt, + lt_unsupported_count TYPE ty_unsupported_count_tt. + + FIELD-SYMBOLS: LIKE LINE OF ct_tadir, + TYPE ty_unsupported_count. + + lt_supported_types = zcl_abapgit_objects=>supported_list( ). + LOOP AT ct_tadir ASSIGNING . + CLEAR: ls_unsupported_count. + READ TABLE lt_supported_types WITH KEY table_line = -object TRANSPORTING NO FIELDS. + IF sy-subrc = 0. + CONTINUE. + ENDIF. + + READ TABLE lt_unsupported_count ASSIGNING + WITH TABLE KEY obj_type = -object. + IF sy-subrc <> 0. + ls_unsupported_count-obj_type = -object. + ls_unsupported_count-count = 1. + ls_unsupported_count-obj_name = -obj_name. + INSERT ls_unsupported_count INTO TABLE lt_unsupported_count ASSIGNING . + ELSE. + CLEAR: -obj_name. + -count = -count + 1. + ENDIF. + CLEAR: -object. + ENDLOOP. + IF lt_unsupported_count IS INITIAL. + RETURN. + ENDIF. + + DELETE ct_tadir WHERE object IS INITIAL. + IF mi_log IS BOUND. + LOOP AT lt_unsupported_count ASSIGNING . + IF -count = 1. + mi_log->add_error( iv_msg = |Object type { -obj_type } not supported, { + -obj_name } ignored| ). + ELSE. + mi_log->add_error( iv_msg = |Object type { -obj_type } not supported, { + -count } objects ignored| ). + ENDIF. + ENDLOOP. + ENDIF. + + ENDMETHOD. + + METHOD on_end_of_task. * this method will be called from the parallel processing, thus it must be public @@ -440,7 +499,8 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION. * serializes only objects DATA: lv_max TYPE i, - li_progress TYPE REF TO zif_abapgit_progress. + li_progress TYPE REF TO zif_abapgit_progress, + lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt. FIELD-SYMBOLS: LIKE LINE OF it_tadir. @@ -451,9 +511,11 @@ CLASS zcl_abapgit_serialize IMPLEMENTATION. mv_free = lv_max. mi_log = ii_log. - li_progress = zcl_abapgit_progress=>get_instance( lines( it_tadir ) ). + lt_tadir = it_tadir. + filter_unsupported_objects( CHANGING ct_tadir = lt_tadir ). + li_progress = zcl_abapgit_progress=>get_instance( lines( lt_tadir ) ). - LOOP AT it_tadir ASSIGNING . + LOOP AT lt_tadir ASSIGNING . li_progress->show( iv_current = sy-tabix diff --git a/src/objects/zcl_abapgit_objects.clas.abap b/src/objects/zcl_abapgit_objects.clas.abap index 08be62bca..53001d300 100644 --- a/src/objects/zcl_abapgit_objects.clas.abap +++ b/src/objects/zcl_abapgit_objects.clas.abap @@ -94,6 +94,7 @@ CLASS zcl_abapgit_objects DEFINITION ty_obj_serializer_map TYPE SORTED TABLE OF ty_obj_serializer_item WITH UNIQUE KEY item . CLASS-DATA gt_obj_serializer_map TYPE ty_obj_serializer_map . + CLASS-DATA gt_supported_obj_types TYPE ty_types_tt . CLASS-METHODS files_to_deserialize IMPORTING @@ -229,7 +230,7 @@ ENDCLASS. -CLASS zcl_abapgit_objects IMPLEMENTATION. +CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION. METHOD adjust_namespaces. @@ -1257,6 +1258,10 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. FIELD-SYMBOLS LIKE LINE OF lt_objects. + IF gt_supported_obj_types IS NOT INITIAL. + rt_types = gt_supported_obj_types. + RETURN. + ENDIF. CALL FUNCTION 'TR_OBJECT_TABLE' TABLES @@ -1275,6 +1280,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION. INSERT -object INTO TABLE rt_types. ENDIF. ENDLOOP. + gt_supported_obj_types = rt_types. ENDMETHOD.