refactor _OBJECT_CHECK_TIMESTAMP macro #773

This commit is contained in:
larshp 2017-06-10 13:12:31 +00:00
parent e124e5c0d9
commit b9ea4960a3
9 changed files with 101 additions and 49 deletions

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 <ls_index>.
_object_check_timestamp <ls_index>-as4date <ls_index>-as4time.
rv_changed = check_timestamp(
iv_timestamp = iv_timestamp
iv_date = <ls_index>-as4date
iv_time = <ls_index>-as4time ).
CHECK rv_changed = abap_false.
ENDLOOP.
ENDMETHOD. "lif_object~has_changed_since

View File

@ -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

View File

@ -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

View File

@ -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 <ls_screen>.
_object_check_timestamp <ls_screen>-dgen <ls_screen>-tgen.
rv_changed = check_timestamp(
iv_timestamp = iv_timestamp
iv_date = <ls_screen>-dgen
iv_time = <ls_screen>-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 <ls_eudb>.
_object_check_timestamp <ls_eudb>-vdatum <ls_eudb>-vzeit.
rv_changed = check_timestamp(
iv_timestamp = iv_timestamp
iv_date = <ls_eudb>-vdatum
iv_time = <ls_eudb>-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 =