From b9ea4960a3aec0e2dd7be0ae142452a88b8f7193 Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 10 Jun 2017 13:12:31 +0000 Subject: [PATCH] refactor _OBJECT_CHECK_TIMESTAMP macro #773 --- src/zabapgit_macros.prog.abap | 20 ------------ src/zabapgit_object_doma.prog.abap | 8 +++-- src/zabapgit_object_dtel.prog.abap | 8 +++-- src/zabapgit_object_enqu.prog.abap | 8 +++-- src/zabapgit_object_shlp.prog.abap | 14 +++++---- src/zabapgit_object_tabl.prog.abap | 18 +++++++++-- src/zabapgit_object_ttyp.prog.abap | 5 ++- src/zabapgit_object_view.prog.abap | 19 ++++++++---- src/zabapgit_objects.prog.abap | 50 +++++++++++++++++++++++++++--- 9 files changed, 101 insertions(+), 49 deletions(-) diff --git a/src/zabapgit_macros.prog.abap b/src/zabapgit_macros.prog.abap index ddb8c245e..cf9f033a1 100644 --- a/src/zabapgit_macros.prog.abap +++ b/src/zabapgit_macros.prog.abap @@ -1,23 +1,3 @@ *&---------------------------------------------------------------------* *& Include ZABAPGIT_MACROS *&---------------------------------------------------------------------* - -* Macros - -DEFINE _object_check_timestamp. - IF sy-subrc = 0 AND &1 IS NOT INITIAL AND &2 IS NOT INITIAL. - cl_abap_tstmp=>systemtstmp_syst2utc( - EXPORTING syst_date = &1 - syst_time = &2 - IMPORTING utc_tstmp = lv_ts ). - IF lv_ts < iv_timestamp. - rv_changed = abap_false. " Unchanged - ELSE. - rv_changed = abap_true. - RETURN. - ENDIF. - ELSE. " Not found? => changed - rv_changed = abap_true. - RETURN. - ENDIF. -END-OF-DEFINITION. diff --git a/src/zabapgit_object_doma.prog.abap b/src/zabapgit_object_doma.prog.abap index f3384b9ba..bd8194ce9 100644 --- a/src/zabapgit_object_doma.prog.abap +++ b/src/zabapgit_object_doma.prog.abap @@ -53,8 +53,7 @@ CLASS lcl_object_doma IMPLEMENTATION. METHOD lif_object~has_changed_since. DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + lv_time TYPE tims. SELECT SINGLE as4date as4time FROM dd01l INTO (lv_date, lv_time) @@ -62,7 +61,10 @@ CLASS lcl_object_doma IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_dtel.prog.abap b/src/zabapgit_object_dtel.prog.abap index ab9e75ce8..cb2bac785 100644 --- a/src/zabapgit_object_dtel.prog.abap +++ b/src/zabapgit_object_dtel.prog.abap @@ -46,8 +46,7 @@ CLASS lcl_object_dtel IMPLEMENTATION. METHOD lif_object~has_changed_since. DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + lv_time TYPE tims. SELECT SINGLE as4date as4time FROM dd04l INTO (lv_date, lv_time) @@ -55,7 +54,10 @@ CLASS lcl_object_dtel IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_enqu.prog.abap b/src/zabapgit_object_enqu.prog.abap index e3425e9d8..e0127a955 100644 --- a/src/zabapgit_object_enqu.prog.abap +++ b/src/zabapgit_object_enqu.prog.abap @@ -25,8 +25,7 @@ CLASS lcl_object_enqu IMPLEMENTATION. METHOD lif_object~has_changed_since. DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + lv_time TYPE tims. SELECT SINGLE as4date as4time FROM dd25l INTO (lv_date, lv_time) @@ -34,7 +33,10 @@ CLASS lcl_object_enqu IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_shlp.prog.abap b/src/zabapgit_object_shlp.prog.abap index 307980a74..3373ada0a 100644 --- a/src/zabapgit_object_shlp.prog.abap +++ b/src/zabapgit_object_shlp.prog.abap @@ -25,15 +25,17 @@ CLASS lcl_object_shlp IMPLEMENTATION. METHOD lif_object~has_changed_since. DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + lv_time TYPE tims. SELECT SINGLE as4date as4time FROM dd30l - INTO (lv_date, lv_time) - WHERE shlpname = ms_item-obj_name - AND as4local = 'A'. + INTO (lv_date, lv_time) + WHERE shlpname = ms_item-obj_name + AND as4local = 'A'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index d1cff6ed3..229167c76 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -38,7 +38,11 @@ CLASS lcl_object_tabl IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. SELECT SINGLE as4date as4time FROM dd09l " Table tech settings INTO (lv_date, lv_time) @@ -46,7 +50,11 @@ CLASS lcl_object_tabl IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. SELECT as4date as4time FROM dd12l " Table tech settings INTO CORRESPONDING FIELDS OF TABLE lt_indexes @@ -55,7 +63,11 @@ CLASS lcl_object_tabl IMPLEMENTATION. AND as4vers = '0000' ##TOO_MANY_ITAB_FIELDS. LOOP AT lt_indexes ASSIGNING . - _object_check_timestamp -as4date -as4time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = -as4date + iv_time = -as4time ). + CHECK rv_changed = abap_false. ENDLOOP. ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_ttyp.prog.abap b/src/zabapgit_object_ttyp.prog.abap index 659af989c..a79f4a6aa 100644 --- a/src/zabapgit_object_ttyp.prog.abap +++ b/src/zabapgit_object_ttyp.prog.abap @@ -33,7 +33,10 @@ CLASS lcl_object_ttyp IMPLEMENTATION. WHERE typename = ms_item-obj_name AND as4local = 'A'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_view.prog.abap b/src/zabapgit_object_view.prog.abap index c540e7e2f..1d89a367d 100644 --- a/src/zabapgit_object_view.prog.abap +++ b/src/zabapgit_object_view.prog.abap @@ -25,24 +25,31 @@ CLASS lcl_object_view IMPLEMENTATION. METHOD lif_object~has_changed_since. DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + lv_time TYPE tims. - SELECT SINGLE as4date as4time FROM dd25l " View + SELECT SINGLE as4date as4time FROM dd25l INTO (lv_date, lv_time) WHERE viewname = ms_item-obj_name AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. - SELECT SINGLE as4date as4time FROM dd09l " Table tech settings + SELECT SINGLE as4date as4time FROM dd09l INTO (lv_date, lv_time) WHERE tabname = ms_item-obj_name AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index da243eb83..22f9f8e2d 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -571,6 +571,13 @@ CLASS lcl_objects_super DEFINITION ABSTRACT. mv_language TYPE spras. METHODS: + check_timestamp + IMPORTING + iv_timestamp TYPE timestamp + iv_date TYPE datum + iv_time TYPE uzeit + RETURNING + VALUE(rv_changed) TYPE abap_bool, get_metadata RETURNING VALUE(rs_metadata) TYPE lif_defs=>ty_metadata, corr_insert @@ -1539,7 +1546,11 @@ CLASS lcl_objects_program IMPLEMENTATION. WHERE progname = iv_program AND r3state = 'A'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. SELECT SINGLE udat utime FROM repotext " Program text pool INTO (lv_date, lv_time) @@ -1547,7 +1558,11 @@ CLASS lcl_objects_program IMPLEMENTATION. AND r3state = 'A'. IF sy-subrc = 0. " Text not found ? Assuming no changes, see #404 - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. ENDIF. IF iv_skip_gui = abap_true. @@ -1559,7 +1574,11 @@ CLASS lcl_objects_program IMPLEMENTATION. WHERE prog = iv_program ##TOO_MANY_ITAB_FIELDS. "#EC CI_SUBRC LOOP AT lt_screens ASSIGNING . - _object_check_timestamp -dgen -tgen. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = -dgen + iv_time = -tgen ). + CHECK rv_changed = abap_false. ENDLOOP. SELECT vdatum vzeit FROM eudb " GUI @@ -1569,7 +1588,11 @@ CLASS lcl_objects_program IMPLEMENTATION. AND srtf2 = 0 ##TOO_MANY_ITAB_FIELDS. "#EC CI_SUBRC LOOP AT lt_eudb ASSIGNING . - _object_check_timestamp -vdatum -vzeit. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = -vdatum + iv_time = -vzeit ). + CHECK rv_changed = abap_false. ENDLOOP. ENDMETHOD. "check_prog_changed_since @@ -1690,6 +1713,25 @@ CLASS lcl_objects_super IMPLEMENTATION. ENDMETHOD. + METHOD check_timestamp. + + DATA: lv_ts TYPE timestamp. + + IF sy-subrc = 0 AND iv_date IS NOT INITIAL AND iv_time IS NOT INITIAL. + cl_abap_tstmp=>systemtstmp_syst2utc( + EXPORTING syst_date = iv_date + syst_time = iv_time + IMPORTING utc_tstmp = lv_ts ). + IF lv_ts < iv_timestamp. + rv_changed = abap_false. " Unchanged + ELSE. + rv_changed = abap_true. + ENDIF. + ELSE. " Not found? => changed + rv_changed = abap_true. + ENDIF. + + ENDMETHOD. METHOD get_metadata. rs_metadata-class =