mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 04:08:27 +08:00
Merge branch 'master'
Conflicts: src/zabapgit_page_main.prog.abap src/zabapgit_repo_impl.prog.abap
This commit is contained in:
commit
0540063a5d
|
@ -3,7 +3,7 @@ REPORT zabapgit LINE-SIZE 100.
|
|||
* See http://www.abapgit.org
|
||||
|
||||
CONSTANTS: gc_xml_version TYPE string VALUE 'v1.0.0', "#EC NOTEXT
|
||||
gc_abap_version TYPE string VALUE 'v1.17.20'. "#EC NOTEXT
|
||||
gc_abap_version TYPE string VALUE 'v1.18.4'. "#EC NOTEXT
|
||||
|
||||
********************************************************************************
|
||||
* The MIT License (MIT)
|
||||
|
@ -36,6 +36,7 @@ SELECTION-SCREEN END OF SCREEN 1001.
|
|||
INCLUDE zabapgit_password_dialog. " !!! Contains SELECTION SCREEN
|
||||
|
||||
INCLUDE zabapgit_definitions.
|
||||
INCLUDE zabapgit_macros.
|
||||
INCLUDE zabapgit_exceptions.
|
||||
INCLUDE zabapgit_zlib.
|
||||
INCLUDE zabapgit_html.
|
||||
|
|
|
@ -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,
|
||||
|
@ -159,6 +160,7 @@ CONSTANTS: BEGIN OF gc_action,
|
|||
zip_export TYPE string VALUE 'zip_export',
|
||||
zip_package TYPE string VALUE 'zip_package',
|
||||
zip_transport TYPE string VALUE 'zip_transport',
|
||||
zip_object TYPE string VALUE 'zip_object',
|
||||
|
||||
git_pull TYPE string VALUE 'git_pull',
|
||||
git_reset TYPE string VALUE 'git_reset',
|
||||
|
|
|
@ -95,7 +95,8 @@ CLASS lcl_file_status IMPLEMENTATION.
|
|||
ls_item-obj_name = lv_pre.
|
||||
|
||||
CLEAR lt_files.
|
||||
LOOP AT lt_local ASSIGNING <ls_local> WHERE item = ls_item.
|
||||
LOOP AT lt_local ASSIGNING <ls_local>
|
||||
WHERE item-obj_type = ls_item-obj_type AND item-obj_name = ls_item-obj_name.
|
||||
APPEND <ls_local>-file TO lt_files.
|
||||
ENDLOOP.
|
||||
|
||||
|
|
|
@ -126,7 +126,7 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
WHEN gc_event_state-no_more_act.
|
||||
" Do nothing, handling completed
|
||||
WHEN OTHERS.
|
||||
lcx_exception=>raise( 'Unknown action' ).
|
||||
lcx_exception=>raise( |Unknown action: { action }| ).
|
||||
ENDCASE.
|
||||
|
||||
CATCH lcx_exception INTO lx_exception.
|
||||
|
|
|
@ -158,6 +158,9 @@ CLASS lcl_gui_router IMPLEMENTATION.
|
|||
WHEN gc_action-zip_transport. " Export transport as ZIP
|
||||
lcl_transport=>zip( ).
|
||||
ev_state = gc_event_state-no_more_act.
|
||||
WHEN gc_action-zip_object. " Export object as ZIP
|
||||
lcl_zip=>export_object( ).
|
||||
ev_state = gc_event_state-no_more_act.
|
||||
|
||||
" Remote origin manipulations
|
||||
WHEN gc_action-repo_remote_attach. " Remote attach
|
||||
|
|
|
@ -27,6 +27,10 @@ ENDCLASS. "lcl_object_acid DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_acid IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
|
|
@ -22,6 +22,10 @@ ENDCLASS. "lcl_object_auth DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_auth IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
|
|
@ -121,6 +121,49 @@ ENDCLASS. "lcl_object_intf DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_clas IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
|
||||
DATA: lv_clsname TYPE seoclsname,
|
||||
lv_program TYPE program,
|
||||
lt_incl TYPE seoincl_t.
|
||||
|
||||
FIELD-SYMBOLS <incl> LIKE LINE OF lt_incl.
|
||||
|
||||
lv_clsname = ms_item-obj_name.
|
||||
|
||||
CASE ms_item-obj_type.
|
||||
WHEN 'CLAS'.
|
||||
TRY.
|
||||
CALL METHOD cl_oo_classname_service=>('GET_ALL_CLASS_INCLUDES')
|
||||
EXPORTING
|
||||
class_name = lv_clsname
|
||||
RECEIVING
|
||||
result = lt_incl.
|
||||
CATCH cx_sy_dyn_call_illegal_method.
|
||||
* method does not exist in 702, just report everything as changed
|
||||
rv_changed = abap_true.
|
||||
ENDTRY.
|
||||
LOOP AT lt_incl ASSIGNING <incl>.
|
||||
rv_changed = check_prog_changed_since(
|
||||
iv_program = <incl>
|
||||
iv_timestamp = iv_timestamp
|
||||
iv_skip_gui = abap_true ).
|
||||
IF rv_changed = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
WHEN 'INTF'.
|
||||
lv_program = cl_oo_classname_service=>get_interfacepool_name( lv_clsname ).
|
||||
rv_changed = check_prog_changed_since(
|
||||
iv_program = lv_program
|
||||
iv_timestamp = iv_timestamp
|
||||
iv_skip_gui = abap_true ).
|
||||
WHEN OTHERS.
|
||||
lcx_exception=>raise( 'class delete, unknown type' ).
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
|
|
@ -32,6 +32,10 @@ ENDCLASS. "lcl_object_msag DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_doct IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-delete_tadir = abap_true.
|
||||
|
|
|
@ -31,6 +31,10 @@ ENDCLASS. "lcl_object_msag DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_docv IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = read( )-head-tdluser.
|
||||
ENDMETHOD. "lif_object~changed_by
|
||||
|
|
|
@ -22,6 +22,22 @@ ENDCLASS. "lcl_object_doma DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_doma IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
|
||||
DATA: lv_date TYPE dats,
|
||||
lv_time TYPE tims,
|
||||
lv_ts TYPE timestamp.
|
||||
|
||||
SELECT SINGLE as4date as4time FROM dd01l
|
||||
INTO (lv_date, lv_time)
|
||||
WHERE domname = ms_item-obj_name
|
||||
AND as4local = 'A'
|
||||
AND as4vers = '0000'.
|
||||
|
||||
_object_check_timestamp lv_date lv_time.
|
||||
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
SELECT SINGLE as4user FROM dd01l INTO rv_user
|
||||
|
|
|
@ -22,6 +22,22 @@ ENDCLASS. "lcl_object_dtel DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_dtel IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
|
||||
DATA: lv_date TYPE dats,
|
||||
lv_time TYPE tims,
|
||||
lv_ts TYPE timestamp.
|
||||
|
||||
SELECT SINGLE as4date as4time FROM dd04l
|
||||
INTO (lv_date, lv_time)
|
||||
WHERE rollname = ms_item-obj_name
|
||||
AND as4local = 'A'
|
||||
AND as4vers = '0000'.
|
||||
|
||||
_object_check_timestamp lv_date lv_time.
|
||||
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
SELECT SINGLE as4user FROM dd04l INTO rv_user
|
||||
|
@ -111,6 +127,18 @@ CLASS lcl_object_dtel IMPLEMENTATION.
|
|||
ls_dd04v-as4date,
|
||||
ls_dd04v-as4time.
|
||||
|
||||
IF ls_dd04v-refkind = 'D'.
|
||||
* clear values inherited from domain
|
||||
CLEAR: ls_dd04v-datatype,
|
||||
ls_dd04v-leng,
|
||||
ls_dd04v-decimals,
|
||||
ls_dd04v-outputlen,
|
||||
ls_dd04v-lowercase,
|
||||
ls_dd04v-signflag,
|
||||
ls_dd04v-convexit,
|
||||
ls_dd04v-entitytab.
|
||||
ENDIF.
|
||||
|
||||
io_xml->add( iv_name = 'DD04V'
|
||||
ig_data = ls_dd04v ).
|
||||
io_xml->add( iv_name = 'TPARA'
|
||||
|
|
|
@ -43,6 +43,10 @@ ENDCLASS. "lcl_object_enho DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_enho IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
|
|
@ -17,6 +17,10 @@ ENDCLASS. "lcl_object_enhs
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_enhs IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -22,6 +22,22 @@ ENDCLASS. "lcl_object_dtel DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_enqu IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
|
||||
DATA: lv_date TYPE dats,
|
||||
lv_time TYPE tims,
|
||||
lv_ts TYPE timestamp.
|
||||
|
||||
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.
|
||||
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -14,6 +14,10 @@ ENDCLASS. "lcl_object_ensc
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_ensc IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -84,6 +84,38 @@ CLASS lcl_object_fugr IMPLEMENTATION.
|
|||
* function group SIFP
|
||||
* function group SUNI
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
|
||||
DATA: lt_functab TYPE ty_rs38l_incl_tt,
|
||||
lt_includes TYPE rso_t_objnm.
|
||||
|
||||
FIELD-SYMBOLS: <ls_func> LIKE LINE OF lt_functab,
|
||||
<include_name> LIKE LINE OF lt_includes.
|
||||
|
||||
lt_includes = includes( ). " Main prog also included here
|
||||
|
||||
LOOP AT lt_includes ASSIGNING <include_name>.
|
||||
rv_changed = check_prog_changed_since(
|
||||
iv_program = <include_name>
|
||||
iv_timestamp = iv_timestamp ).
|
||||
IF rv_changed = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
lt_functab = functions( ).
|
||||
|
||||
LOOP AT lt_functab ASSIGNING <ls_func>.
|
||||
rv_changed = check_prog_changed_since(
|
||||
iv_program = <ls_func>-include
|
||||
iv_timestamp = iv_timestamp ).
|
||||
IF rv_changed = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -33,6 +33,10 @@ ENDCLASS. "lcl_object_dtel DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_iarp IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -33,6 +33,10 @@ ENDCLASS. "lcl_object_dtel DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_iasp IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -33,6 +33,10 @@ ENDCLASS. "lcl_object_iatu DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_iatu IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -22,6 +22,10 @@ ENDCLASS. "lcl_object_msag DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_msag IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
SELECT SINGLE lastuser FROM t100a INTO rv_user
|
||||
|
|
|
@ -13,6 +13,11 @@ CLASS lcl_object_nrob DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
|||
INTERFACES lif_object.
|
||||
ALIASES mo_files FOR lif_object~mo_files.
|
||||
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
delete_intervals IMPORTING iv_object TYPE inri-object
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS. "lcl_object_nrob DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -22,6 +27,10 @@ ENDCLASS. "lcl_object_nrob DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_nrob IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
DATA: lv_objectid TYPE cdhdr-objectid,
|
||||
|
@ -59,6 +68,7 @@ CLASS lcl_object_nrob IMPLEMENTATION.
|
|||
|
||||
METHOD lif_object~get_metadata.
|
||||
rs_metadata = get_metadata( ).
|
||||
rs_metadata-late_deser = abap_true.
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~exists.
|
||||
|
@ -161,6 +171,73 @@ CLASS lcl_object_nrob IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD delete_intervals.
|
||||
|
||||
DATA: lv_error TYPE c LENGTH 1,
|
||||
ls_error TYPE inrer,
|
||||
lt_list TYPE STANDARD TABLE OF inriv WITH DEFAULT KEY,
|
||||
lt_error_iv TYPE STANDARD TABLE OF inriv WITH DEFAULT KEY.
|
||||
|
||||
FIELD-SYMBOLS: <ls_list> LIKE LINE OF lt_list.
|
||||
|
||||
|
||||
CALL FUNCTION 'NUMBER_RANGE_INTERVAL_LIST'
|
||||
EXPORTING
|
||||
object = iv_object
|
||||
TABLES
|
||||
interval = lt_list
|
||||
EXCEPTIONS
|
||||
nr_range_nr1_not_found = 1
|
||||
nr_range_nr1_not_intern = 2
|
||||
nr_range_nr2_must_be_space = 3
|
||||
nr_range_nr2_not_extern = 4
|
||||
nr_range_nr2_not_found = 5
|
||||
object_not_found = 6
|
||||
subobject_must_be_space = 7
|
||||
subobject_not_found = 8
|
||||
OTHERS = 9.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from NUMBER_RANGE_INTERVAL_LIST' ).
|
||||
ENDIF.
|
||||
|
||||
IF lines( lt_list ) = 0.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
LOOP AT lt_list ASSIGNING <ls_list>.
|
||||
CLEAR <ls_list>-nrlevel.
|
||||
<ls_list>-procind = 'D'.
|
||||
ENDLOOP.
|
||||
|
||||
CALL FUNCTION 'NUMBER_RANGE_INTERVAL_UPDATE'
|
||||
EXPORTING
|
||||
object = iv_object
|
||||
IMPORTING
|
||||
error = ls_error
|
||||
error_occured = lv_error
|
||||
TABLES
|
||||
error_iv = lt_error_iv
|
||||
interval = lt_list
|
||||
EXCEPTIONS
|
||||
object_not_found = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0 OR lv_error = abap_true.
|
||||
lcx_exception=>raise( 'error from NUMBER_RANGE_INTERVAL_UPDATE' ).
|
||||
ENDIF.
|
||||
|
||||
CALL FUNCTION 'NUMBER_RANGE_UPDATE_CLOSE'
|
||||
EXPORTING
|
||||
object = iv_object
|
||||
EXCEPTIONS
|
||||
no_changes_made = 1
|
||||
object_not_initialized = 2
|
||||
OTHERS = 3.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from NUMBER_RANGE_UPDATE_CLOSE' ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~delete.
|
||||
|
||||
DATA: lv_object TYPE tnro-object.
|
||||
|
@ -168,6 +245,8 @@ CLASS lcl_object_nrob IMPLEMENTATION.
|
|||
|
||||
lv_object = ms_item-obj_name.
|
||||
|
||||
delete_intervals( lv_object ).
|
||||
|
||||
CALL FUNCTION 'NUMBER_RANGE_OBJECT_DELETE'
|
||||
EXPORTING
|
||||
language = mv_language
|
||||
|
|
|
@ -22,6 +22,10 @@ ENDCLASS. "lcl_object_para DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_para IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
* looks like "changed by user" is not stored in the database
|
||||
rv_user = c_user_unknown.
|
||||
|
|
|
@ -47,6 +47,10 @@ ENDCLASS. "lcl_object_PINF DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_pinf IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
SELECT SINGLE changed_by FROM intf INTO rv_user
|
||||
|
|
|
@ -28,6 +28,14 @@ ENDCLASS. "lcl_object_prog DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_prog IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
|
||||
rv_changed = check_prog_changed_since(
|
||||
iv_program = ms_item-obj_name
|
||||
iv_timestamp = iv_timestamp ).
|
||||
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
SELECT SINGLE unam FROM reposrc INTO rv_user
|
||||
WHERE progname = ms_item-obj_name
|
||||
|
|
|
@ -27,6 +27,10 @@ ENDCLASS. "lcl_object_SFBF DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sfbf IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
rv_user = get( )->get_header_data( )-changedby.
|
||||
|
|
|
@ -27,6 +27,10 @@ ENDCLASS. "lcl_object_SFBS DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sfbs IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
rv_user = get( )->get_header_data( )-changedby.
|
||||
|
|
|
@ -27,6 +27,10 @@ ENDCLASS. "lcl_object_sfsw DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sfsw IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
rv_user = get( )->get_header_data( )-changedby.
|
||||
|
|
|
@ -54,6 +54,10 @@ ENDCLASS. "lcl_object_shi3 DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_shi3 IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -22,6 +22,21 @@ ENDCLASS. "lcl_object_dtel DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_shlp IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
|
||||
DATA: lv_date TYPE dats,
|
||||
lv_time TYPE tims,
|
||||
lv_ts TYPE timestamp.
|
||||
|
||||
SELECT SINGLE as4date as4time FROM dd30l
|
||||
INTO (lv_date, lv_time)
|
||||
WHERE shlpname = ms_item-obj_name
|
||||
AND as4local = 'A'.
|
||||
|
||||
_object_check_timestamp lv_date lv_time.
|
||||
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
SELECT SINGLE as4user FROM dd30l INTO rv_user
|
||||
|
@ -87,6 +102,8 @@ CLASS lcl_object_shlp IMPLEMENTATION.
|
|||
lt_dd32p TYPE TABLE OF dd32p,
|
||||
lt_dd33v TYPE TABLE OF dd33v.
|
||||
|
||||
FIELD-SYMBOLS: <ls_dd32p> LIKE LINE OF lt_dd32p.
|
||||
|
||||
|
||||
lv_name = ms_item-obj_name.
|
||||
|
||||
|
@ -115,6 +132,21 @@ CLASS lcl_object_shlp IMPLEMENTATION.
|
|||
ls_dd30v-as4date,
|
||||
ls_dd30v-as4time.
|
||||
|
||||
LOOP AT lt_dd32p ASSIGNING <ls_dd32p>.
|
||||
* clear information inherited from domain
|
||||
CLEAR: <ls_dd32p>-domname,
|
||||
<ls_dd32p>-headlen,
|
||||
<ls_dd32p>-scrlen1,
|
||||
<ls_dd32p>-scrlen2,
|
||||
<ls_dd32p>-datatype,
|
||||
<ls_dd32p>-leng,
|
||||
<ls_dd32p>-outputlen,
|
||||
<ls_dd32p>-decimals,
|
||||
<ls_dd32p>-lowercase,
|
||||
<ls_dd32p>-signflag,
|
||||
<ls_dd32p>-convexit.
|
||||
ENDLOOP.
|
||||
|
||||
io_xml->add( iv_name = 'DD30V'
|
||||
ig_data = ls_dd30v ).
|
||||
io_xml->add( ig_data = lt_dd31v
|
||||
|
|
|
@ -62,6 +62,10 @@ ENDCLASS. "lcl_object_sicf DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_sicf IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
DATA: ls_icfservice TYPE icfservice.
|
||||
|
|
|
@ -42,6 +42,10 @@ ENDCLASS. "lcl_object_smim DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_smim IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
DATA: lv_loio TYPE sdok_docid.
|
||||
|
@ -188,7 +192,7 @@ CLASS lcl_object_smim IMPLEMENTATION.
|
|||
permission_failure = 4
|
||||
OTHERS = 5 ).
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'error from mime api->get' ).
|
||||
lcx_exception=>raise( 'error from mime api->get:' && sy-msgv1 ).
|
||||
ENDIF.
|
||||
|
||||
lv_filename = get_filename( lv_url ).
|
||||
|
|
|
@ -22,6 +22,10 @@ ENDCLASS. "lcl_object_splo DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_splo IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
SELECT SINGLE chgname1 FROM tsp1d INTO rv_user
|
||||
|
|
|
@ -22,6 +22,10 @@ ENDCLASS. "lcl_object_dtel DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_ssfo IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
SELECT SINGLE lastuser FROM stxfadm INTO rv_user
|
||||
|
|
|
@ -27,6 +27,10 @@ ENDCLASS. "lcl_object_ssst DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_ssst IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
SELECT SINGLE lastuser FROM stxsadm INTO rv_user
|
||||
|
|
|
@ -22,6 +22,10 @@ ENDCLASS. "lcl_object_susc DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_susc IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -22,6 +22,10 @@ ENDCLASS. "lcl_object_suso DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_suso IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -22,6 +22,43 @@ ENDCLASS. "lcl_object_dtel DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_tabl IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
|
||||
DATA: lv_date TYPE dats,
|
||||
lv_time TYPE tims,
|
||||
lv_ts TYPE timestamp,
|
||||
lt_indexes TYPE STANDARD TABLE OF dd09l.
|
||||
|
||||
FIELD-SYMBOLS <ls_index> LIKE LINE OF lt_indexes.
|
||||
|
||||
SELECT SINGLE as4date as4time FROM dd02l " Table
|
||||
INTO (lv_date, lv_time)
|
||||
WHERE tabname = ms_item-obj_name
|
||||
AND as4local = 'A'
|
||||
AND as4vers = '0000'.
|
||||
|
||||
_object_check_timestamp lv_date lv_time.
|
||||
|
||||
SELECT SINGLE as4date as4time FROM dd09l " Table tech settings
|
||||
INTO (lv_date, lv_time)
|
||||
WHERE tabname = ms_item-obj_name
|
||||
AND as4local = 'A'
|
||||
AND as4vers = '0000'.
|
||||
|
||||
_object_check_timestamp lv_date lv_time.
|
||||
|
||||
SELECT as4date as4time FROM dd12l " Table tech settings
|
||||
INTO CORRESPONDING FIELDS OF TABLE lt_indexes
|
||||
WHERE sqltab = ms_item-obj_name
|
||||
AND as4local = 'A'
|
||||
AND as4vers = '0000' ##TOO_MANY_ITAB_FIELDS.
|
||||
|
||||
LOOP AT lt_indexes ASSIGNING <ls_index>.
|
||||
_object_check_timestamp <ls_index>-as4date <ls_index>-as4time.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
SELECT SINGLE as4user FROM dd02l INTO rv_user
|
||||
|
@ -92,9 +129,12 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
lt_dd12v TYPE dd12vtab,
|
||||
lt_dd17v TYPE dd17vtab,
|
||||
lt_dd35v TYPE TABLE OF dd35v,
|
||||
lv_index LIKE sy-index,
|
||||
lt_dd36m TYPE dd36mttyp.
|
||||
|
||||
FIELD-SYMBOLS: <ls_dd12v> LIKE LINE OF lt_dd12v,
|
||||
<ls_dd05m> LIKE LINE OF lt_dd05m,
|
||||
<ls_dd36m> LIKE LINE OF lt_dd36m,
|
||||
<ls_dd03p> LIKE LINE OF lt_dd03p.
|
||||
|
||||
|
||||
|
@ -139,6 +179,11 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
<ls_dd12v>-as4time.
|
||||
ENDLOOP.
|
||||
|
||||
* remove nested structures
|
||||
DELETE lt_dd03p WHERE depth <> '00'.
|
||||
* remove fields from .INCLUDEs
|
||||
DELETE lt_dd03p WHERE adminfield <> '0'.
|
||||
|
||||
LOOP AT lt_dd03p ASSIGNING <ls_dd03p> WHERE NOT rollname IS INITIAL.
|
||||
CLEAR: <ls_dd03p>-ddlanguage,
|
||||
<ls_dd03p>-dtelmaster,
|
||||
|
@ -163,6 +208,8 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
<ls_dd03p>-datatype,
|
||||
<ls_dd03p>-leng,
|
||||
<ls_dd03p>-outputlen,
|
||||
<ls_dd03p>-deffdname,
|
||||
<ls_dd03p>-convexit,
|
||||
<ls_dd03p>-entitytab,
|
||||
<ls_dd03p>-dommaster,
|
||||
<ls_dd03p>-domname3l.
|
||||
|
@ -180,6 +227,26 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
* remove foreign keys inherited from .INCLUDEs
|
||||
DELETE lt_dd08v WHERE noinherit = 'N'.
|
||||
LOOP AT lt_dd05m ASSIGNING <ls_dd05m>.
|
||||
lv_index = sy-tabix.
|
||||
READ TABLE lt_dd08v WITH KEY fieldname = <ls_dd05m>-fieldname TRANSPORTING NO FIELDS.
|
||||
IF sy-subrc <> 0.
|
||||
DELETE lt_dd05m INDEX lv_index.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
* remove inherited search helps
|
||||
DELETE lt_dd35v WHERE shlpinher = abap_true.
|
||||
LOOP AT lt_dd36m ASSIGNING <ls_dd36m>.
|
||||
lv_index = sy-tabix.
|
||||
READ TABLE lt_dd35v WITH KEY fieldname = <ls_dd36m>-fieldname TRANSPORTING NO FIELDS.
|
||||
IF sy-subrc <> 0.
|
||||
DELETE lt_dd36m INDEX lv_index.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
io_xml->add( iv_name = 'DD02V'
|
||||
ig_data = ls_dd02v ).
|
||||
io_xml->add( iv_name = 'DD09L'
|
||||
|
|
|
@ -22,6 +22,10 @@ ENDCLASS. "lcl_object_tobj DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_tobj IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -47,6 +47,10 @@ ENDCLASS. "lcl_object_TRAN DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_tran IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -22,6 +22,21 @@ ENDCLASS. "lcl_object_dtel DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_ttyp IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
|
||||
DATA: lv_date TYPE dats,
|
||||
lv_time TYPE tims,
|
||||
lv_ts TYPE timestamp.
|
||||
|
||||
SELECT SINGLE as4date as4time FROM dd40l
|
||||
INTO (lv_date, lv_time)
|
||||
WHERE typename = ms_item-obj_name
|
||||
AND as4local = 'A'.
|
||||
|
||||
_object_check_timestamp lv_date lv_time.
|
||||
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
SELECT SINGLE as4user FROM dd40l INTO rv_user
|
||||
|
@ -113,6 +128,10 @@ CLASS lcl_object_ttyp IMPLEMENTATION.
|
|||
ls_dd40v-as4date,
|
||||
ls_dd40v-as4time.
|
||||
|
||||
IF NOT ls_dd40v-rowkind IS INITIAL.
|
||||
CLEAR ls_dd40v-typelen.
|
||||
ENDIF.
|
||||
|
||||
io_xml->add( iv_name = 'DD40V'
|
||||
ig_data = ls_dd40v ).
|
||||
io_xml->add( iv_name = 'DD42V'
|
||||
|
|
|
@ -35,6 +35,10 @@ ENDCLASS. "lcl_object_type DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_type IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -26,6 +26,10 @@ ENDCLASS. "lcl_object_vcls DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_vcls IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -22,6 +22,30 @@ ENDCLASS. "lcl_object_dtel DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_view IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
|
||||
DATA: lv_date TYPE dats,
|
||||
lv_time TYPE tims,
|
||||
lv_ts TYPE timestamp.
|
||||
|
||||
SELECT SINGLE as4date as4time FROM dd25l " View
|
||||
INTO (lv_date, lv_time)
|
||||
WHERE viewname = ms_item-obj_name
|
||||
AND as4local = 'A'
|
||||
AND as4vers = '0000'.
|
||||
|
||||
_object_check_timestamp lv_date lv_time.
|
||||
|
||||
SELECT SINGLE as4date as4time FROM dd09l " Table tech settings
|
||||
INTO (lv_date, lv_time)
|
||||
WHERE tabname = ms_item-obj_name
|
||||
AND as4local = 'A'
|
||||
AND as4vers = '0000'.
|
||||
|
||||
_object_check_timestamp lv_date lv_time.
|
||||
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
|
||||
SELECT SINGLE as4user FROM dd25l INTO rv_user
|
||||
|
|
|
@ -24,6 +24,10 @@ ENDCLASS. "lcl_object_W3SUPER DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_w3super IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -34,6 +34,10 @@ ENDCLASS. "lcl_object_wdya DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_wdya IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -68,6 +68,10 @@ ENDCLASS. "lcl_object_wdyn DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_wdyn IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -62,6 +62,10 @@ ENDCLASS. "lcl_object_SFBS DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_webi IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD. "lif_object~changed_by
|
||||
|
|
|
@ -28,6 +28,10 @@ ENDCLASS. "lcl_object_xslt DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_object_xslt IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~changed_by.
|
||||
rv_user = c_user_unknown. " todo
|
||||
ENDMETHOD.
|
||||
|
|
|
@ -230,7 +230,11 @@ INTERFACE lif_object.
|
|||
jump
|
||||
RAISING lcx_exception,
|
||||
get_metadata
|
||||
RETURNING VALUE(rs_metadata) TYPE ty_metadata.
|
||||
RETURNING VALUE(rs_metadata) TYPE ty_metadata,
|
||||
has_changed_since
|
||||
IMPORTING iv_timestamp TYPE timestamp
|
||||
RETURNING VALUE(rv_changed) TYPE abap_bool
|
||||
RAISING lcx_exception.
|
||||
|
||||
DATA: mo_files TYPE REF TO lcl_objects_files.
|
||||
|
||||
|
@ -435,6 +439,7 @@ ENDCLASS. "lcl_objects_files IMPLEMENTATION
|
|||
CLASS lcl_objects_super DEFINITION ABSTRACT.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
||||
METHODS:
|
||||
constructor
|
||||
IMPORTING
|
||||
|
@ -497,6 +502,10 @@ ENDCLASS. "lcl_objects_bridge DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_objects_bridge IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object~has_changed_since.
|
||||
rv_changed = abap_true.
|
||||
ENDMETHOD. "lif_object~has_changed_since
|
||||
|
||||
METHOD lif_object~get_metadata.
|
||||
|
||||
CALL METHOD mo_plugin->('ZIF_ABAPGIT_PLUGIN~GET_METADATA')
|
||||
|
@ -706,6 +715,7 @@ CLASS lcl_objects_program DEFINITION INHERITING FROM lcl_objects_super.
|
|||
RAISING lcx_exception.
|
||||
|
||||
PROTECTED SECTION.
|
||||
|
||||
TYPES: ty_spaces_tt TYPE STANDARD TABLE OF i WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF ty_tpool.
|
||||
|
@ -759,6 +769,12 @@ CLASS lcl_objects_program DEFINITION INHERITING FROM lcl_objects_super.
|
|||
is_cua TYPE ty_cua
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS check_prog_changed_since
|
||||
IMPORTING iv_program TYPE programm
|
||||
iv_timestamp TYPE timestamp
|
||||
iv_skip_gui TYPE abap_bool DEFAULT abap_false
|
||||
RETURNING VALUE(rv_changed) TYPE abap_bool.
|
||||
|
||||
CLASS-METHODS:
|
||||
add_tpool
|
||||
IMPORTING it_tpool TYPE textpool_table
|
||||
|
@ -1309,6 +1325,55 @@ CLASS lcl_objects_program IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize_cua
|
||||
|
||||
METHOD check_prog_changed_since.
|
||||
|
||||
DATA: lv_date TYPE dats,
|
||||
lv_time TYPE tims,
|
||||
lv_ts TYPE timestamp,
|
||||
lt_screens TYPE STANDARD TABLE OF d020s,
|
||||
lt_eudb TYPE STANDARD TABLE OF eudb.
|
||||
|
||||
FIELD-SYMBOLS: <ls_screen> LIKE LINE OF lt_screens,
|
||||
<ls_eudb> LIKE LINE OF lt_eudb.
|
||||
|
||||
SELECT SINGLE udat utime FROM reposrc " Program
|
||||
INTO (lv_date, lv_time)
|
||||
WHERE progname = iv_program
|
||||
AND r3state = 'A'.
|
||||
|
||||
_object_check_timestamp lv_date lv_time.
|
||||
|
||||
SELECT SINGLE udat utime FROM repotext " Program text pool
|
||||
INTO (lv_date, lv_time)
|
||||
WHERE progname = iv_program
|
||||
AND r3state = 'A'.
|
||||
|
||||
_object_check_timestamp lv_date lv_time.
|
||||
|
||||
IF iv_skip_gui = abap_true.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
SELECT dgen tgen FROM d020s " Screens
|
||||
INTO CORRESPONDING FIELDS OF TABLE lt_screens
|
||||
WHERE prog = iv_program ##TOO_MANY_ITAB_FIELDS.
|
||||
|
||||
LOOP AT lt_screens ASSIGNING <ls_screen>.
|
||||
_object_check_timestamp <ls_screen>-dgen <ls_screen>-tgen.
|
||||
ENDLOOP.
|
||||
|
||||
SELECT vdatum vzeit FROM eudb " GUI
|
||||
INTO CORRESPONDING FIELDS OF TABLE lt_eudb
|
||||
WHERE relid = 'CU'
|
||||
AND name = iv_program
|
||||
AND srtf2 = 0 ##TOO_MANY_ITAB_FIELDS.
|
||||
|
||||
LOOP AT lt_eudb ASSIGNING <ls_eudb>.
|
||||
_object_check_timestamp <ls_eudb>-vdatum <ls_eudb>-vzeit.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD. "check_prog_changed_since
|
||||
|
||||
ENDCLASS. "lcl_objects_program IMPLEMENTATION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -1435,6 +1500,12 @@ CLASS lcl_objects DEFINITION FINAL.
|
|||
RETURNING VALUE(rv_user) TYPE xubname
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS has_changed_since
|
||||
IMPORTING is_item TYPE ty_item
|
||||
iv_timestamp TYPE timestamp
|
||||
RETURNING VALUE(rv_changed) TYPE abap_bool
|
||||
RAISING lcx_exception.
|
||||
|
||||
CLASS-METHODS is_supported
|
||||
IMPORTING is_item TYPE ty_item
|
||||
RETURNING VALUE(rv_bool) TYPE abap_bool.
|
||||
|
|
|
@ -172,6 +172,19 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "create_object
|
||||
|
||||
METHOD has_changed_since.
|
||||
rv_changed = abap_true. " Assume changed
|
||||
|
||||
IF is_supported( is_item ) = abap_false.
|
||||
RETURN. " Will requre serialize which will log the error
|
||||
ENDIF.
|
||||
|
||||
rv_changed = create_object(
|
||||
is_item = is_item
|
||||
iv_language = gc_english )->has_changed_since( iv_timestamp ).
|
||||
|
||||
ENDMETHOD. "has_changed_since
|
||||
|
||||
METHOD is_supported.
|
||||
|
||||
TRY.
|
||||
|
|
|
@ -193,7 +193,7 @@ CLASS lcl_branch_overview IMPLEMENTATION.
|
|||
SPLIT ls_raw-body AT gc_newline INTO ls_commit-message lv_trash.
|
||||
|
||||
* unix time stamps are in same time zone, so ignore the zone,
|
||||
FIND REGEX '^([\w\s]+) <(.*)> (\d{10}) .\d{4}$' IN ls_raw-author
|
||||
FIND REGEX '^([\w\s\.@]+) <(.*)> (\d{10}) .\d{4}$' IN ls_raw-author
|
||||
SUBMATCHES
|
||||
ls_commit-author
|
||||
ls_commit-email
|
||||
|
|
|
@ -170,6 +170,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
lo_betasub->add( iv_txt = 'Database util' iv_act = gc_action-go_db ) ##NO_TEXT.
|
||||
lo_betasub->add( iv_txt = 'Package to zip' iv_act = gc_action-zip_package ) ##NO_TEXT.
|
||||
lo_betasub->add( iv_txt = 'Transport to zip' iv_act = gc_action-zip_transport ) ##NO_TEXT.
|
||||
lo_betasub->add( iv_txt = 'Object to zip' iv_act = gc_action-zip_object ) ##NO_TEXT.
|
||||
lo_betasub->add( iv_txt = 'Page playground' iv_act = gc_action-go_playground ) ##NO_TEXT.
|
||||
lo_betasub->add( iv_txt = 'Debug info' iv_act = gc_action-go_debuginfo ) ##NO_TEXT.
|
||||
|
||||
|
|
|
@ -20,7 +20,8 @@ CLASS lcl_gui_page_stage DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
PRIVATE SECTION.
|
||||
DATA: mo_repo TYPE REF TO lcl_repo_online,
|
||||
ms_files TYPE ty_stage_files,
|
||||
mo_stage TYPE REF TO lcl_stage.
|
||||
mo_stage TYPE REF TO lcl_stage,
|
||||
mv_ts TYPE timestamp.
|
||||
|
||||
METHODS:
|
||||
render_list
|
||||
|
@ -56,6 +57,8 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
iv_branch_name = io_repo->get_branch_name( )
|
||||
iv_branch_sha1 = io_repo->get_sha1_remote( ).
|
||||
|
||||
GET TIME STAMP FIELD mv_ts.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~on_event.
|
||||
|
@ -228,7 +231,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( '<div class="paddings">' ).
|
||||
ro_html->add_anchor( iv_act = 'commit();'
|
||||
ro_html->add_anchor( iv_act = |commit('{ c_action-stage_commit }');|
|
||||
iv_typ = gc_action_type-onclick
|
||||
iv_id = 'act_commit'
|
||||
iv_style = 'display: none'
|
||||
|
@ -279,12 +282,51 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
" Hook global click listener on table, global action counter
|
||||
_add 'document.getElementById("stage_tab").addEventListener("click", onEvent);'.
|
||||
" Globals & initialization
|
||||
ro_html->add( |var gPageID = "stage{ mv_ts }";| ).
|
||||
_add 'var gChoiceCount = 0;'.
|
||||
_add 'setHook();'.
|
||||
|
||||
" Hook global click listener on table, global action counter
|
||||
_add 'function setHook() {'.
|
||||
_add ' var stageTab = document.getElementById("stage_tab");'.
|
||||
_add ' if (stageTab.addEventListener) {'.
|
||||
_add ' stageTab.addEventListener("click", onEvent);'.
|
||||
_add ' } else {'.
|
||||
_add ' stageTab.attachEvent("onclick", onEvent);'. " <IE9 crutch
|
||||
_add ' }'.
|
||||
_add ' window.onbeforeunload = onPageUnload;'.
|
||||
_add ' window.onload = onPageLoad;'.
|
||||
_add '}'.
|
||||
|
||||
" Store table state on leaving the page
|
||||
_add 'function onPageUnload() {'.
|
||||
_add ' var data = collectData();'.
|
||||
_add ' window.sessionStorage.setItem(gPageID, JSON.stringify(data));'.
|
||||
_add '}'.
|
||||
|
||||
" Re-store table state on entering the page
|
||||
_add 'function onPageLoad() {'.
|
||||
_add ' var data = JSON.parse(window.sessionStorage.getItem(gPageID));'.
|
||||
_add ' var stage = document.getElementById("stage_tab");'.
|
||||
_add ' for (var i = stage.rows.length - 1; i >= 0; i--) {'.
|
||||
_add ' var tr = stage.rows[i];'.
|
||||
_add ' if (tr.parentNode.tagName == "THEAD") continue;'.
|
||||
_add ' var context = tr.parentNode.className;'.
|
||||
_add ' var cmd = data[tr.cells[1].innerText];'.
|
||||
_add ' if (!cmd) continue;'.
|
||||
_add ' formatTR(tr, cmd, context);'.
|
||||
_add ' if (countChoiceImpact(cmd) > 0) gChoiceCount++;'.
|
||||
_add ' }'.
|
||||
_add ' updateMenu();'.
|
||||
_add '}'.
|
||||
|
||||
" Event handler, change status
|
||||
_add 'function onEvent(event) {'.
|
||||
_add ' if (!event.target) {'. " <IE9 crutch
|
||||
_add ' if (event.srcElement) event.target = event.srcElement;'.
|
||||
_add ' else return;'.
|
||||
_add ' }'.
|
||||
_add ' if (event.target.tagName != "A") return;'.
|
||||
_add ' var td = event.target.parentNode;'.
|
||||
_add ' if (!td || td.tagName != "TD" || td.className != "cmd") return;'.
|
||||
|
@ -292,15 +334,23 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
_add ' var tr = td.parentNode;'.
|
||||
_add ' var context = tr.parentNode.className;'.
|
||||
_add ' switch (cmd) {'.
|
||||
_add ' case "add": cmd = "A"; gChoiceCount++; break;'.
|
||||
_add ' case "remove": cmd = "R"; gChoiceCount++; break;'.
|
||||
_add ' case "ignore": cmd = "I"; gChoiceCount++; break;'.
|
||||
_add ' case "reset": cmd = "?"; gChoiceCount--; break;'.
|
||||
_add ' case "add": cmd = "A"; break;'.
|
||||
_add ' case "remove": cmd = "R"; break;'.
|
||||
_add ' case "ignore": cmd = "I"; break;'.
|
||||
_add ' case "reset": cmd = "?"; break;'.
|
||||
_add ' }'.
|
||||
_add ' formatTR(tr, cmd, context);'.
|
||||
_add ' gChoiceCount += countChoiceImpact(cmd);'.
|
||||
_add ' updateMenu();'.
|
||||
_add '}'.
|
||||
|
||||
" Update action counter -> affects menu update after
|
||||
_add 'function countChoiceImpact(cmd) {'.
|
||||
_add ' if ("ARI".indexOf(cmd) > -1) return 1;'.
|
||||
_add ' else if ("?".indexOf(cmd) > -1) return -1;'.
|
||||
_add ' else alert("Unknown command");'.
|
||||
_add '}'.
|
||||
|
||||
" Re-format table line
|
||||
_add 'function formatTR(tr, cmd, context) {'.
|
||||
_add ' var cmdReset = "<a>reset</a>"; '.
|
||||
|
@ -324,9 +374,9 @@ CLASS lcl_gui_page_stage IMPLEMENTATION.
|
|||
_add '}'.
|
||||
|
||||
" Commit change to the server
|
||||
_add 'function commit() {'.
|
||||
_add 'function commit(action) {'.
|
||||
_add ' var data = collectData();'.
|
||||
ro_html->add( | submitForm(data, "{ c_action-stage_commit }");| ).
|
||||
_add ' submitForm(data, action);'.
|
||||
_add '}'.
|
||||
|
||||
" Extract data from the table
|
||||
|
|
|
@ -18,7 +18,10 @@ CLASS lcl_popups DEFINITION.
|
|||
CLASS-METHODS:
|
||||
popup_package_export
|
||||
RETURNING VALUE(rv_package) TYPE devclass
|
||||
RAISING lcx_exception,
|
||||
RAISING lcx_exception,
|
||||
popup_object
|
||||
RETURNING VALUE(rs_tadir) TYPE tadir
|
||||
RAISING lcx_exception,
|
||||
create_branch_popup
|
||||
EXPORTING ev_name TYPE string
|
||||
ev_cancel TYPE abap_bool
|
||||
|
@ -43,19 +46,19 @@ CLASS lcl_popups DEFINITION.
|
|||
iv_freeze_package TYPE abap_bool OPTIONAL
|
||||
iv_freeze_url TYPE abap_bool OPTIONAL
|
||||
iv_title TYPE clike DEFAULT 'Clone repository ...'
|
||||
RETURNING VALUE(rs_popup) TYPE ty_popup
|
||||
RETURNING VALUE(rs_popup) TYPE ty_popup
|
||||
RAISING lcx_exception ##NO_TEXT,
|
||||
popup_to_confirm
|
||||
IMPORTING
|
||||
titlebar TYPE clike
|
||||
text_question TYPE clike
|
||||
text_button_1 TYPE clike DEFAULT 'Yes'
|
||||
icon_button_1 TYPE ICON-NAME DEFAULT space
|
||||
text_button_2 TYPE clike DEFAULT 'No'
|
||||
icon_button_2 TYPE ICON-NAME DEFAULT space
|
||||
default_button TYPE char1 DEFAULT '1'
|
||||
display_cancel_button TYPE char1 DEFAULT abap_true
|
||||
RETURNING VALUE(rv_answer) TYPE char1
|
||||
titlebar TYPE clike
|
||||
text_question TYPE clike
|
||||
text_button_1 TYPE clike DEFAULT 'Yes'
|
||||
icon_button_1 TYPE icon-name DEFAULT space
|
||||
text_button_2 TYPE clike DEFAULT 'No'
|
||||
icon_button_2 TYPE icon-name DEFAULT space
|
||||
default_button TYPE char1 DEFAULT '1'
|
||||
display_cancel_button TYPE char1 DEFAULT abap_true
|
||||
RETURNING VALUE(rv_answer) TYPE char1
|
||||
RAISING lcx_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
@ -72,6 +75,51 @@ CLASS lcl_popups IMPLEMENTATION.
|
|||
END-OF-DEFINITION.
|
||||
|
||||
|
||||
METHOD popup_object.
|
||||
|
||||
DATA: lv_returncode TYPE c,
|
||||
lt_fields TYPE TABLE OF sval.
|
||||
|
||||
FIELD-SYMBOLS: <ls_field> LIKE LINE OF lt_fields.
|
||||
|
||||
" TAB FLD LABEL DEF ATTR
|
||||
_add_dialog_fld 'TADIR' 'OBJECT' 'Type' '' ''.
|
||||
_add_dialog_fld 'TADIR' 'OBJ_NAME' 'Name' '' ''.
|
||||
|
||||
CALL FUNCTION 'POPUP_GET_VALUES'
|
||||
EXPORTING
|
||||
no_value_check = abap_true
|
||||
popup_title = 'Object' "#EC NOTEXT
|
||||
IMPORTING
|
||||
returncode = lv_returncode
|
||||
TABLES
|
||||
fields = lt_fields
|
||||
EXCEPTIONS
|
||||
error_in_fields = 1
|
||||
OTHERS = 2.
|
||||
IF sy-subrc <> 0.
|
||||
lcx_exception=>raise( 'Error from POPUP_GET_VALUES' ).
|
||||
ENDIF.
|
||||
|
||||
IF lv_returncode = 'A'.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
READ TABLE lt_fields INDEX 1 ASSIGNING <ls_field>.
|
||||
ASSERT sy-subrc = 0.
|
||||
TRANSLATE <ls_field>-value TO UPPER CASE.
|
||||
rs_tadir-object = <ls_field>-value.
|
||||
|
||||
READ TABLE lt_fields INDEX 2 ASSIGNING <ls_field>.
|
||||
ASSERT sy-subrc = 0.
|
||||
TRANSLATE <ls_field>-value TO UPPER CASE.
|
||||
rs_tadir-obj_name = <ls_field>-value.
|
||||
|
||||
rs_tadir = lcl_tadir=>read_single( iv_object = rs_tadir-object
|
||||
iv_obj_name = rs_tadir-obj_name ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD popup_package_export.
|
||||
|
||||
DATA: lv_returncode TYPE c,
|
||||
|
|
|
@ -38,7 +38,9 @@ CLASS lcl_repo DEFINITION ABSTRACT FRIENDS lcl_repo_srv.
|
|||
deserialize
|
||||
RAISING lcx_exception,
|
||||
refresh
|
||||
IMPORTING iv_drop_cache TYPE abap_bool DEFAULT abap_false
|
||||
RAISING lcx_exception,
|
||||
refresh_local, " For testing purposes, maybe removed later
|
||||
build_local_checksums
|
||||
RETURNING VALUE(rt_checksums) TYPE lcl_persistence_repo=>ty_local_checksum_tt
|
||||
RAISING lcx_exception,
|
||||
|
@ -48,10 +50,12 @@ CLASS lcl_repo DEFINITION ABSTRACT FRIENDS lcl_repo_srv.
|
|||
|
||||
PROTECTED SECTION.
|
||||
|
||||
DATA: mt_local TYPE ty_files_item_tt,
|
||||
mt_remote TYPE ty_files_tt,
|
||||
mo_dot_abapgit TYPE REF TO lcl_dot_abapgit,
|
||||
ms_data TYPE lcl_persistence_repo=>ty_repo.
|
||||
DATA: mt_local TYPE ty_files_item_tt,
|
||||
mt_remote TYPE ty_files_tt,
|
||||
mo_dot_abapgit TYPE REF TO lcl_dot_abapgit,
|
||||
mv_do_local_refresh TYPE abap_bool,
|
||||
mv_last_serialization TYPE timestamp,
|
||||
ms_data TYPE lcl_persistence_repo=>ty_repo.
|
||||
|
||||
METHODS:
|
||||
find_dot_abapgit
|
||||
|
|
|
@ -62,13 +62,15 @@ CLASS lcl_repo_online IMPLEMENTATION.
|
|||
|
||||
set( iv_sha1 = mv_branch ).
|
||||
|
||||
CLEAR mt_status. " Reset status
|
||||
|
||||
COMMIT WORK AND WAIT.
|
||||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD refresh.
|
||||
|
||||
super->refresh( ).
|
||||
super->refresh( iv_drop_cache ).
|
||||
CLEAR mt_status.
|
||||
|
||||
lcl_progress=>show( iv_key = 'Fetch'
|
||||
|
@ -369,7 +371,7 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
|
||||
lcl_objects=>deserialize( me ).
|
||||
|
||||
CLEAR mt_local.
|
||||
CLEAR: mt_local, mv_last_serialization.
|
||||
|
||||
set( it_checksums = build_local_checksums( ) ).
|
||||
|
||||
|
@ -385,12 +387,17 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
ls_item TYPE ty_item,
|
||||
lt_files TYPE ty_files_tt.
|
||||
|
||||
DATA: lt_cache TYPE SORTED TABLE OF ty_file_item
|
||||
WITH NON-UNIQUE KEY item.
|
||||
|
||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF lt_files,
|
||||
<ls_return> LIKE LINE OF rt_files,
|
||||
<ls_cache> LIKE LINE OF lt_cache,
|
||||
<ls_tadir> LIKE LINE OF lt_tadir.
|
||||
|
||||
|
||||
IF lines( mt_local ) > 0.
|
||||
" Serialization happened before and no refresh request
|
||||
IF mv_last_serialization IS NOT INITIAL AND mv_do_local_refresh = abap_false.
|
||||
rt_files = mt_local.
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
@ -405,16 +412,34 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
<ls_return>-file-sha1 = lcl_hash=>sha1( iv_type = gc_type-blob
|
||||
iv_data = <ls_return>-file-data ).
|
||||
|
||||
lt_cache = mt_local.
|
||||
lt_tadir = lcl_tadir=>read( get_package( ) ).
|
||||
LOOP AT lt_tadir ASSIGNING <ls_tadir>.
|
||||
|
||||
ls_item-obj_type = <ls_tadir>-object.
|
||||
ls_item-obj_name = <ls_tadir>-obj_name.
|
||||
ls_item-devclass = <ls_tadir>-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. " 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 <ls_cache> WHERE item = ls_item.
|
||||
APPEND <ls_cache> TO rt_files.
|
||||
ENDLOOP.
|
||||
|
||||
CONTINUE.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
|
||||
lcl_progress=>show( iv_key = 'Serialize'
|
||||
iv_current = sy-tabix
|
||||
iv_total = lines( lt_tadir )
|
||||
iv_text = <ls_tadir>-obj_name ) ##NO_TEXT.
|
||||
|
||||
ls_item-obj_type = <ls_tadir>-object.
|
||||
ls_item-obj_name = <ls_tadir>-obj_name.
|
||||
|
||||
lt_files = lcl_objects=>serialize(
|
||||
is_item = ls_item
|
||||
iv_language = get_master_language( )
|
||||
|
@ -429,7 +454,9 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
ENDLOOP.
|
||||
ENDLOOP.
|
||||
|
||||
mt_local = rt_files.
|
||||
GET TIME STAMP FIELD mv_last_serialization.
|
||||
mt_local = rt_files.
|
||||
mv_do_local_refresh = abap_false. " Fulfill refresh
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -453,9 +480,19 @@ CLASS lcl_repo IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
METHOD refresh.
|
||||
CLEAR mt_local.
|
||||
|
||||
mv_do_local_refresh = abap_true.
|
||||
|
||||
IF iv_drop_cache = abap_true.
|
||||
CLEAR: mv_last_serialization, mt_local.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD. "refresh
|
||||
|
||||
METHOD refresh_local. " For testing purposes, maybe removed later
|
||||
mv_do_local_refresh = abap_true.
|
||||
ENDMETHOD. "refresh_local
|
||||
|
||||
METHOD get_package.
|
||||
rv_package = ms_data-package.
|
||||
ENDMETHOD. "get_package
|
||||
|
|
|
@ -963,21 +963,11 @@ CLASS lcl_progress DEFINITION FINAL.
|
|||
iv_text TYPE csequence.
|
||||
|
||||
PRIVATE SECTION.
|
||||
TYPES: BEGIN OF ty_stack,
|
||||
key TYPE string,
|
||||
current TYPE i,
|
||||
total TYPE i,
|
||||
text TYPE string,
|
||||
END OF ty_stack.
|
||||
|
||||
CLASS-DATA:
|
||||
gt_stack TYPE STANDARD TABLE OF ty_stack WITH DEFAULT KEY.
|
||||
|
||||
CLASS-METHODS:
|
||||
calc_pct
|
||||
RETURNING VALUE(rv_pct) TYPE i,
|
||||
build_text
|
||||
RETURNING VALUE(rv_text) TYPE string.
|
||||
IMPORTING iv_current TYPE i
|
||||
iv_total TYPE i
|
||||
RETURNING VALUE(rv_pct) TYPE i.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -988,66 +978,24 @@ CLASS lcl_progress IMPLEMENTATION.
|
|||
DATA: lv_pct TYPE i,
|
||||
lv_text TYPE string.
|
||||
|
||||
FIELD-SYMBOLS: <ls_stack> LIKE LINE OF gt_stack.
|
||||
|
||||
* assumption:
|
||||
* all callers must end with calling this method with iv_current = iv_total
|
||||
* to clear the progress of that sub element
|
||||
ASSERT lines( gt_stack ) < 10.
|
||||
|
||||
READ TABLE gt_stack INDEX lines( gt_stack ) ASSIGNING <ls_stack>.
|
||||
IF sy-subrc <> 0 OR <ls_stack>-key <> iv_key.
|
||||
APPEND INITIAL LINE TO gt_stack ASSIGNING <ls_stack>.
|
||||
ENDIF.
|
||||
<ls_stack>-key = iv_key.
|
||||
<ls_stack>-current = iv_current.
|
||||
<ls_stack>-total = iv_total.
|
||||
<ls_stack>-text = iv_text.
|
||||
|
||||
lv_pct = calc_pct( ).
|
||||
lv_text = build_text( ).
|
||||
lv_pct = calc_pct( iv_current = iv_current
|
||||
iv_total = iv_total ).
|
||||
CONCATENATE iv_key '-' iv_text INTO lv_text SEPARATED BY space.
|
||||
|
||||
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
|
||||
EXPORTING
|
||||
percentage = lv_pct
|
||||
text = lv_text.
|
||||
|
||||
IF iv_current = iv_total.
|
||||
DELETE gt_stack INDEX lines( gt_stack ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD build_text.
|
||||
|
||||
FIELD-SYMBOLS: <ls_stack> LIKE LINE OF gt_stack.
|
||||
|
||||
|
||||
LOOP AT gt_stack ASSIGNING <ls_stack>.
|
||||
IF sy-tabix = 1.
|
||||
rv_text = |{ <ls_stack>-key } { <ls_stack>-text }|.
|
||||
ELSE.
|
||||
rv_text = |{ rv_text } - { <ls_stack>-key } { <ls_stack>-text }|.
|
||||
|
||||
IF <ls_stack>-current <> 1 AND <ls_stack>-total <> 1.
|
||||
rv_text = |{ rv_text } ({ <ls_stack>-current }/{ <ls_stack>-total })|.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD calc_pct.
|
||||
|
||||
DATA: lv_f TYPE f.
|
||||
|
||||
FIELD-SYMBOLS: <ls_stack> LIKE LINE OF gt_stack.
|
||||
|
||||
|
||||
READ TABLE gt_stack ASSIGNING <ls_stack> INDEX 1.
|
||||
ASSERT sy-subrc = 0.
|
||||
|
||||
lv_f = ( <ls_stack>-current / <ls_stack>-total ) * 100.
|
||||
lv_f = ( iv_current / iv_total ) * 100.
|
||||
rv_pct = lv_f.
|
||||
|
||||
IF rv_pct = 100.
|
||||
|
|
|
@ -22,6 +22,9 @@ CLASS lcl_zip DEFINITION FINAL.
|
|||
CLASS-METHODS export_package
|
||||
RAISING lcx_exception lcx_cancel.
|
||||
|
||||
CLASS-METHODS export_object
|
||||
RAISING lcx_exception lcx_cancel.
|
||||
|
||||
PRIVATE SECTION.
|
||||
CLASS-METHODS file_upload
|
||||
RETURNING VALUE(rv_xstr) TYPE xstring
|
||||
|
@ -455,4 +458,32 @@ CLASS lcl_zip IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "export_package
|
||||
|
||||
METHOD export_object.
|
||||
|
||||
DATA: lo_repo TYPE REF TO lcl_repo_offline,
|
||||
ls_data TYPE lcl_persistence_repo=>ty_repo,
|
||||
lt_tadir TYPE scts_tadir,
|
||||
ls_tadir TYPE tadir.
|
||||
|
||||
|
||||
ls_tadir = lcl_popups=>popup_object( ).
|
||||
IF ls_tadir IS INITIAL.
|
||||
RAISE EXCEPTION TYPE lcx_cancel.
|
||||
ENDIF.
|
||||
|
||||
ls_data-key = 'TZIP'.
|
||||
ls_data-package = ls_tadir-devclass.
|
||||
ls_data-master_language = sy-langu.
|
||||
|
||||
CREATE OBJECT lo_repo
|
||||
EXPORTING
|
||||
is_data = ls_data.
|
||||
|
||||
APPEND ls_tadir TO lt_tadir.
|
||||
|
||||
lcl_zip=>export( io_repo = lo_repo
|
||||
it_filter = lt_tadir ).
|
||||
|
||||
ENDMETHOD. "export_package
|
||||
|
||||
ENDCLASS. "lcl_zip IMPLEMENTATION
|
Loading…
Reference in New Issue
Block a user