From a99c8dd7ccfbbbacb299aecf27832942e5aa3c98 Mon Sep 17 00:00:00 2001 From: Fabio Zuber Date: Fri, 30 Sep 2016 17:59:55 +0200 Subject: [PATCH 01/30] fix(branch overview): allow email as username The branch overview screen crashes if there is a commit with an email address as username in the commit history. This change fixes that. --- src/zabapgit_page_branch_overview.prog.abap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/zabapgit_page_branch_overview.prog.abap b/src/zabapgit_page_branch_overview.prog.abap index bd6bfd4a9..c288c0b12 100644 --- a/src/zabapgit_page_branch_overview.prog.abap +++ b/src/zabapgit_page_branch_overview.prog.abap @@ -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 @@ -590,4 +590,4 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION. ENDMETHOD. -ENDCLASS. \ No newline at end of file +ENDCLASS. From f60a25d4a7156e4af495f183380e850b7452ca96 Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 1 Oct 2016 13:28:05 +0000 Subject: [PATCH 02/30] fix newline --- src/zabapgit_page_branch_overview.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_page_branch_overview.prog.abap b/src/zabapgit_page_branch_overview.prog.abap index c288c0b12..1c820ea70 100644 --- a/src/zabapgit_page_branch_overview.prog.abap +++ b/src/zabapgit_page_branch_overview.prog.abap @@ -590,4 +590,4 @@ CLASS lcl_gui_page_branch_overview IMPLEMENTATION. ENDMETHOD. -ENDCLASS. +ENDCLASS. \ No newline at end of file From f51e34a8c57245faa76f577050f7867c51d95ba1 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sat, 1 Oct 2016 20:23:38 +0200 Subject: [PATCH 03/30] more js fixes (IE8-) #367 --- src/zabapgit_page_stage.prog.abap | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/zabapgit_page_stage.prog.abap b/src/zabapgit_page_stage.prog.abap index d0411902a..03c49b450 100644 --- a/src/zabapgit_page_stage.prog.abap +++ b/src/zabapgit_page_stage.prog.abap @@ -279,12 +279,26 @@ 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 _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);'. " Date: Sat, 1 Oct 2016 20:29:10 +0200 Subject: [PATCH 04/30] comment fix --- src/zabapgit_page_stage.prog.abap | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/zabapgit_page_stage.prog.abap b/src/zabapgit_page_stage.prog.abap index 03c49b450..eb15c17bb 100644 --- a/src/zabapgit_page_stage.prog.abap +++ b/src/zabapgit_page_stage.prog.abap @@ -289,13 +289,13 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. _add ' if (stageTab.addEventListener) {'. _add ' stageTab.addEventListener("click", onEvent);'. _add ' } else {'. - _add ' stageTab.attachEvent("onclick", onEvent);'. " Date: Thu, 6 Oct 2016 08:24:49 +0300 Subject: [PATCH 05/30] serialization caching, basic objects #366 --- src/zabapgit_file_status.prog.abap | 25 ++++---- src/zabapgit_object_acid.prog.abap | 4 ++ src/zabapgit_object_auth.prog.abap | 4 ++ src/zabapgit_object_clas.prog.abap | 31 ++++++++++ src/zabapgit_object_doct.prog.abap | 4 ++ src/zabapgit_object_docv.prog.abap | 4 ++ src/zabapgit_object_doma.prog.abap | 16 +++++ src/zabapgit_object_dtel.prog.abap | 16 +++++ src/zabapgit_object_enho.prog.abap | 4 ++ src/zabapgit_object_enhs.prog.abap | 4 ++ src/zabapgit_object_enqu.prog.abap | 16 +++++ src/zabapgit_object_ensc.prog.abap | 4 ++ src/zabapgit_object_fugr.prog.abap | 32 ++++++++++ src/zabapgit_object_iarp.prog.abap | 4 ++ src/zabapgit_object_iasp.prog.abap | 4 ++ src/zabapgit_object_iatu.prog.abap | 4 ++ src/zabapgit_object_msag.prog.abap | 4 ++ src/zabapgit_object_nrob.prog.abap | 4 ++ src/zabapgit_object_para.prog.abap | 4 ++ src/zabapgit_object_pinf.prog.abap | 4 ++ src/zabapgit_object_prog.prog.abap | 8 +++ src/zabapgit_object_sfbf.prog.abap | 4 ++ src/zabapgit_object_sfbs.prog.abap | 4 ++ src/zabapgit_object_sfsw.prog.abap | 4 ++ src/zabapgit_object_shi3.prog.abap | 4 ++ src/zabapgit_object_shlp.prog.abap | 15 +++++ src/zabapgit_object_sicf.prog.abap | 4 ++ src/zabapgit_object_smim.prog.abap | 4 ++ src/zabapgit_object_splo.prog.abap | 4 ++ src/zabapgit_object_ssfo.prog.abap | 4 ++ src/zabapgit_object_ssst.prog.abap | 4 ++ src/zabapgit_object_susc.prog.abap | 4 ++ src/zabapgit_object_suso.prog.abap | 4 ++ src/zabapgit_object_tabl.prog.abap | 37 ++++++++++++ src/zabapgit_object_tobj.prog.abap | 4 ++ src/zabapgit_object_tran.prog.abap | 4 ++ src/zabapgit_object_ttyp.prog.abap | 15 +++++ src/zabapgit_object_type.prog.abap | 4 ++ src/zabapgit_object_vcls.prog.abap | 4 ++ src/zabapgit_object_view.prog.abap | 24 ++++++++ src/zabapgit_object_w3xx.prog.abap | 4 ++ src/zabapgit_object_wdya.prog.abap | 4 ++ src/zabapgit_object_wdyn.prog.abap | 4 ++ src/zabapgit_object_webi.prog.abap | 4 ++ src/zabapgit_object_xslt.prog.abap | 4 ++ src/zabapgit_objects.prog.abap | 93 ++++++++++++++++++++++++++++- src/zabapgit_objects_impl.prog.abap | 13 ++++ src/zabapgit_repo.prog.abap | 15 +++-- src/zabapgit_repo_impl.prog.abap | 57 ++++++++++++++---- 49 files changed, 519 insertions(+), 30 deletions(-) diff --git a/src/zabapgit_file_status.prog.abap b/src/zabapgit_file_status.prog.abap index 8ade9c97a..105c3b2dd 100644 --- a/src/zabapgit_file_status.prog.abap +++ b/src/zabapgit_file_status.prog.abap @@ -37,15 +37,12 @@ CLASS lcl_file_status IMPLEMENTATION. METHOD compare_files. READ TABLE it_repo WITH KEY - path = is_gen-path + path = is_gen-path filename = is_gen-filename - data = is_gen-data + sha1 = is_gen-sha1 TRANSPORTING NO FIELDS. - IF sy-subrc <> 0. - rv_match = abap_false. - ELSE. - rv_match = abap_true. - ENDIF. + + rv_match = boolc( sy-subrc = 0 ). ENDMETHOD. "compare_files @@ -70,7 +67,7 @@ CLASS lcl_file_status IMPLEMENTATION. lt_remote = io_repo->get_files_remote( ). - lt_local = io_repo->get_files_local( io_log ). + lt_local = io_repo->get_files_local( io_log ). LOOP AT lt_remote ASSIGNING . lcl_progress=>show( iv_key = 'Status' @@ -112,8 +109,8 @@ CLASS lcl_file_status IMPLEMENTATION. LOOP AT lt_files ASSIGNING . ls_result-filename = -filename. - ls_result-match = compare_files( it_repo = lt_remote - is_gen = ). + ls_result-match = compare_files( it_repo = lt_remote + is_gen = ). APPEND ls_result TO rt_results. ENDLOOP. ENDLOOP. @@ -124,7 +121,7 @@ CLASS lcl_file_status IMPLEMENTATION. TRANSPORTING NO FIELDS. IF sy-subrc <> 0. IF io_repo->get_dot_abapgit( )->is_ignored( - iv_path = -path + iv_path = -path iv_filename = -filename ) = abap_true. CONTINUE. ENDIF. @@ -149,7 +146,7 @@ CLASS lcl_file_status IMPLEMENTATION. LOOP AT lt_tadir ASSIGNING . READ TABLE rt_results WITH KEY obj_type = -object - obj_name = -obj_name + obj_name = -obj_name TRANSPORTING NO FIELDS. IF sy-subrc <> 0. ls_item-obj_type = -object. @@ -168,8 +165,8 @@ CLASS lcl_file_status IMPLEMENTATION. LOOP AT rt_results ASSIGNING WHERE obj_type = -object - AND obj_name = -obj_name - AND path IS INITIAL. + AND obj_name = -obj_name + AND path IS INITIAL. * new file added locally to existing object -path = io_repo->get_dot_abapgit( )->get_starting_folder( ) && -path. -new = gc_new-local. diff --git a/src/zabapgit_object_acid.prog.abap b/src/zabapgit_object_acid.prog.abap index a840bd035..10607a865 100644 --- a/src/zabapgit_object_acid.prog.abap +++ b/src/zabapgit_object_acid.prog.abap @@ -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 diff --git a/src/zabapgit_object_auth.prog.abap b/src/zabapgit_object_auth.prog.abap index de8abb6ff..b0a07c348 100644 --- a/src/zabapgit_object_auth.prog.abap +++ b/src/zabapgit_object_auth.prog.abap @@ -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 diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index 899fc66e3..f34e54856 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -121,6 +121,37 @@ ENDCLASS. "lcl_object_intf DEFINITION *----------------------------------------------------------------------* CLASS lcl_object_clas IMPLEMENTATION. + METHOD lif_object~has_changed_since. + + DATA: lv_clsname TYPE seoclsname, + lt_incl TYPE seoincl_t. + + FIELD-SYMBOLS LIKE LINE OF lt_incl. + + lv_clsname = ms_item-obj_name. + + CASE ms_item-obj_type. + WHEN 'CLAS'. + lt_incl = cl_oo_classname_service=>get_all_class_includes( lv_clsname ). + WHEN 'INTF'. + APPEND INITIAL LINE TO lt_incl ASSIGNING . + = cl_oo_classname_service=>get_interfacepool_name( lv_clsname ). + WHEN OTHERS. + lcx_exception=>raise( 'class delete, unknown type' ). + ENDCASE. + + LOOP AT lt_incl ASSIGNING . + rv_changed = check_prog_changed_since( + iv_program = + iv_timestamp = iv_timestamp + iv_skip_gui = abap_true ). + IF rv_changed = abap_true. + RETURN. + ENDIF. + ENDLOOP. + + ENDMETHOD. "lif_object~has_changed_since + METHOD lif_object~get_metadata. rs_metadata = get_metadata( ). ENDMETHOD. "lif_object~get_metadata diff --git a/src/zabapgit_object_doct.prog.abap b/src/zabapgit_object_doct.prog.abap index 68d6a8a4d..93558019a 100644 --- a/src/zabapgit_object_doct.prog.abap +++ b/src/zabapgit_object_doct.prog.abap @@ -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. diff --git a/src/zabapgit_object_docv.prog.abap b/src/zabapgit_object_docv.prog.abap index 3b17f0345..b5a316fba 100644 --- a/src/zabapgit_object_docv.prog.abap +++ b/src/zabapgit_object_docv.prog.abap @@ -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 diff --git a/src/zabapgit_object_doma.prog.abap b/src/zabapgit_object_doma.prog.abap index cce6ddc68..470930905 100644 --- a/src/zabapgit_object_doma.prog.abap +++ b/src/zabapgit_object_doma.prog.abap @@ -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 diff --git a/src/zabapgit_object_dtel.prog.abap b/src/zabapgit_object_dtel.prog.abap index 22f1f0baa..3ff6e942b 100644 --- a/src/zabapgit_object_dtel.prog.abap +++ b/src/zabapgit_object_dtel.prog.abap @@ -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 diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index d895fb6cd..a089cd30f 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -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 diff --git a/src/zabapgit_object_enhs.prog.abap b/src/zabapgit_object_enhs.prog.abap index 10d60f91b..1a5eebb78 100644 --- a/src/zabapgit_object_enhs.prog.abap +++ b/src/zabapgit_object_enhs.prog.abap @@ -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. diff --git a/src/zabapgit_object_enqu.prog.abap b/src/zabapgit_object_enqu.prog.abap index 1177b01fc..26a7512ce 100644 --- a/src/zabapgit_object_enqu.prog.abap +++ b/src/zabapgit_object_enqu.prog.abap @@ -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. diff --git a/src/zabapgit_object_ensc.prog.abap b/src/zabapgit_object_ensc.prog.abap index 2379dd1f6..730d7a48c 100644 --- a/src/zabapgit_object_ensc.prog.abap +++ b/src/zabapgit_object_ensc.prog.abap @@ -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. diff --git a/src/zabapgit_object_fugr.prog.abap b/src/zabapgit_object_fugr.prog.abap index 2deffaf72..d8f0f107b 100644 --- a/src/zabapgit_object_fugr.prog.abap +++ b/src/zabapgit_object_fugr.prog.abap @@ -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: LIKE LINE OF lt_functab, + LIKE LINE OF lt_includes. + + lt_includes = includes( ). " Main prog also included here + + LOOP AT lt_includes ASSIGNING . + rv_changed = check_prog_changed_since( + iv_program = + iv_timestamp = iv_timestamp ). + IF rv_changed = abap_true. + RETURN. + ENDIF. + ENDLOOP. + + lt_functab = functions( ). + + LOOP AT lt_functab ASSIGNING . + rv_changed = check_prog_changed_since( + iv_program = -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. diff --git a/src/zabapgit_object_iarp.prog.abap b/src/zabapgit_object_iarp.prog.abap index 356326b09..66ae8b2f3 100644 --- a/src/zabapgit_object_iarp.prog.abap +++ b/src/zabapgit_object_iarp.prog.abap @@ -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. diff --git a/src/zabapgit_object_iasp.prog.abap b/src/zabapgit_object_iasp.prog.abap index add9d0522..f1a345829 100644 --- a/src/zabapgit_object_iasp.prog.abap +++ b/src/zabapgit_object_iasp.prog.abap @@ -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. diff --git a/src/zabapgit_object_iatu.prog.abap b/src/zabapgit_object_iatu.prog.abap index 9cddad81e..f0b5a4a7e 100644 --- a/src/zabapgit_object_iatu.prog.abap +++ b/src/zabapgit_object_iatu.prog.abap @@ -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. diff --git a/src/zabapgit_object_msag.prog.abap b/src/zabapgit_object_msag.prog.abap index 9a6f05607..c846270d1 100644 --- a/src/zabapgit_object_msag.prog.abap +++ b/src/zabapgit_object_msag.prog.abap @@ -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 diff --git a/src/zabapgit_object_nrob.prog.abap b/src/zabapgit_object_nrob.prog.abap index e3934a7ff..d40c52598 100644 --- a/src/zabapgit_object_nrob.prog.abap +++ b/src/zabapgit_object_nrob.prog.abap @@ -22,6 +22,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, diff --git a/src/zabapgit_object_para.prog.abap b/src/zabapgit_object_para.prog.abap index 968f87445..4523cc560 100644 --- a/src/zabapgit_object_para.prog.abap +++ b/src/zabapgit_object_para.prog.abap @@ -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. diff --git a/src/zabapgit_object_pinf.prog.abap b/src/zabapgit_object_pinf.prog.abap index bcf4b7a61..857d750f2 100644 --- a/src/zabapgit_object_pinf.prog.abap +++ b/src/zabapgit_object_pinf.prog.abap @@ -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 diff --git a/src/zabapgit_object_prog.prog.abap b/src/zabapgit_object_prog.prog.abap index 03961ac65..d04c51d5b 100644 --- a/src/zabapgit_object_prog.prog.abap +++ b/src/zabapgit_object_prog.prog.abap @@ -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 diff --git a/src/zabapgit_object_sfbf.prog.abap b/src/zabapgit_object_sfbf.prog.abap index 22700d2cc..4af733532 100644 --- a/src/zabapgit_object_sfbf.prog.abap +++ b/src/zabapgit_object_sfbf.prog.abap @@ -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. diff --git a/src/zabapgit_object_sfbs.prog.abap b/src/zabapgit_object_sfbs.prog.abap index fe506fbd3..e3e4c28da 100644 --- a/src/zabapgit_object_sfbs.prog.abap +++ b/src/zabapgit_object_sfbs.prog.abap @@ -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. diff --git a/src/zabapgit_object_sfsw.prog.abap b/src/zabapgit_object_sfsw.prog.abap index e3808237d..cff1206f2 100644 --- a/src/zabapgit_object_sfsw.prog.abap +++ b/src/zabapgit_object_sfsw.prog.abap @@ -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. diff --git a/src/zabapgit_object_shi3.prog.abap b/src/zabapgit_object_shi3.prog.abap index 4201d8f6d..e1b2bce82 100644 --- a/src/zabapgit_object_shi3.prog.abap +++ b/src/zabapgit_object_shi3.prog.abap @@ -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. diff --git a/src/zabapgit_object_shlp.prog.abap b/src/zabapgit_object_shlp.prog.abap index b2e9287b4..8ae9d7e04 100644 --- a/src/zabapgit_object_shlp.prog.abap +++ b/src/zabapgit_object_shlp.prog.abap @@ -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 diff --git a/src/zabapgit_object_sicf.prog.abap b/src/zabapgit_object_sicf.prog.abap index f52120d69..343a4e4f4 100644 --- a/src/zabapgit_object_sicf.prog.abap +++ b/src/zabapgit_object_sicf.prog.abap @@ -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. diff --git a/src/zabapgit_object_smim.prog.abap b/src/zabapgit_object_smim.prog.abap index 4155ca697..4995e81c8 100644 --- a/src/zabapgit_object_smim.prog.abap +++ b/src/zabapgit_object_smim.prog.abap @@ -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. diff --git a/src/zabapgit_object_splo.prog.abap b/src/zabapgit_object_splo.prog.abap index a16c253c9..784192728 100644 --- a/src/zabapgit_object_splo.prog.abap +++ b/src/zabapgit_object_splo.prog.abap @@ -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 diff --git a/src/zabapgit_object_ssfo.prog.abap b/src/zabapgit_object_ssfo.prog.abap index f56418b96..fc0c3b8cd 100644 --- a/src/zabapgit_object_ssfo.prog.abap +++ b/src/zabapgit_object_ssfo.prog.abap @@ -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 diff --git a/src/zabapgit_object_ssst.prog.abap b/src/zabapgit_object_ssst.prog.abap index 47d16a37b..97a64a3c9 100644 --- a/src/zabapgit_object_ssst.prog.abap +++ b/src/zabapgit_object_ssst.prog.abap @@ -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 diff --git a/src/zabapgit_object_susc.prog.abap b/src/zabapgit_object_susc.prog.abap index 863dc6cfb..165a100f0 100644 --- a/src/zabapgit_object_susc.prog.abap +++ b/src/zabapgit_object_susc.prog.abap @@ -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. diff --git a/src/zabapgit_object_suso.prog.abap b/src/zabapgit_object_suso.prog.abap index 06f9e0d12..208c75eb8 100644 --- a/src/zabapgit_object_suso.prog.abap +++ b/src/zabapgit_object_suso.prog.abap @@ -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. diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index 8f130178a..c90dcc67e 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -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 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 . + object_check_timestamp -as4date -as4time. + ENDLOOP. + + ENDMETHOD. "lif_object~has_changed_since + METHOD lif_object~changed_by. SELECT SINGLE as4user FROM dd02l INTO rv_user diff --git a/src/zabapgit_object_tobj.prog.abap b/src/zabapgit_object_tobj.prog.abap index 2dd8e159c..39198e726 100644 --- a/src/zabapgit_object_tobj.prog.abap +++ b/src/zabapgit_object_tobj.prog.abap @@ -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. diff --git a/src/zabapgit_object_tran.prog.abap b/src/zabapgit_object_tran.prog.abap index eba7dc246..a483192f2 100644 --- a/src/zabapgit_object_tran.prog.abap +++ b/src/zabapgit_object_tran.prog.abap @@ -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. diff --git a/src/zabapgit_object_ttyp.prog.abap b/src/zabapgit_object_ttyp.prog.abap index 1c7ca97ab..f4dbf3057 100644 --- a/src/zabapgit_object_ttyp.prog.abap +++ b/src/zabapgit_object_ttyp.prog.abap @@ -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 diff --git a/src/zabapgit_object_type.prog.abap b/src/zabapgit_object_type.prog.abap index b03973692..5a47d8ed9 100644 --- a/src/zabapgit_object_type.prog.abap +++ b/src/zabapgit_object_type.prog.abap @@ -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. diff --git a/src/zabapgit_object_vcls.prog.abap b/src/zabapgit_object_vcls.prog.abap index 49fce52fc..e6ad172aa 100644 --- a/src/zabapgit_object_vcls.prog.abap +++ b/src/zabapgit_object_vcls.prog.abap @@ -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. diff --git a/src/zabapgit_object_view.prog.abap b/src/zabapgit_object_view.prog.abap index 987bf43f2..8655d6518 100644 --- a/src/zabapgit_object_view.prog.abap +++ b/src/zabapgit_object_view.prog.abap @@ -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 diff --git a/src/zabapgit_object_w3xx.prog.abap b/src/zabapgit_object_w3xx.prog.abap index 6c4b83b37..c69b5355c 100644 --- a/src/zabapgit_object_w3xx.prog.abap +++ b/src/zabapgit_object_w3xx.prog.abap @@ -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. diff --git a/src/zabapgit_object_wdya.prog.abap b/src/zabapgit_object_wdya.prog.abap index 47953fccd..954f78795 100644 --- a/src/zabapgit_object_wdya.prog.abap +++ b/src/zabapgit_object_wdya.prog.abap @@ -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. diff --git a/src/zabapgit_object_wdyn.prog.abap b/src/zabapgit_object_wdyn.prog.abap index 53e05e70a..42f603e28 100644 --- a/src/zabapgit_object_wdyn.prog.abap +++ b/src/zabapgit_object_wdyn.prog.abap @@ -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. diff --git a/src/zabapgit_object_webi.prog.abap b/src/zabapgit_object_webi.prog.abap index 8c4026924..d74dc4d56 100644 --- a/src/zabapgit_object_webi.prog.abap +++ b/src/zabapgit_object_webi.prog.abap @@ -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 diff --git a/src/zabapgit_object_xslt.prog.abap b/src/zabapgit_object_xslt.prog.abap index 5afd418da..93ec498cd 100644 --- a/src/zabapgit_object_xslt.prog.abap +++ b/src/zabapgit_object_xslt.prog.abap @@ -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. diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index d4c687a2e..7fe59078a 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -2,6 +2,26 @@ *& Include ZABAPGIT_OBJECTS *&---------------------------------------------------------------------* +* 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. + *----------------------------------------------------------------------* * CLASS lcl_objects_activation DEFINITION *----------------------------------------------------------------------* @@ -230,7 +250,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 +459,7 @@ ENDCLASS. "lcl_objects_files IMPLEMENTATION CLASS lcl_objects_super DEFINITION ABSTRACT. PUBLIC SECTION. + METHODS: constructor IMPORTING @@ -497,6 +522,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 +735,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 +789,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 +1345,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: LIKE LINE OF lt_screens, + 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 . + object_check_timestamp -dgen -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 . + object_check_timestamp -vdatum -vzeit. + ENDLOOP. + + ENDMETHOD. "check_prog_changed_since + ENDCLASS. "lcl_objects_program IMPLEMENTATION *----------------------------------------------------------------------* @@ -1435,6 +1520,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. diff --git a/src/zabapgit_objects_impl.prog.abap b/src/zabapgit_objects_impl.prog.abap index 92e8809d3..0bc5a7209 100644 --- a/src/zabapgit_objects_impl.prog.abap +++ b/src/zabapgit_objects_impl.prog.abap @@ -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. diff --git a/src/zabapgit_repo.prog.abap b/src/zabapgit_repo.prog.abap index 43288f1da..6dee4476e 100644 --- a/src/zabapgit_repo.prog.abap +++ b/src/zabapgit_repo.prog.abap @@ -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 @@ -121,7 +125,8 @@ CLASS lcl_repo_online DEFINITION INHERITING FROM lcl_repo FINAL. mt_objects TYPE ty_objects_tt, mv_branch TYPE ty_sha1, mv_initialized TYPE abap_bool, - mo_branches TYPE REF TO lcl_git_branch_list. + mo_branches TYPE REF TO lcl_git_branch_list, + mt_status TYPE ty_results_tt. METHODS: handle_stage_ignore diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index 21e8c5e8b..98498831c 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -42,8 +42,11 @@ CLASS lcl_repo_online IMPLEMENTATION. initialize( ). - rt_results = lcl_file_status=>status( io_repo = me - io_log = io_log ). + IF lines( mt_status ) = 0. + mt_status = lcl_file_status=>status( io_repo = me + io_log = io_log ). + ENDIF. + rt_results = mt_status. ENDMETHOD. "status @@ -65,7 +68,8 @@ CLASS lcl_repo_online IMPLEMENTATION. METHOD refresh. - super->refresh( ). + super->refresh( iv_drop_cache ). + CLEAR mt_status. lcl_progress=>show( iv_key = 'Fetch' iv_current = 1 @@ -365,7 +369,7 @@ CLASS lcl_repo IMPLEMENTATION. lcl_objects=>deserialize( me ). - CLEAR mt_local. + CLEAR: mt_local, mv_last_serialization. set( it_checksums = build_local_checksums( ) ). @@ -381,12 +385,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: LIKE LINE OF lt_files, LIKE LINE OF rt_files, + LIKE LINE OF lt_cache, 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. @@ -401,16 +410,32 @@ CLASS lcl_repo IMPLEMENTATION. -file-sha1 = lcl_hash=>sha1( iv_type = gc_type-blob iv_data = -file-data ). + lt_cache = mt_local. lt_tadir = lcl_tadir=>read( get_package( ) ). LOOP AT lt_tadir ASSIGNING . + + ls_item-obj_type = -object. + ls_item-obj_name = -obj_name. + + 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 + 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. + APPEND TO rt_files. + ENDLOOP. + + CONTINUE. + ENDIF. + ENDIF. + lcl_progress=>show( iv_key = 'Serialize' iv_current = sy-tabix iv_total = lines( lt_tadir ) iv_text = -obj_name ) ##NO_TEXT. - ls_item-obj_type = -object. - ls_item-obj_name = -obj_name. - lt_files = lcl_objects=>serialize( is_item = ls_item iv_language = get_master_language( ) @@ -425,7 +450,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. @@ -449,9 +476,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 From 0aee7f737663fd6d0280e337d65b1aa1f546b93f Mon Sep 17 00:00:00 2001 From: sbcgua Date: Thu, 6 Oct 2016 13:11:05 +0200 Subject: [PATCH 06/30] fixes #370 --- src/zabapgit.prog.abap | 1 + src/zabapgit_macros.prog.abap | 23 ++++++++++++++ src/zabapgit_macros.prog.xml | 48 ++++++++++++++++++++++++++++++ src/zabapgit_object_doma.prog.abap | 2 +- src/zabapgit_object_dtel.prog.abap | 2 +- src/zabapgit_object_enqu.prog.abap | 2 +- src/zabapgit_object_shlp.prog.abap | 2 +- src/zabapgit_object_tabl.prog.abap | 6 ++-- src/zabapgit_object_ttyp.prog.abap | 2 +- src/zabapgit_object_view.prog.abap | 4 +-- src/zabapgit_objects.prog.abap | 28 +++-------------- 11 files changed, 86 insertions(+), 34 deletions(-) create mode 100644 src/zabapgit_macros.prog.abap create mode 100644 src/zabapgit_macros.prog.xml diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index d79ca5acd..0a2fe8c78 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -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. diff --git a/src/zabapgit_macros.prog.abap b/src/zabapgit_macros.prog.abap new file mode 100644 index 000000000..5bf603e19 --- /dev/null +++ b/src/zabapgit_macros.prog.abap @@ -0,0 +1,23 @@ +*&---------------------------------------------------------------------* +*& 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. \ No newline at end of file diff --git a/src/zabapgit_macros.prog.xml b/src/zabapgit_macros.prog.xml new file mode 100644 index 000000000..0e9ebfa35 --- /dev/null +++ b/src/zabapgit_macros.prog.xml @@ -0,0 +1,48 @@ + + + + + + ZABAPGIT_MACROS + A + + + X + + + + + + I + + + + 0000-00-00 + + 0000-00-00 + + + + + E + + + 0000-00-00 + + 0000-00-00 + + + X + + + + R + + Include ZABAPGIT_MACROS + 23 + + + + + + diff --git a/src/zabapgit_object_doma.prog.abap b/src/zabapgit_object_doma.prog.abap index 470930905..747d1beeb 100644 --- a/src/zabapgit_object_doma.prog.abap +++ b/src/zabapgit_object_doma.prog.abap @@ -34,7 +34,7 @@ CLASS lcl_object_doma IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - object_check_timestamp lv_date lv_time. + _object_check_timestamp lv_date 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 3ff6e942b..59fea7d48 100644 --- a/src/zabapgit_object_dtel.prog.abap +++ b/src/zabapgit_object_dtel.prog.abap @@ -34,7 +34,7 @@ CLASS lcl_object_dtel IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - object_check_timestamp lv_date lv_time. + _object_check_timestamp lv_date 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 26a7512ce..802845b5f 100644 --- a/src/zabapgit_object_enqu.prog.abap +++ b/src/zabapgit_object_enqu.prog.abap @@ -34,7 +34,7 @@ CLASS lcl_object_enqu IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - object_check_timestamp lv_date lv_time. + _object_check_timestamp lv_date 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 8ae9d7e04..3904de298 100644 --- a/src/zabapgit_object_shlp.prog.abap +++ b/src/zabapgit_object_shlp.prog.abap @@ -33,7 +33,7 @@ CLASS lcl_object_shlp IMPLEMENTATION. WHERE shlpname = ms_item-obj_name AND as4local = 'A'. - object_check_timestamp lv_date lv_time. + _object_check_timestamp lv_date 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 c90dcc67e..6f06a2a55 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -37,7 +37,7 @@ CLASS lcl_object_tabl IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - object_check_timestamp lv_date lv_time. + _object_check_timestamp lv_date lv_time. SELECT SINGLE as4date as4time FROM dd09l " Table tech settings INTO (lv_date, lv_time) @@ -45,7 +45,7 @@ CLASS lcl_object_tabl IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - object_check_timestamp lv_date lv_time. + _object_check_timestamp lv_date lv_time. SELECT as4date as4time FROM dd12l " Table tech settings INTO CORRESPONDING FIELDS OF TABLE lt_indexes @@ -54,7 +54,7 @@ CLASS lcl_object_tabl IMPLEMENTATION. AND as4vers = '0000' ##TOO_MANY_ITAB_FIELDS. LOOP AT lt_indexes ASSIGNING . - object_check_timestamp -as4date -as4time. + _object_check_timestamp -as4date -as4time. ENDLOOP. ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_ttyp.prog.abap b/src/zabapgit_object_ttyp.prog.abap index f4dbf3057..a5372dffa 100644 --- a/src/zabapgit_object_ttyp.prog.abap +++ b/src/zabapgit_object_ttyp.prog.abap @@ -33,7 +33,7 @@ CLASS lcl_object_ttyp IMPLEMENTATION. WHERE typename = ms_item-obj_name AND as4local = 'A'. - object_check_timestamp lv_date lv_time. + _object_check_timestamp lv_date 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 8655d6518..b8b773741 100644 --- a/src/zabapgit_object_view.prog.abap +++ b/src/zabapgit_object_view.prog.abap @@ -34,7 +34,7 @@ CLASS lcl_object_view IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - object_check_timestamp lv_date lv_time. + _object_check_timestamp lv_date lv_time. SELECT SINGLE as4date as4time FROM dd09l " Table tech settings INTO (lv_date, lv_time) @@ -42,7 +42,7 @@ CLASS lcl_object_view IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - object_check_timestamp lv_date lv_time. + _object_check_timestamp lv_date lv_time. ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index 7fe59078a..a3e110ea4 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -2,26 +2,6 @@ *& Include ZABAPGIT_OBJECTS *&---------------------------------------------------------------------* -* 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. - *----------------------------------------------------------------------* * CLASS lcl_objects_activation DEFINITION *----------------------------------------------------------------------* @@ -1361,14 +1341,14 @@ CLASS lcl_objects_program IMPLEMENTATION. WHERE progname = iv_program AND r3state = 'A'. - object_check_timestamp lv_date lv_time. + _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. + _object_check_timestamp lv_date lv_time. IF iv_skip_gui = abap_true. RETURN. @@ -1379,7 +1359,7 @@ CLASS lcl_objects_program IMPLEMENTATION. WHERE prog = iv_program ##TOO_MANY_ITAB_FIELDS. LOOP AT lt_screens ASSIGNING . - object_check_timestamp -dgen -tgen. + _object_check_timestamp -dgen -tgen. ENDLOOP. SELECT vdatum vzeit FROM eudb " GUI @@ -1389,7 +1369,7 @@ CLASS lcl_objects_program IMPLEMENTATION. AND srtf2 = 0 ##TOO_MANY_ITAB_FIELDS. LOOP AT lt_eudb ASSIGNING . - object_check_timestamp -vdatum -vzeit. + _object_check_timestamp -vdatum -vzeit. ENDLOOP. ENDMETHOD. "check_prog_changed_since From 5f713608f4f15d7b601c0b6d4dd0572aff521b6b Mon Sep 17 00:00:00 2001 From: larshp Date: Thu, 6 Oct 2016 10:25:40 +0000 Subject: [PATCH 07/30] bump version to v1.18.0 --- src/zabapgit.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 0a2fe8c78..4db1229b6 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -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.0'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) From afd1f5369b606fc536f6381f0643e094f14bf018 Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 8 Oct 2016 08:22:26 +0000 Subject: [PATCH 08/30] TABL: clear DEFFDNAME --- src/zabapgit.prog.abap | 2 +- src/zabapgit_object_tabl.prog.abap | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 4db1229b6..2a27050f8 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -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.18.0'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.18.1'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index 6f06a2a55..9ae20dbc9 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -200,6 +200,7 @@ CLASS lcl_object_tabl IMPLEMENTATION. -datatype, -leng, -outputlen, + -deffdname, -entitytab, -dommaster, -domname3l. From e1e06b3b70a407bdcfcd75ee5dc5be278ac36292 Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 8 Oct 2016 08:41:06 +0000 Subject: [PATCH 09/30] DTEL TABL: clear additional fields --- src/zabapgit_object_dtel.prog.abap | 12 ++++++++++++ src/zabapgit_object_tabl.prog.abap | 1 + 2 files changed, 13 insertions(+) diff --git a/src/zabapgit_object_dtel.prog.abap b/src/zabapgit_object_dtel.prog.abap index 59fea7d48..37bd08de5 100644 --- a/src/zabapgit_object_dtel.prog.abap +++ b/src/zabapgit_object_dtel.prog.abap @@ -127,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' diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index 9ae20dbc9..fa6928d44 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -201,6 +201,7 @@ CLASS lcl_object_tabl IMPLEMENTATION. -leng, -outputlen, -deffdname, + -convexit, -entitytab, -dommaster, -domname3l. From e136414c51ce9a25105b1af06d361f6caeda130b Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 8 Oct 2016 10:43:26 +0000 Subject: [PATCH 10/30] TTYP: clear TYPELEN --- src/zabapgit_object_ttyp.prog.abap | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/zabapgit_object_ttyp.prog.abap b/src/zabapgit_object_ttyp.prog.abap index a5372dffa..ec2421f99 100644 --- a/src/zabapgit_object_ttyp.prog.abap +++ b/src/zabapgit_object_ttyp.prog.abap @@ -24,9 +24,9 @@ CLASS lcl_object_ttyp IMPLEMENTATION. METHOD lif_object~has_changed_since. - DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + DATA: lv_date TYPE dats, + lv_time TYPE tims, + lv_ts TYPE timestamp. SELECT SINGLE as4date as4time FROM dd40l INTO (lv_date, lv_time) @@ -128,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' From 9c053763b7f73f59609028f9294b808c4792d27f Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 8 Oct 2016 14:59:34 +0000 Subject: [PATCH 11/30] NROB: delete intervals, close #378 --- src/zabapgit_object_nrob.prog.abap | 74 ++++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) diff --git a/src/zabapgit_object_nrob.prog.abap b/src/zabapgit_object_nrob.prog.abap index d40c52598..8e98d6ba9 100644 --- a/src/zabapgit_object_nrob.prog.abap +++ b/src/zabapgit_object_nrob.prog.abap @@ -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 *----------------------------------------------------------------------* @@ -165,6 +170,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: 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 . + CLEAR -nrlevel. + -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. @@ -172,6 +244,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 From c2541e5ae128787defc1876d4913f202beb99ecf Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 8 Oct 2016 15:48:27 +0000 Subject: [PATCH 12/30] NROB: late deserialization late deserialization for number range objects, domains/data elements must exist before the number range can be created --- src/zabapgit_object_nrob.prog.abap | 1 + 1 file changed, 1 insertion(+) diff --git a/src/zabapgit_object_nrob.prog.abap b/src/zabapgit_object_nrob.prog.abap index 8e98d6ba9..b1aa46c79 100644 --- a/src/zabapgit_object_nrob.prog.abap +++ b/src/zabapgit_object_nrob.prog.abap @@ -68,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. From 864449ae1fee543ed22b55d989db85831542666e Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 8 Oct 2016 15:50:29 +0000 Subject: [PATCH 13/30] TABL: only include DEPTH =00, close #377 --- src/zabapgit_object_smim.prog.abap | 2 +- src/zabapgit_object_tabl.prog.abap | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/zabapgit_object_smim.prog.abap b/src/zabapgit_object_smim.prog.abap index 4995e81c8..ce83ec3be 100644 --- a/src/zabapgit_object_smim.prog.abap +++ b/src/zabapgit_object_smim.prog.abap @@ -192,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 ). diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index fa6928d44..58481fb61 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -176,6 +176,8 @@ CLASS lcl_object_tabl IMPLEMENTATION. -as4time. ENDLOOP. + DELETE lt_dd03p WHERE depth <> '00'. + LOOP AT lt_dd03p ASSIGNING WHERE NOT rollname IS INITIAL. CLEAR: -ddlanguage, -dtelmaster, From df549d1c47a8f4fa2df0b3e2637cd578307ba6a5 Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 8 Oct 2016 16:30:53 +0000 Subject: [PATCH 14/30] SHLP: clear info inherited from domain --- src/zabapgit_object_shlp.prog.abap | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/zabapgit_object_shlp.prog.abap b/src/zabapgit_object_shlp.prog.abap index 3904de298..ba905258f 100644 --- a/src/zabapgit_object_shlp.prog.abap +++ b/src/zabapgit_object_shlp.prog.abap @@ -24,9 +24,9 @@ CLASS lcl_object_shlp IMPLEMENTATION. METHOD lif_object~has_changed_since. - DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + DATA: lv_date TYPE dats, + lv_time TYPE tims, + lv_ts TYPE timestamp. SELECT SINGLE as4date as4time FROM dd30l INTO (lv_date, lv_time) @@ -102,6 +102,8 @@ CLASS lcl_object_shlp IMPLEMENTATION. lt_dd32p TYPE TABLE OF dd32p, lt_dd33v TYPE TABLE OF dd33v. + FIELD-SYMBOLS: LIKE LINE OF lt_dd32p. + lv_name = ms_item-obj_name. @@ -130,6 +132,21 @@ CLASS lcl_object_shlp IMPLEMENTATION. ls_dd30v-as4date, ls_dd30v-as4time. + LOOP AT lt_dd32p ASSIGNING . +* clear information inherited from domain + CLEAR: -domname, + -headlen, + -scrlen1, + -scrlen2, + -datatype, + -leng, + -outputlen, + -decimals, + -lowercase, + -signflag, + -convexit. + ENDLOOP. + io_xml->add( iv_name = 'DD30V' ig_data = ls_dd30v ). io_xml->add( ig_data = lt_dd31v From 9e7c852cb8fbf2e663fc6cf3004e39742f57c7a0 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sat, 8 Oct 2016 23:00:20 +0200 Subject: [PATCH 15/30] preserving stage state after diff #373 --- src/zabapgit_gui.prog.abap | 2 +- src/zabapgit_page_stage.prog.abap | 52 ++++++++++++++++++++++++++----- 2 files changed, 45 insertions(+), 9 deletions(-) diff --git a/src/zabapgit_gui.prog.abap b/src/zabapgit_gui.prog.abap index 57aa70416..a72584967 100644 --- a/src/zabapgit_gui.prog.abap +++ b/src/zabapgit_gui.prog.abap @@ -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. diff --git a/src/zabapgit_page_stage.prog.abap b/src/zabapgit_page_stage.prog.abap index eb15c17bb..c0b13a82e 100644 --- a/src/zabapgit_page_stage.prog.abap +++ b/src/zabapgit_page_stage.prog.abap @@ -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( '
' ). - 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' @@ -280,6 +283,7 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. CREATE OBJECT ro_html. " Globals & initialization + ro_html->add( |var gPageID = "stage{ mv_ts }";| ). _add 'var gChoiceCount = 0;'. _add 'setHook();'. @@ -291,6 +295,30 @@ CLASS lcl_gui_page_stage IMPLEMENTATION. _add ' } else {'. _add ' stageTab.attachEvent("onclick", onEvent);'. " = 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 @@ -306,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 = "reset"; '. @@ -338,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 From b178d18dc9e1aa407a001a0ac6b8ea4bc13f23d1 Mon Sep 17 00:00:00 2001 From: larshp Date: Sun, 9 Oct 2016 08:02:22 +0000 Subject: [PATCH 16/30] run pretty printer --- src/zabapgit_gui.prog.abap | 6 +++--- src/zabapgit_page_main.prog.abap | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/zabapgit_gui.prog.abap b/src/zabapgit_gui.prog.abap index 57aa70416..1bfa828e0 100644 --- a/src/zabapgit_gui.prog.abap +++ b/src/zabapgit_gui.prog.abap @@ -14,7 +14,7 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. METHODS back IMPORTING iv_to_bookmark TYPE abap_bool DEFAULT abap_false - RETURNING value(rv_exit) TYPE xfeld + RETURNING VALUE(rv_exit) TYPE xfeld RAISING lcx_exception. METHODS on_event FOR EVENT sapevent OF cl_gui_html_viewer @@ -45,13 +45,13 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app. METHODS cache_html IMPORTING iv_html TYPE string - RETURNING value(rv_url) TYPE w3url. + RETURNING VALUE(rv_url) TYPE w3url. METHODS render RAISING lcx_exception. METHODS get_current_page_name - RETURNING value(rv_page_name) TYPE string. + RETURNING VALUE(rv_page_name) TYPE string. METHODS call_page IMPORTING ii_page TYPE REF TO lif_gui_page diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 0e8c9ac86..86c0988a4 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -90,8 +90,8 @@ CLASS lcl_gui_page_main IMPLEMENTATION. METHOD lif_gui_page~on_event. - DATA: lv_key TYPE lcl_persistence_repo=>ty_repo-key, - lv_url TYPE string. + DATA: lv_key TYPE lcl_persistence_repo=>ty_repo-key, + lv_url TYPE string. lv_key = iv_getdata. @@ -112,9 +112,9 @@ CLASS lcl_gui_page_main IMPLEMENTATION. METHOD lif_gui_page~render. - DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt, - lx_error TYPE REF TO lcx_exception, - lo_repo LIKE LINE OF lt_repos. + DATA: lt_repos TYPE lcl_repo_srv=>ty_repo_tt, + lx_error TYPE REF TO lcx_exception, + lo_repo LIKE LINE OF lt_repos. retrieve_active_repo( ). " Get and validate key of user default repo mv_hide_files = lcl_app=>user( )->get_hide_files( ). @@ -161,7 +161,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. TRY. " verify the key exists lo_repo = lcl_app=>repo_srv( )->get( mv_show ). CATCH lcx_exception. - clear mv_show. + CLEAR mv_show. ENDTRY. ENDIF. @@ -354,7 +354,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. " so that lo_log is filled with errors from the serialization ro_html->add( render_repo_menu( io_repo ) ). - IF io_repo->is_offline( ) = abap_false and lo_log->count( ) > 0. + IF io_repo->is_offline( ) = abap_false AND lo_log->count( ) > 0. ro_html->add( '
' ). ro_html->add( lo_log->to_html( ) ). " shows eg. list of unsupported objects ro_html->add( '
' ). From cbcee908bca730cc050fde19baad898a4145db0d Mon Sep 17 00:00:00 2001 From: larshp Date: Sun, 9 Oct 2016 08:06:05 +0000 Subject: [PATCH 17/30] refresh when switching repo, close #376 --- src/zabapgit_page_main.prog.abap | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 86c0988a4..bcd792e03 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -98,6 +98,10 @@ CLASS lcl_gui_page_main IMPLEMENTATION. CASE iv_action. WHEN c_actions-show. " Change displayed repo lcl_app=>user( )->set_repo_show( lv_key ). + TRY. + lcl_app=>repo_srv( )->get( lv_key )->refresh( ). + CATCH lcx_exception. + ENDTRY. ev_state = gc_event_state-re_render. WHEN c_actions-toggle_hide_files. " Toggle file diplay lcl_app=>user( )->toggle_hide_files( ). From cd3e3ae12eb63159df58cdc30839bb915158bfa4 Mon Sep 17 00:00:00 2001 From: larshp Date: Sun, 9 Oct 2016 08:12:43 +0000 Subject: [PATCH 18/30] bump version to v1.18.2 --- src/zabapgit.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 2a27050f8..8f47e029b 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -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.18.1'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.18.2'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) From 1c0de415f199d9cd2ba86fd20a23f19680f52140 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 9 Oct 2016 11:04:27 +0200 Subject: [PATCH 19/30] reset status on deserialize, close #375 --- src/zabapgit_repo_impl.prog.abap | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index 98498831c..a953cc094 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -62,6 +62,8 @@ CLASS lcl_repo_online IMPLEMENTATION. set( iv_sha1 = mv_branch ). + CLEAR mt_status. " Reset status + COMMIT WORK AND WAIT. ENDMETHOD. "deserialize From 17cf0a7b29df680918591f2126000543ca23cd96 Mon Sep 17 00:00:00 2001 From: larshp Date: Sun, 9 Oct 2016 08:42:07 +0000 Subject: [PATCH 20/30] TABL: remove fields from .INCLUDEs --- src/zabapgit_object_tabl.prog.abap | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index 58481fb61..8e0e842a7 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -129,9 +129,11 @@ 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: LIKE LINE OF lt_dd12v, + LIKE LINE OF lt_dd05m, LIKE LINE OF lt_dd03p. @@ -176,7 +178,10 @@ CLASS lcl_object_tabl IMPLEMENTATION. -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 WHERE NOT rollname IS INITIAL. CLEAR: -ddlanguage, @@ -221,6 +226,16 @@ CLASS lcl_object_tabl IMPLEMENTATION. ENDIF. ENDLOOP. +* remove foreign keys inherited from .INCLUDEs + DELETE lt_dd08v WHERE noinherit = 'N'. + LOOP AT lt_dd05m ASSIGNING . + lv_index = sy-tabix. + READ TABLE lt_dd08v WITH KEY fieldname = -fieldname TRANSPORTING NO FIELDS. + IF sy-subrc <> 0. + DELETE lt_dd05m INDEX lv_index. + ENDIF. + ENDLOOP. + io_xml->add( iv_name = 'DD02V' ig_data = ls_dd02v ). io_xml->add( iv_name = 'DD09L' From 39d4e79702bdd0d68ac5465bc2cd2867ec6c2212 Mon Sep 17 00:00:00 2001 From: larshp Date: Sun, 9 Oct 2016 09:24:16 +0000 Subject: [PATCH 21/30] TABL: remove inherited search helps --- src/zabapgit_object_tabl.prog.abap | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index 8e0e842a7..6b1e4ce03 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -134,6 +134,7 @@ CLASS lcl_object_tabl IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF lt_dd12v, LIKE LINE OF lt_dd05m, + LIKE LINE OF lt_dd36m, LIKE LINE OF lt_dd03p. @@ -236,6 +237,16 @@ CLASS lcl_object_tabl IMPLEMENTATION. ENDIF. ENDLOOP. +* remove inherited search helps + DELETE lt_dd35v WHERE shlpinher = abap_true. + LOOP AT lt_dd36m ASSIGNING . + lv_index = sy-tabix. + READ TABLE lt_dd35v WITH KEY fieldname = -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' From ab982cd885ada9161022571924095b79beb971d1 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 9 Oct 2016 13:04:42 +0200 Subject: [PATCH 22/30] 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. From f4f7c1bb499ef0f716327e75a3a9548d26a1da09 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 9 Oct 2016 13:17:29 +0200 Subject: [PATCH 23/30] style fix, log color - red #372 --- src/zabapgit_page_main.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 0e8c9ac86..74f62b959 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -355,7 +355,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ro_html->add( render_repo_menu( io_repo ) ). IF io_repo->is_offline( ) = abap_false and lo_log->count( ) > 0. - ro_html->add( '
' ). + ro_html->add( '
' ). ro_html->add( lo_log->to_html( ) ). " shows eg. list of unsupported objects ro_html->add( '
' ). ENDIF. From 5d8cbd41400ac073cecb0e44d35ff90fcac4072b Mon Sep 17 00:00:00 2001 From: sbcgua Date: Sun, 9 Oct 2016 13:44:34 +0200 Subject: [PATCH 24/30] rollback style fix #372 --- src/zabapgit_page_main.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 74f62b959..0e8c9ac86 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -355,7 +355,7 @@ CLASS lcl_gui_page_main IMPLEMENTATION. ro_html->add( render_repo_menu( io_repo ) ). IF io_repo->is_offline( ) = abap_false and lo_log->count( ) > 0. - ro_html->add( '
' ). + ro_html->add( '
' ). ro_html->add( lo_log->to_html( ) ). " shows eg. list of unsupported objects ro_html->add( '
' ). ENDIF. From f678ee2505126ce3161c4e12e02a0066179a18ff Mon Sep 17 00:00:00 2001 From: larshp Date: Sun, 9 Oct 2016 10:47:28 +0000 Subject: [PATCH 25/30] simplify lcl_progress, close #380 --- src/zabapgit_util.prog.abap | 66 ++++--------------------------------- 1 file changed, 7 insertions(+), 59 deletions(-) diff --git a/src/zabapgit_util.prog.abap b/src/zabapgit_util.prog.abap index 78b1cddb0..7b0ceccd2 100644 --- a/src/zabapgit_util.prog.abap +++ b/src/zabapgit_util.prog.abap @@ -887,21 +887,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. @@ -912,66 +902,24 @@ CLASS lcl_progress IMPLEMENTATION. DATA: lv_pct TYPE i, lv_text TYPE string. - FIELD-SYMBOLS: 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 . - IF sy-subrc <> 0 OR -key <> iv_key. - APPEND INITIAL LINE TO gt_stack ASSIGNING . - ENDIF. - -key = iv_key. - -current = iv_current. - -total = iv_total. - -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: LIKE LINE OF gt_stack. - - - LOOP AT gt_stack ASSIGNING . - IF sy-tabix = 1. - rv_text = |{ -key } { -text }|. - ELSE. - rv_text = |{ rv_text } - { -key } { -text }|. - - IF -current <> 1 AND -total <> 1. - rv_text = |{ rv_text } ({ -current }/{ -total })|. - ENDIF. - ENDIF. - ENDLOOP. - ENDMETHOD. METHOD calc_pct. DATA: lv_f TYPE f. - FIELD-SYMBOLS: LIKE LINE OF gt_stack. - - READ TABLE gt_stack ASSIGNING INDEX 1. - ASSERT sy-subrc = 0. - - lv_f = ( -current / -total ) * 100. + lv_f = ( iv_current / iv_total ) * 100. rv_pct = lv_f. IF rv_pct = 100. From dce6cfb023ddcf877887e6e6b449f30199980924 Mon Sep 17 00:00:00 2001 From: larshp Date: Mon, 10 Oct 2016 17:48:45 +0000 Subject: [PATCH 26/30] downport, #383 --- src/zabapgit.prog.abap | 2 +- src/zabapgit_object_clas.prog.abap | 42 +++++++++++++++++++----------- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index 8f47e029b..b9721a9ba 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -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.18.2'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.18.3'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) diff --git a/src/zabapgit_object_clas.prog.abap b/src/zabapgit_object_clas.prog.abap index f34e54856..1561da156 100644 --- a/src/zabapgit_object_clas.prog.abap +++ b/src/zabapgit_object_clas.prog.abap @@ -123,8 +123,9 @@ CLASS lcl_object_clas IMPLEMENTATION. METHOD lif_object~has_changed_since. - DATA: lv_clsname TYPE seoclsname, - lt_incl TYPE seoincl_t. + DATA: lv_clsname TYPE seoclsname, + lv_program TYPE program, + lt_incl TYPE seoincl_t. FIELD-SYMBOLS LIKE LINE OF lt_incl. @@ -132,24 +133,35 @@ CLASS lcl_object_clas IMPLEMENTATION. CASE ms_item-obj_type. WHEN 'CLAS'. - lt_incl = cl_oo_classname_service=>get_all_class_includes( lv_clsname ). + 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 . + rv_changed = check_prog_changed_since( + iv_program = + iv_timestamp = iv_timestamp + iv_skip_gui = abap_true ). + IF rv_changed = abap_true. + RETURN. + ENDIF. + ENDLOOP. WHEN 'INTF'. - APPEND INITIAL LINE TO lt_incl ASSIGNING . - = cl_oo_classname_service=>get_interfacepool_name( lv_clsname ). + 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. - LOOP AT lt_incl ASSIGNING . - rv_changed = check_prog_changed_since( - iv_program = - iv_timestamp = iv_timestamp - iv_skip_gui = abap_true ). - IF rv_changed = abap_true. - RETURN. - ENDIF. - ENDLOOP. - ENDMETHOD. "lif_object~has_changed_since METHOD lif_object~get_metadata. From 6986bc18a1f816af0a58844ddaed566db5123683 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Wed, 12 Oct 2016 09:59:50 +0200 Subject: [PATCH 27/30] lock icon #386 --- src/zabapgit_page.prog.abap | 4 ++++ src/zabapgit_page_main.prog.abap | 9 +++++++++ 2 files changed, 13 insertions(+) diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index b694933b0..c181240e3 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -98,6 +98,10 @@ CLASS lcl_gui_page_super IMPLEMENTATION. ro_html->add( '' ). + IF io_repo->is_write_protected( ) = abap_true. + ro_html->add( '' ). + ENDIF. + IF io_repo->is_offline( ) = abap_false. lo_repo_online ?= io_repo. IF iv_show_branch = abap_true. diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index bcd792e03..9bf847163 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -845,6 +845,15 @@ CLASS lcl_gui_page_main IMPLEMENTATION. && '1gQQfzKDhgCSPFw9Kg2yZ9WqAgBWJBENLk6V3AAAAABJRU5ErkJggg=='. APPEND ls_image TO rt_assets. + ls_image-url = 'img/lock' ##NO_TEXT. + ls_image-content = + 'iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAOVBMVEUAAACIiIiIiIiI' + && 'iIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIjNaTNB' + && 'AAAAEnRSTlMABgdBVXt8iYuRsNXZ3uDi6Pmu6tfUAAAASUlEQVQYV63KSxJAQBAE0TQ0' + && 'Znym1f0PayE0QdjJ5asCgGTu1hClqjppvaRXB60swBeA2QNUAIq+ICvKx367nqAn/P8Y' + && 't2jg3Q5rgASaF3KNRwAAAABJRU5ErkJggg=='. + APPEND ls_image TO rt_assets. + ENDMETHOD. "get_assets ENDCLASS. \ No newline at end of file From 8ffd371869fc0102c196df0fbca663932de4ca28 Mon Sep 17 00:00:00 2001 From: sbcgua Date: Wed, 12 Oct 2016 15:09:07 +0200 Subject: [PATCH 28/30] bacground icon and toc marker #388 --- src/zabapgit_page.prog.abap | 14 ++++++++++++++ src/zabapgit_page_main.prog.abap | 31 +++++++++++------------------- src/zabapgit_persistence.prog.abap | 28 ++++++++++++++++++++++++++- 3 files changed, 52 insertions(+), 21 deletions(-) diff --git a/src/zabapgit_page.prog.abap b/src/zabapgit_page.prog.abap index c181240e3..7e4cdc19e 100644 --- a/src/zabapgit_page.prog.abap +++ b/src/zabapgit_page.prog.abap @@ -73,10 +73,12 @@ CLASS lcl_gui_page_super IMPLEMENTATION. METHOD render_repo_top. DATA: lo_repo_online TYPE REF TO lcl_repo_online, + lo_pback TYPE REF TO lcl_persistence_background, lv_icon TYPE string. CREATE OBJECT ro_html. + CREATE OBJECT lo_pback. IF io_repo->is_offline( ) = abap_true. lv_icon = 'img/repo_offline' ##NO_TEXT. @@ -98,6 +100,10 @@ CLASS lcl_gui_page_super IMPLEMENTATION. ro_html->add( '' ). + IF lo_pback->exists( io_repo->get_key( ) ) = abap_true. + ro_html->add( 'BG' ). + ENDIF. + IF io_repo->is_write_protected( ) = abap_true. ro_html->add( '' ). ENDIF. @@ -438,6 +444,14 @@ CLASS lcl_gui_page_super IMPLEMENTATION. _add ' margin-left: 0.2em;'. _add ' margin-right: 0.5em;'. _add '}'. + _add '.repo_attr span.bg_marker {'. + _add ' border: 1px solid #d2d2d2;'. + _add ' border-radius: 3px;'. + _add ' background: #d8d8d8;'. + _add ' color: #fff;'. + _add ' font-size: 8pt;'. + _add ' padding: 4px 2px 3px 2px;'. + _add '}'. " Branch tag design _add '.repo_attr span.branch {'. diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 9bf847163..075ee918f 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -220,20 +220,17 @@ CLASS lcl_gui_page_main IMPLEMENTATION. METHOD render_toc. DATA: lo_pback TYPE REF TO lcl_persistence_background, - lt_repo_bkg TYPE lcl_persistence_background=>tt_background, lo_repo LIKE LINE OF it_list, lv_opt TYPE c LENGTH 1, lo_online TYPE REF TO lcl_html_toolbar, - lo_background TYPE REF TO lcl_html_toolbar, - lo_offline TYPE REF TO lcl_html_toolbar. + lo_offline TYPE REF TO lcl_html_toolbar, + lv_repo_title TYPE string. CREATE OBJECT ro_html. CREATE OBJECT lo_online. CREATE OBJECT lo_offline. - CREATE OBJECT lo_background. CREATE OBJECT lo_pback. - lt_repo_bkg = lo_pback->list( ). IF lines( it_list ) = 0. RETURN. @@ -251,17 +248,16 @@ CLASS lcl_gui_page_main IMPLEMENTATION. iv_act = |{ c_actions-show }?{ lo_repo->get_key( ) }| iv_opt = lv_opt ). ELSE. - READ TABLE lt_repo_bkg WITH KEY key = lo_repo->get_key( ) - TRANSPORTING NO FIELDS. - IF sy-subrc = 0. - lo_background->add( iv_txt = lo_repo->get_name( ) - iv_act = |{ c_actions-show }?{ lo_repo->get_key( ) }| - iv_opt = lv_opt ). - ELSE. - lo_online->add( iv_txt = lo_repo->get_name( ) - iv_act = |{ c_actions-show }?{ lo_repo->get_key( ) }| - iv_opt = lv_opt ). + + lv_repo_title = lo_repo->get_name( ). + IF lo_pback->exists( lo_repo->get_key( ) ) = abap_true. + lv_repo_title = lv_repo_title && 'bg'. " Background marker ENDIF. + + lo_online->add( iv_txt = lv_repo_title + iv_act = |{ c_actions-show }?{ lo_repo->get_key( ) }| + iv_opt = lv_opt ). + ENDIF. ENDLOOP. @@ -278,11 +274,6 @@ CLASS lcl_gui_page_main IMPLEMENTATION. iv_image_url = 'img/repo_offline' ) ). ENDIF. - IF lo_background->count( ) > 0. - ro_html->add( render_toc_line( io_toolbar = lo_background - iv_image_url = 'img/sync' ) ). - ENDIF. - ro_html->add( '
' ). ENDMETHOD. "render_toc diff --git a/src/zabapgit_persistence.prog.abap b/src/zabapgit_persistence.prog.abap index fe8f5a88a..159618316 100644 --- a/src/zabapgit_persistence.prog.abap +++ b/src/zabapgit_persistence.prog.abap @@ -239,10 +239,16 @@ CLASS lcl_persistence_background DEFINITION FINAL. IMPORTING iv_key TYPE ty_background-key RAISING lcx_exception. + METHODS exists + IMPORTING iv_key TYPE ty_background-key + RETURNING VALUE(rv_yes) TYPE abap_bool + RAISING lcx_exception. + PRIVATE SECTION. CONSTANTS c_type TYPE lcl_persistence_db=>ty_type VALUE 'BACKGROUND'. - DATA: mo_db TYPE REF TO lcl_persistence_db. + DATA: mo_db TYPE REF TO lcl_persistence_db, + mt_jobs TYPE tt_background. METHODS from_xml IMPORTING iv_string TYPE string @@ -269,6 +275,11 @@ CLASS lcl_persistence_background IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF lt_list, LIKE LINE OF rt_list. + IF lines( mt_jobs ) > 0. + rt_list = mt_jobs. + RETURN. + ENDIF. + lt_list = mo_db->list_by_type( c_type ). @@ -280,8 +291,18 @@ CLASS lcl_persistence_background IMPLEMENTATION. -key = -value. ENDLOOP. + mt_jobs = rt_list. + ENDMETHOD. + METHOD exists. + + list( ). " Ensure mt_jobs is populated + READ TABLE mt_jobs WITH KEY key = iv_key TRANSPORTING NO FIELDS. + rv_yes = boolc( sy-subrc = 0 ). + + ENDMETHOD. "exists + METHOD modify. ASSERT NOT is_data-key IS INITIAL. @@ -291,6 +312,9 @@ CLASS lcl_persistence_background IMPLEMENTATION. iv_value = is_data-key iv_data = to_xml( is_data ) ). + DELETE mt_jobs WHERE key = is_data-key. + APPEND is_data TO mt_jobs. + ENDMETHOD. METHOD delete. @@ -305,6 +329,8 @@ CLASS lcl_persistence_background IMPLEMENTATION. mo_db->delete( iv_type = c_type iv_value = iv_key ). + DELETE mt_jobs WHERE key = iv_key. + ENDMETHOD. METHOD from_xml. From f176fa88668a33d9dce8dbec4da5ad85f1347741 Mon Sep 17 00:00:00 2001 From: larshp Date: Wed, 12 Oct 2016 14:30:54 +0200 Subject: [PATCH 29/30] bump version to v1.18.4 --- src/zabapgit.prog.abap | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zabapgit.prog.abap b/src/zabapgit.prog.abap index b9721a9ba..322c9d428 100644 --- a/src/zabapgit.prog.abap +++ b/src/zabapgit.prog.abap @@ -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.18.3'. "#EC NOTEXT + gc_abap_version TYPE string VALUE 'v1.18.4'. "#EC NOTEXT ******************************************************************************** * The MIT License (MIT) From 58e7e957e3183a774ff834bf1daa3187f4e47b02 Mon Sep 17 00:00:00 2001 From: larshp Date: Wed, 12 Oct 2016 14:58:34 +0200 Subject: [PATCH 30/30] object to zip --- src/zabapgit_definitions.prog.abap | 1 + src/zabapgit_gui_router.prog.abap | 3 ++ src/zabapgit_page_main.prog.abap | 1 + src/zabapgit_popups.prog.abap | 70 +++++++++++++++++++++++++----- src/zabapgit_zip.prog.abap | 31 +++++++++++++ 5 files changed, 95 insertions(+), 11 deletions(-) diff --git a/src/zabapgit_definitions.prog.abap b/src/zabapgit_definitions.prog.abap index 991ea4333..075f6415e 100644 --- a/src/zabapgit_definitions.prog.abap +++ b/src/zabapgit_definitions.prog.abap @@ -160,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', diff --git a/src/zabapgit_gui_router.prog.abap b/src/zabapgit_gui_router.prog.abap index f28481242..b540f923e 100644 --- a/src/zabapgit_gui_router.prog.abap +++ b/src/zabapgit_gui_router.prog.abap @@ -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 diff --git a/src/zabapgit_page_main.prog.abap b/src/zabapgit_page_main.prog.abap index 075ee918f..43855a673 100644 --- a/src/zabapgit_page_main.prog.abap +++ b/src/zabapgit_page_main.prog.abap @@ -204,6 +204,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. diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index e0f6d7535..bdb88aa44 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -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: 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 . + ASSERT sy-subrc = 0. + TRANSLATE -value TO UPPER CASE. + rs_tadir-object = -value. + + READ TABLE lt_fields INDEX 2 ASSIGNING . + ASSERT sy-subrc = 0. + TRANSLATE -value TO UPPER CASE. + rs_tadir-obj_name = -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, diff --git a/src/zabapgit_zip.prog.abap b/src/zabapgit_zip.prog.abap index d3754257e..942d95961 100644 --- a/src/zabapgit_zip.prog.abap +++ b/src/zabapgit_zip.prog.abap @@ -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 \ No newline at end of file