mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
refactor _OBJECT_CHECK_TIMESTAMP macro #773
This commit is contained in:
parent
e124e5c0d9
commit
b9ea4960a3
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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 =
|
||||
|
|
Loading…
Reference in New Issue
Block a user