diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index 8c20cf998..36b8f7cce 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -504,17 +504,18 @@ CLASS lcl_repo IMPLEMENTATION. DATA: lt_tadir TYPE ty_tadir_tt, ls_item TYPE ty_item, - lt_files TYPE ty_files_tt. + lt_files TYPE ty_files_tt, + lt_cache TYPE SORTED TABLE OF ty_file_item + WITH NON-UNIQUE KEY item. - DATA: lt_cache TYPE SORTED TABLE OF ty_file_item - WITH NON-UNIQUE KEY item, - lt_tadir_aux LIKE lt_tadir. + DATA: lt_filter TYPE SORTED TABLE OF tadir + WITH NON-UNIQUE KEY object obj_name, + lv_filter_exist TYPE abap_bool. FIELD-SYMBOLS: LIKE LINE OF lt_files, LIKE LINE OF rt_files, LIKE LINE OF lt_cache, - LIKE LINE OF lt_tadir, - LIKE LINE OF it_filter. + LIKE LINE OF lt_tadir. " Serialization happened before and no refresh request @@ -536,19 +537,18 @@ CLASS lcl_repo IMPLEMENTATION. lt_cache = mt_local. lt_tadir = lcl_tadir=>read( get_package( ) ). - IF it_filter[] IS INITIAL. - lt_tadir_aux[] = lt_tadir[]. - ELSE. - LOOP AT it_filter ASSIGNING . - READ TABLE lt_tadir ASSIGNING WITH KEY object = -object - obj_name = -obj_name. - IF sy-subrc = 0. - APPEND TO lt_tadir_aux. - ENDIF. - ENDLOOP. - ENDIF. + lt_filter = it_filter. + lv_filter_exist = boolc( lines( lt_filter ) > 0 ) . - LOOP AT lt_tadir_aux ASSIGNING . + LOOP AT lt_tadir ASSIGNING . + IF lv_filter_exist = abap_true. + READ TABLE lt_filter TRANSPORTING NO FIELDS WITH KEY object = -object + obj_name = -obj_name + BINARY SEARCH. + IF sy-subrc <> 0. + CONTINUE. + ENDIF. + ENDIF. lcl_progress=>show( iv_key = 'Serialize' iv_current = sy-tabix