From ab982cd885ada9161022571924095b79beb971d1 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 9 Oct 2016 13:04:42 +0200 Subject: [PATCH] fix package change caching #372 --- src/zabapgit_definitions.prog.abap | 1 + src/zabapgit_file_status.prog.abap | 3 ++- src/zabapgit_repo_impl.prog.abap | 6 ++++-- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 340e64e16..991ea4333 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -28,6 +28,7 @@ TYPES: BEGIN OF ty_comment, TYPES: BEGIN OF ty_item, obj_type TYPE tadir-object, obj_name TYPE tadir-obj_name, + devclass TYPE devclass, END OF ty_item. TYPES: BEGIN OF ty_file_item, diff --git a/src/zabapgit_file_status.prog.abap b/src/zabapgit_file_status.prog.abap index 105c3b2dd..23b7f409e 100644 --- a/src/zabapgit_file_status.prog.abap +++ b/src/zabapgit_file_status.prog.abap @@ -95,7 +95,8 @@ CLASS lcl_file_status IMPLEMENTATION. ls_item-obj_name = lv_pre. CLEAR lt_files. - LOOP AT lt_local ASSIGNING WHERE item = ls_item. + LOOP AT lt_local ASSIGNING + WHERE item-obj_type = ls_item-obj_type AND item-obj_name = ls_item-obj_name. APPEND -file TO lt_files. ENDLOOP. diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index a953cc094..9b8cebb80 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -418,11 +418,13 @@ CLASS lcl_repo IMPLEMENTATION. ls_item-obj_type = -object. ls_item-obj_name = -obj_name. + ls_item-devclass = -devclass. IF mv_last_serialization IS NOT INITIAL. " Try to fetch from cache READ TABLE lt_cache TRANSPORTING NO FIELDS - WITH KEY item = ls_item. - IF sy-subrc = 0 " There is something in cache and the object is unchanged + WITH KEY item = ls_item. " type+name+package key + " There is something in cache and the object is unchanged + IF sy-subrc = 0 AND abap_false = lcl_objects=>has_changed_since( is_item = ls_item iv_timestamp = mv_last_serialization ). LOOP AT lt_cache ASSIGNING WHERE item = ls_item.