From 847278240bdf9a5c6dadd8b8d4c3bff91e153bb1 Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 10 Jun 2017 12:39:07 +0000 Subject: [PATCH 1/4] refactor _ADD_RULE macro #773 --- src/zabapgit_syntax_highlighter.prog.abap | 154 ++++++++++++---------- 1 file changed, 88 insertions(+), 66 deletions(-) diff --git a/src/zabapgit_syntax_highlighter.prog.abap b/src/zabapgit_syntax_highlighter.prog.abap index 8f3273a2b..bc176e31a 100644 --- a/src/zabapgit_syntax_highlighter.prog.abap +++ b/src/zabapgit_syntax_highlighter.prog.abap @@ -17,12 +17,12 @@ CLASS lcl_syntax_highlighter DEFINITION ABSTRACT PUBLIC SECTION. CLASS-METHODS create - IMPORTING iv_filename TYPE string + IMPORTING iv_filename TYPE string RETURNING VALUE(ro_instance) TYPE REF TO lcl_syntax_highlighter. METHODS process_line - IMPORTING iv_line TYPE string - RETURNING VALUE(rv_line) TYPE string. + IMPORTING iv_line TYPE string + RETURNING VALUE(rv_line) TYPE string. PROTECTED SECTION. @@ -39,15 +39,21 @@ CLASS lcl_syntax_highlighter DEFINITION ABSTRACT TYPES: BEGIN OF ty_rule, - regex TYPE REF TO cl_abap_regex, - token TYPE char1, - style TYPE string, + regex TYPE REF TO cl_abap_regex, + token TYPE char1, + style TYPE string, END OF ty_rule. CONSTANTS c_token_none TYPE c VALUE '.'. DATA mt_rules TYPE STANDARD TABLE OF ty_rule. + METHODS add_rule + IMPORTING + iv_regex TYPE string + iv_token TYPE c + iv_style TYPE string. + METHODS parse_line IMPORTING iv_line TYPE string EXPORTING et_matches TYPE ty_match_tt. @@ -84,21 +90,21 @@ CLASS lcl_syntax_abap DEFINITION INHERITING FROM lcl_syntax_highlighter FINAL. CONSTANTS: BEGIN OF c_css, - keyword TYPE string VALUE 'keyword', "#EC NOTEXT - text TYPE string VALUE 'text', "#EC NOTEXT - comment TYPE string VALUE 'comment', "#EC NOTEXT + keyword TYPE string VALUE 'keyword', "#EC NOTEXT + text TYPE string VALUE 'text', "#EC NOTEXT + comment TYPE string VALUE 'comment', "#EC NOTEXT END OF c_css, BEGIN OF c_token, - keyword TYPE c VALUE 'K', "#EC NOTEXT - text TYPE c VALUE 'T', "#EC NOTEXT - comment TYPE c VALUE 'C', "#EC NOTEXT + keyword TYPE c VALUE 'K', "#EC NOTEXT + text TYPE c VALUE 'T', "#EC NOTEXT + comment TYPE c VALUE 'C', "#EC NOTEXT END OF c_token, BEGIN OF c_regex, - comment TYPE string VALUE '##|"|^\*', - text TYPE string VALUE '`|''|\||\{|\}', - keyword TYPE string VALUE '&&|\b[-_a-z0-9]+\b', + comment TYPE string VALUE '##|"|^\*', + text TYPE string VALUE '`|''|\||\{|\}', + keyword TYPE string VALUE '&&|\b[-_a-z0-9]+\b', END OF c_regex. PROTECTED SECTION. @@ -126,21 +132,21 @@ CLASS lcl_syntax_xml DEFINITION INHERITING FROM lcl_syntax_highlighter FINAL. CONSTANTS: BEGIN OF c_css, - xml_tag TYPE string VALUE 'xml_tag', "#EC NOTEXT - attr TYPE string VALUE 'attr', "#EC NOTEXT - attr_val TYPE string VALUE 'attr_val', "#EC NOTEXT + xml_tag TYPE string VALUE 'xml_tag', "#EC NOTEXT + attr TYPE string VALUE 'attr', "#EC NOTEXT + attr_val TYPE string VALUE 'attr_val', "#EC NOTEXT END OF c_css, BEGIN OF c_token, - xml_tag TYPE c VALUE 'X', "#EC NOTEXT - attr TYPE c VALUE 'A', "#EC NOTEXT - attr_val TYPE c VALUE 'V', "#EC NOTEXT + xml_tag TYPE c VALUE 'X', "#EC NOTEXT + attr TYPE c VALUE 'A', "#EC NOTEXT + attr_val TYPE c VALUE 'V', "#EC NOTEXT END OF c_token, BEGIN OF c_regex, - xml_tag TYPE string VALUE '[<>]', "#EC NOTEXT + xml_tag TYPE string VALUE '[<>]', "#EC NOTEXT attr TYPE string VALUE '\s[-a-z:_0-9]+\s*(?==)', "#EC NOTEXT - attr_val TYPE string VALUE '["''][^''"]+[''"]', "#EC NOTEXT + attr_val TYPE string VALUE '["''][^''"]+[''"]', "#EC NOTEXT END OF c_regex. PROTECTED SECTION. @@ -149,23 +155,6 @@ CLASS lcl_syntax_xml DEFINITION INHERITING FROM lcl_syntax_highlighter FINAL. ENDCLASS. " lcl_syntax_xml DEFINITION -*----------------------------------------------------------------------* -* Macros to fill table with a regular expressions to be parsed -*----------------------------------------------------------------------* - -DEFINE _add_rule. - - CREATE OBJECT ls_rule-regex - EXPORTING - pattern = c_regex-&1 - ignore_case = abap_true. - - ls_rule-token = c_token-&1. - ls_rule-style = c_css-&1. - APPEND ls_rule TO mt_rules. - -END-OF-DEFINITION. " _add_rule - *----------------------------------------------------------------------* * CLASS lcl_syntax_highlighter IMPLEMENTATION *----------------------------------------------------------------------* @@ -187,6 +176,21 @@ CLASS lcl_syntax_highlighter IMPLEMENTATION. ENDMETHOD. " create. + METHOD add_rule. + + DATA ls_rule LIKE LINE OF mt_rules. + + CREATE OBJECT ls_rule-regex + EXPORTING + pattern = iv_regex + ignore_case = abap_true. + + ls_rule-token = iv_token. + ls_rule-style = iv_style. + APPEND ls_rule TO mt_rules. + + ENDMETHOD. + METHOD parse_line. DATA: @@ -222,10 +226,10 @@ CLASS lcl_syntax_highlighter IMPLEMENTATION. METHOD extend_matches. DATA: - lv_line_len TYPE i, - lv_last_pos TYPE i VALUE 0, - lv_length TYPE i, - ls_match TYPE ty_match. + lv_line_len TYPE i, + lv_last_pos TYPE i VALUE 0, + lv_length TYPE i, + ls_match TYPE ty_match. FIELD-SYMBOLS TYPE ty_match. @@ -259,8 +263,8 @@ CLASS lcl_syntax_highlighter IMPLEMENTATION. METHOD format_line. DATA: - lv_chunk TYPE string, - ls_rule LIKE LINE OF mt_rules. + lv_chunk TYPE string, + ls_rule LIKE LINE OF mt_rules. FIELD-SYMBOLS TYPE ty_match. @@ -346,9 +350,18 @@ CLASS lcl_syntax_abap IMPLEMENTATION. super->constructor( ). " Initialize instances of regular expression - _add_rule keyword. - _add_rule comment. - _add_rule text. + + add_rule( iv_regex = c_regex-keyword + iv_token = c_token-keyword + iv_style = c_css-keyword ). + + add_rule( iv_regex = c_regex-comment + iv_token = c_token-comment + iv_style = c_css-comment ). + + add_rule( iv_regex = c_regex-text + iv_token = c_token-text + iv_style = c_css-text ). ENDMETHOD. " constructor @@ -567,9 +580,18 @@ CLASS lcl_syntax_xml IMPLEMENTATION. super->constructor( ). " Initialize instances of regular expressions - _add_rule xml_tag. - _add_rule attr. - _add_rule attr_val. + + add_rule( iv_regex = c_regex-xml_tag + iv_token = c_token-xml_tag + iv_style = c_css-xml_tag ). + + add_rule( iv_regex = c_regex-attr + iv_token = c_token-attr + iv_style = c_css-attr ). + + add_rule( iv_regex = c_regex-attr_val + iv_token = c_token-attr_val + iv_style = c_css-attr_val ). ENDMETHOD. @@ -603,7 +625,7 @@ CLASS lcl_syntax_xml IMPLEMENTATION. DELETE ct_matches INDEX lv_index. CONTINUE. - " Adjust length and offset of closing tag + " Adjust length and offset of closing tag ELSEIF -text_tag = '>' AND lv_prev_token <> c_token-xml_tag. lv_state = 'C'. -length = -offset - -offset - -length + -length. @@ -673,7 +695,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION. ms_match-token = &1. ms_match-offset = &2. ms_match-length = &3. - append ms_match to mt_after_parse. + APPEND ms_match TO mt_after_parse. END-OF-DEFINITION. " _generate_parse DEFINE _generate_order. @@ -681,7 +703,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION. ms_match-offset = &2. ms_match-length = &3. ms_match-text_tag = &4. - append ms_match to mt_after_order. + APPEND ms_match TO mt_after_order. END-OF-DEFINITION. " _generate_order DEFINE _generate_extend. @@ -689,7 +711,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION. ms_match-offset = &2. ms_match-length = &3. ms_match-text_tag = &4. - append ms_match to mt_after_extend. + APPEND ms_match TO mt_after_extend. END-OF-DEFINITION. " _generate_extend METHOD do_test. @@ -1002,7 +1024,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION. DATA lv_line TYPE string. - lv_line = 'Text'. "#EC NOTEXT + lv_line = 'Text'. "#EC NOTEXT " Generate table with expected values after parsing _generate_parse 'X' 0 1. @@ -1027,7 +1049,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION. DATA lv_line TYPE string. - lv_line = ''. "#EC NOTEXT + lv_line = ''. "#EC NOTEXT " Generate table with expected values after parsing _generate_parse 'X' 0 1. @@ -1047,7 +1069,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION. DATA lv_line TYPE string. - lv_line = ''. "#EC NOTEXT + lv_line = ''. "#EC NOTEXT " Generate table with expected values after parsing _generate_parse 'X' 0 1. @@ -1076,7 +1098,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION. DATA lv_line TYPE string. - lv_line = ''. "#EC NOTEXT + lv_line = ''. "#EC NOTEXT " Generate table with expected values after parsing _generate_parse 'X' 0 1. @@ -1105,7 +1127,7 @@ CLASS ltcl_syntax_cases IMPLEMENTATION. DATA lv_line TYPE string. - lv_line = '"text"'. "#EC NOTEXT + lv_line = '"text"'. "#EC NOTEXT " Generate table with expected values after parsing _generate_parse 'X' 0 1. @@ -1207,8 +1229,8 @@ CLASS ltcl_syntax_basic_logic IMPLEMENTATION. cl_abap_unit_assert=>assert_equals( act = lv_line_act - exp = 'CALL FUNCTION' "#EC NOTEXT - msg = 'Failure during applying of style.' ). "#EC NOTEXT + exp = 'CALL FUNCTION' "#EC NOTEXT + msg = 'Failure during applying of style.' ). "#EC NOTEXT ENDMETHOD. " apply_style @@ -1222,15 +1244,15 @@ CLASS ltcl_syntax_basic_logic IMPLEMENTATION. cl_abap_unit_assert=>assert_equals( act = lv_line_act exp = '' - msg = 'Failure in method process_line.' ). "#EC NOTEXT + msg = 'Failure in method process_line.' ). "#EC NOTEXT " Call the method with non-empty line and compare results lv_line_act = mo->process_line( iv_line = '* CALL FUNCTION' ). "#EC NOTEXT cl_abap_unit_assert=>assert_equals( act = lv_line_act - exp = '* CALL FUNCTION' "#EC NOTEXT - msg = 'Failure in method process_line.' ). "#EC NOTEXT + exp = '* CALL FUNCTION' "#EC NOTEXT + msg = 'Failure in method process_line.' ). "#EC NOTEXT ENDMETHOD. " process_line From e124e5c0d93a1488d0cca19d1a8e0b0db90d6823 Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 10 Jun 2017 12:55:42 +0000 Subject: [PATCH 2/4] refactor _ADD_DIALOG_FLD macro #773 --- src/zabapgit_popups.prog.abap | 129 +++++++++++++++++++++++++--------- 1 file changed, 95 insertions(+), 34 deletions(-) diff --git a/src/zabapgit_popups.prog.abap b/src/zabapgit_popups.prog.abap index b1a33356b..5a3ebd202 100644 --- a/src/zabapgit_popups.prog.abap +++ b/src/zabapgit_popups.prog.abap @@ -77,32 +77,52 @@ CLASS lcl_popups DEFINITION FINAL. lcx_cancel, popup_to_select_transports RETURNING VALUE(rt_trkorr) TYPE trwbo_request_headers. - PRIVATE SECTION. + PRIVATE SECTION. + TYPES: ty_sval_tt TYPE STANDARD TABLE OF sval WITH DEFAULT KEY. + + CLASS-METHODS: add_field + IMPORTING iv_tabname TYPE sval-tabname + iv_fieldname TYPE sval-fieldname + iv_fieldtext TYPE sval-fieldtext + iv_value TYPE clike DEFAULT '' + iv_field_attr TYPE sval-field_attr DEFAULT '' + CHANGING ct_fields TYPE ty_sval_tt. ENDCLASS. CLASS lcl_popups IMPLEMENTATION. - METHOD popup_object. + METHOD add_field. - DEFINE _add_dialog_fld. - APPEND INITIAL LINE TO lt_fields ASSIGNING . - -tabname = &1. "#EC NOTEXT - -fieldname = &2. "#EC NOTEXT - -fieldtext = &3. "#EC NOTEXT - -value = &4. "#EC NOTEXT - -field_attr = &5. "#EC NOTEXT - END-OF-DEFINITION. + FIELD-SYMBOLS: LIKE LINE OF ct_fields. + + APPEND INITIAL LINE TO ct_fields ASSIGNING . + -tabname = iv_tabname. + -fieldname = iv_fieldname. + -fieldtext = iv_fieldtext. + -value = iv_value. + -field_attr = iv_field_attr. + + ENDMETHOD. + + 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' '' ''. + + add_field( EXPORTING iv_tabname = 'TADIR' + iv_fieldname = 'OBJECT' + iv_fieldtext = 'Type' + CHANGING ct_fields = lt_fields ). + + add_field( EXPORTING iv_tabname = 'TADIR' + iv_fieldname = 'OBJ_NAME' + iv_fieldtext = 'Name' + CHANGING ct_fields = lt_fields ). CALL FUNCTION 'POPUP_GET_VALUES' EXPORTING @@ -145,9 +165,17 @@ CLASS lcl_popups IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF lt_fields. - " TAB FLD LABEL DEF ATTR - _add_dialog_fld 'TDEVC' 'DEVCLASS' 'Package' '' ''. - _add_dialog_fld 'TDEVC' 'INTSYS' 'Folder logic' 'PREFIX' ''. + + add_field( EXPORTING iv_tabname = 'TDEVC' + iv_fieldname = 'DEVCLASS' + iv_fieldtext = 'Package' + CHANGING ct_fields = lt_fields ). + + add_field( EXPORTING iv_tabname = 'TDEVC' + iv_fieldname = 'INTSYS' + iv_fieldtext = 'Folder logic' + iv_value = 'PREFIX' + CHANGING ct_fields = lt_fields ). CALL FUNCTION 'POPUP_GET_VALUES' EXPORTING @@ -190,8 +218,11 @@ CLASS lcl_popups IMPLEMENTATION. CLEAR: ev_name, ev_cancel. -* TAB FLD LABEL DEF ATTR - _add_dialog_fld 'TEXTL' 'LINE' 'Name' 'new-branch-name' ''. + add_field( EXPORTING iv_tabname = 'TEXTL' + iv_fieldname = 'LINE' + iv_fieldtext = 'Name' + iv_value = 'new-branch-name' + CHANGING ct_fields = lt_fields ). CALL FUNCTION 'POPUP_GET_VALUES' EXPORTING @@ -228,8 +259,11 @@ CLASS lcl_popups IMPLEMENTATION. CLEAR: ev_name, ev_cancel. -* TAB FLD LABEL DEF ATTR - _add_dialog_fld 'TEXTL' 'LINE' 'Name' 'lcl_gui_page_' ''. + add_field( EXPORTING iv_tabname = 'TEXTL' + iv_fieldname = 'LINE' + iv_fieldtext = 'Name' + iv_value = 'lcl_gui_page_' + CHANGING ct_fields = lt_fields ). CALL FUNCTION 'POPUP_GET_VALUES' EXPORTING @@ -266,9 +300,15 @@ CLASS lcl_popups IMPLEMENTATION. FIELD-SYMBOLS: LIKE LINE OF lt_fields. - " TAB FLD LABEL DEF ATTR - _add_dialog_fld 'ABAPTXT255' 'LINE' 'Name' '' ''. - _add_dialog_fld 'TDEVC' 'DEVCLASS' 'Package' '' ''. + add_field( EXPORTING iv_tabname = 'ABAPTXT255' + iv_fieldname = 'LINE' + iv_fieldtext = 'Name' + CHANGING ct_fields = lt_fields ). + + add_field( EXPORTING iv_tabname = 'TDEVC' + iv_fieldname = 'DEVCLASS' + iv_fieldtext = 'Package' + CHANGING ct_fields = lt_fields ). lv_icon_ok = icon_okay. lv_button1 = 'Create package' ##NO_TEXT. @@ -443,10 +483,26 @@ CLASS lcl_popups IMPLEMENTATION. lv_icon2 = icon_folder. ENDIF. -* TAB FLD LABEL DEF ATTR - _add_dialog_fld 'ABAPTXT255' 'LINE' 'Git clone URL' iv_url lv_uattr. - _add_dialog_fld 'TDEVC' 'DEVCLASS' 'Target package' iv_package lv_pattr. - _add_dialog_fld 'TEXTL' 'LINE' 'Branch' iv_branch '05'. + add_field( EXPORTING iv_tabname = 'ABAPTXT255' + iv_fieldname = 'LINE' + iv_fieldtext = 'Git clone URL' + iv_value = iv_url + iv_field_attr = lv_uattr + CHANGING ct_fields = lt_fields ). + + add_field( EXPORTING iv_tabname = 'TDEVC' + iv_fieldname = 'DEVCLASS' + iv_fieldtext = 'Target package' + iv_value = iv_package + iv_field_attr = lv_pattr + CHANGING ct_fields = lt_fields ). + + add_field( EXPORTING iv_tabname = 'TEXTL' + iv_fieldname = 'LINE' + iv_fieldtext = 'Branch' + iv_value = iv_branch + iv_field_attr = '05' + CHANGING ct_fields = lt_fields ). lv_icon_ok = icon_okay. lv_icon_br = icon_workflow_fork. @@ -604,20 +660,25 @@ CLASS lcl_popups IMPLEMENTATION. CONCATENATE lv_transports_as_text '_' ls_transport_header-trkorr INTO lv_transports_as_text. ENDLOOP. - " TAB FLD LABEL DEF ATTR - _add_dialog_fld 'TEXTL' 'LINE' 'Branch name' lv_transports_as_text ''. - _add_dialog_fld 'ABAPTXT255' 'LINE' 'Commit text' lv_transports_as_text ''. + add_field( EXPORTING iv_tabname = 'TEXTL' + iv_fieldname = 'LINE' + iv_fieldtext = 'Branch name' + iv_value = lv_transports_as_text + CHANGING ct_fields = lt_fields ). + + add_field( EXPORTING iv_tabname = 'ABAPTXT255' + iv_fieldname = 'LINE' + iv_fieldtext = 'Commit text' + iv_value = lv_transports_as_text + CHANGING ct_fields = lt_fields ). CALL FUNCTION 'POPUP_GET_VALUES' EXPORTING -* no_value_check = SPACE " Deactivates data type check popup_title = 'Transport to new Branch' -* start_column = '5' " Start column of the dialog box -* start_row = '5' " Start line of the dialog box IMPORTING returncode = lv_returncode TABLES - fields = lt_fields " Table fields, values and attributes + fields = lt_fields EXCEPTIONS error_in_fields = 1 OTHERS = 2. From b9ea4960a3aec0e2dd7be0ae142452a88b8f7193 Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 10 Jun 2017 13:12:31 +0000 Subject: [PATCH 3/4] refactor _OBJECT_CHECK_TIMESTAMP macro #773 --- src/zabapgit_macros.prog.abap | 20 ------------ src/zabapgit_object_doma.prog.abap | 8 +++-- src/zabapgit_object_dtel.prog.abap | 8 +++-- src/zabapgit_object_enqu.prog.abap | 8 +++-- src/zabapgit_object_shlp.prog.abap | 14 +++++---- src/zabapgit_object_tabl.prog.abap | 18 +++++++++-- src/zabapgit_object_ttyp.prog.abap | 5 ++- src/zabapgit_object_view.prog.abap | 19 ++++++++---- src/zabapgit_objects.prog.abap | 50 +++++++++++++++++++++++++++--- 9 files changed, 101 insertions(+), 49 deletions(-) diff --git a/src/zabapgit_macros.prog.abap b/src/zabapgit_macros.prog.abap index ddb8c245e..cf9f033a1 100644 --- a/src/zabapgit_macros.prog.abap +++ b/src/zabapgit_macros.prog.abap @@ -1,23 +1,3 @@ *&---------------------------------------------------------------------* *& Include ZABAPGIT_MACROS *&---------------------------------------------------------------------* - -* Macros - -DEFINE _object_check_timestamp. - IF sy-subrc = 0 AND &1 IS NOT INITIAL AND &2 IS NOT INITIAL. - cl_abap_tstmp=>systemtstmp_syst2utc( - EXPORTING syst_date = &1 - syst_time = &2 - IMPORTING utc_tstmp = lv_ts ). - IF lv_ts < iv_timestamp. - rv_changed = abap_false. " Unchanged - ELSE. - rv_changed = abap_true. - RETURN. - ENDIF. - ELSE. " Not found? => changed - rv_changed = abap_true. - RETURN. - ENDIF. -END-OF-DEFINITION. diff --git a/src/zabapgit_object_doma.prog.abap b/src/zabapgit_object_doma.prog.abap index f3384b9ba..bd8194ce9 100644 --- a/src/zabapgit_object_doma.prog.abap +++ b/src/zabapgit_object_doma.prog.abap @@ -53,8 +53,7 @@ CLASS lcl_object_doma IMPLEMENTATION. METHOD lif_object~has_changed_since. DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + lv_time TYPE tims. SELECT SINGLE as4date as4time FROM dd01l INTO (lv_date, lv_time) @@ -62,7 +61,10 @@ CLASS lcl_object_doma IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_dtel.prog.abap b/src/zabapgit_object_dtel.prog.abap index ab9e75ce8..cb2bac785 100644 --- a/src/zabapgit_object_dtel.prog.abap +++ b/src/zabapgit_object_dtel.prog.abap @@ -46,8 +46,7 @@ CLASS lcl_object_dtel IMPLEMENTATION. METHOD lif_object~has_changed_since. DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + lv_time TYPE tims. SELECT SINGLE as4date as4time FROM dd04l INTO (lv_date, lv_time) @@ -55,7 +54,10 @@ CLASS lcl_object_dtel IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_enqu.prog.abap b/src/zabapgit_object_enqu.prog.abap index e3425e9d8..e0127a955 100644 --- a/src/zabapgit_object_enqu.prog.abap +++ b/src/zabapgit_object_enqu.prog.abap @@ -25,8 +25,7 @@ CLASS lcl_object_enqu IMPLEMENTATION. METHOD lif_object~has_changed_since. DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + lv_time TYPE tims. SELECT SINGLE as4date as4time FROM dd25l INTO (lv_date, lv_time) @@ -34,7 +33,10 @@ CLASS lcl_object_enqu IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_shlp.prog.abap b/src/zabapgit_object_shlp.prog.abap index 307980a74..3373ada0a 100644 --- a/src/zabapgit_object_shlp.prog.abap +++ b/src/zabapgit_object_shlp.prog.abap @@ -25,15 +25,17 @@ CLASS lcl_object_shlp IMPLEMENTATION. METHOD lif_object~has_changed_since. DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + lv_time TYPE tims. SELECT SINGLE as4date as4time FROM dd30l - INTO (lv_date, lv_time) - WHERE shlpname = ms_item-obj_name - AND as4local = 'A'. + INTO (lv_date, lv_time) + WHERE shlpname = ms_item-obj_name + AND as4local = 'A'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index d1cff6ed3..229167c76 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -38,7 +38,11 @@ CLASS lcl_object_tabl IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. SELECT SINGLE as4date as4time FROM dd09l " Table tech settings INTO (lv_date, lv_time) @@ -46,7 +50,11 @@ CLASS lcl_object_tabl IMPLEMENTATION. AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. SELECT as4date as4time FROM dd12l " Table tech settings INTO CORRESPONDING FIELDS OF TABLE lt_indexes @@ -55,7 +63,11 @@ CLASS lcl_object_tabl IMPLEMENTATION. AND as4vers = '0000' ##TOO_MANY_ITAB_FIELDS. LOOP AT lt_indexes ASSIGNING . - _object_check_timestamp -as4date -as4time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = -as4date + iv_time = -as4time ). + CHECK rv_changed = abap_false. ENDLOOP. ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_ttyp.prog.abap b/src/zabapgit_object_ttyp.prog.abap index 659af989c..a79f4a6aa 100644 --- a/src/zabapgit_object_ttyp.prog.abap +++ b/src/zabapgit_object_ttyp.prog.abap @@ -33,7 +33,10 @@ CLASS lcl_object_ttyp IMPLEMENTATION. WHERE typename = ms_item-obj_name AND as4local = 'A'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_view.prog.abap b/src/zabapgit_object_view.prog.abap index c540e7e2f..1d89a367d 100644 --- a/src/zabapgit_object_view.prog.abap +++ b/src/zabapgit_object_view.prog.abap @@ -25,24 +25,31 @@ CLASS lcl_object_view IMPLEMENTATION. METHOD lif_object~has_changed_since. DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + lv_time TYPE tims. - SELECT SINGLE as4date as4time FROM dd25l " View + SELECT SINGLE as4date as4time FROM dd25l INTO (lv_date, lv_time) WHERE viewname = ms_item-obj_name AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. - SELECT SINGLE as4date as4time FROM dd09l " Table tech settings + SELECT SINGLE as4date as4time FROM dd09l INTO (lv_date, lv_time) WHERE tabname = ms_item-obj_name AND as4local = 'A' AND as4vers = '0000'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index da243eb83..22f9f8e2d 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -571,6 +571,13 @@ CLASS lcl_objects_super DEFINITION ABSTRACT. mv_language TYPE spras. METHODS: + check_timestamp + IMPORTING + iv_timestamp TYPE timestamp + iv_date TYPE datum + iv_time TYPE uzeit + RETURNING + VALUE(rv_changed) TYPE abap_bool, get_metadata RETURNING VALUE(rs_metadata) TYPE lif_defs=>ty_metadata, corr_insert @@ -1539,7 +1546,11 @@ CLASS lcl_objects_program IMPLEMENTATION. WHERE progname = iv_program AND r3state = 'A'. - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. SELECT SINGLE udat utime FROM repotext " Program text pool INTO (lv_date, lv_time) @@ -1547,7 +1558,11 @@ CLASS lcl_objects_program IMPLEMENTATION. AND r3state = 'A'. IF sy-subrc = 0. " Text not found ? Assuming no changes, see #404 - _object_check_timestamp lv_date lv_time. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = lv_date + iv_time = lv_time ). + CHECK rv_changed = abap_false. ENDIF. IF iv_skip_gui = abap_true. @@ -1559,7 +1574,11 @@ CLASS lcl_objects_program IMPLEMENTATION. WHERE prog = iv_program ##TOO_MANY_ITAB_FIELDS. "#EC CI_SUBRC LOOP AT lt_screens ASSIGNING . - _object_check_timestamp -dgen -tgen. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = -dgen + iv_time = -tgen ). + CHECK rv_changed = abap_false. ENDLOOP. SELECT vdatum vzeit FROM eudb " GUI @@ -1569,7 +1588,11 @@ CLASS lcl_objects_program IMPLEMENTATION. AND srtf2 = 0 ##TOO_MANY_ITAB_FIELDS. "#EC CI_SUBRC LOOP AT lt_eudb ASSIGNING . - _object_check_timestamp -vdatum -vzeit. + rv_changed = check_timestamp( + iv_timestamp = iv_timestamp + iv_date = -vdatum + iv_time = -vzeit ). + CHECK rv_changed = abap_false. ENDLOOP. ENDMETHOD. "check_prog_changed_since @@ -1690,6 +1713,25 @@ CLASS lcl_objects_super IMPLEMENTATION. ENDMETHOD. + METHOD check_timestamp. + + DATA: lv_ts TYPE timestamp. + + IF sy-subrc = 0 AND iv_date IS NOT INITIAL AND iv_time IS NOT INITIAL. + cl_abap_tstmp=>systemtstmp_syst2utc( + EXPORTING syst_date = iv_date + syst_time = iv_time + IMPORTING utc_tstmp = lv_ts ). + IF lv_ts < iv_timestamp. + rv_changed = abap_false. " Unchanged + ELSE. + rv_changed = abap_true. + ENDIF. + ELSE. " Not found? => changed + rv_changed = abap_true. + ENDIF. + + ENDMETHOD. METHOD get_metadata. rs_metadata-class = From 3a833bb97178b4803e2dc6ffc28dbb5bec0e0f93 Mon Sep 17 00:00:00 2001 From: larshp Date: Sat, 10 Jun 2017 13:39:38 +0000 Subject: [PATCH 4/4] cleanup --- src/zabapgit_news.prog.abap | 6 +++--- src/zabapgit_object_auth.prog.abap | 2 +- src/zabapgit_object_enho.prog.abap | 2 +- src/zabapgit_object_fugr.prog.abap | 1 - src/zabapgit_object_shi3.prog.abap | 11 +---------- src/zabapgit_object_tabl.prog.abap | 13 +++++++++---- src/zabapgit_object_ttyp.prog.abap | 3 +-- src/zabapgit_object_view.prog.abap | 8 ++++++-- src/zabapgit_objects.prog.abap | 17 ++++++++++++----- src/zabapgit_repo_impl.prog.abap | 2 +- src/zabapgit_syntax_highlighter.prog.abap | 4 ---- src/zabapgit_util.prog.abap | 8 ++++---- src/zabapgit_xml.prog.abap | 3 +-- 13 files changed, 40 insertions(+), 40 deletions(-) diff --git a/src/zabapgit_news.prog.abap b/src/zabapgit_news.prog.abap index 0c539520b..9e51a9c16 100644 --- a/src/zabapgit_news.prog.abap +++ b/src/zabapgit_news.prog.abap @@ -394,17 +394,17 @@ CLASS ltcl_news IMPLEMENTATION. ls_log = lcl_news=>parse_line( iv_line = '======' iv_current_version = '1.26.01' ). - cl_abap_unit_assert=>assert_initial( act = ls_log ). + cl_abap_unit_assert=>assert_initial( ls_log ). ls_log = lcl_news=>parse_line( iv_line = '' iv_current_version = '1.26.01' ). - cl_abap_unit_assert=>assert_initial( act = ls_log ). + cl_abap_unit_assert=>assert_initial( ls_log ). ls_log = lcl_news=>parse_line( iv_line = '------' iv_current_version = '1.26.01' ). - cl_abap_unit_assert=>assert_initial( act = ls_log ). + cl_abap_unit_assert=>assert_initial( ls_log ). CLEAR ls_log. ls_log = lcl_news=>parse_line( diff --git a/src/zabapgit_object_auth.prog.abap b/src/zabapgit_object_auth.prog.abap index fde332ce9..8cfe21e0b 100644 --- a/src/zabapgit_object_auth.prog.abap +++ b/src/zabapgit_object_auth.prog.abap @@ -115,7 +115,7 @@ CLASS lcl_object_auth IMPLEMENTATION. METHOD lif_object~jump. - DATA: field TYPE fieldname . + DATA: field TYPE fieldname. field = ms_item-obj_name. diff --git a/src/zabapgit_object_enho.prog.abap b/src/zabapgit_object_enho.prog.abap index 30debffb4..176963fd5 100644 --- a/src/zabapgit_object_enho.prog.abap +++ b/src/zabapgit_object_enho.prog.abap @@ -262,7 +262,7 @@ CLASS lcl_object_enho_clif IMPLEMENTATION. io_xml->read( EXPORTING iv_name = 'TAB_METHODS' CHANGING cg_data = lt_tab_methods ). - io_clif->set_enhattributes( tab_attributes = lt_tab_attributes ). + io_clif->set_enhattributes( lt_tab_attributes ). * todo: deserialize includes diff --git a/src/zabapgit_object_fugr.prog.abap b/src/zabapgit_object_fugr.prog.abap index 8d7f9b118..3fd94c39f 100644 --- a/src/zabapgit_object_fugr.prog.abap +++ b/src/zabapgit_object_fugr.prog.abap @@ -419,7 +419,6 @@ CLASS lcl_object_fugr IMPLEMENTATION. DATA: lt_reposrc TYPE STANDARD TABLE OF ty_reposrc WITH DEFAULT KEY, ls_reposrc LIKE LINE OF lt_reposrc, lv_program TYPE program, - lv_cnam TYPE reposrc-cnam, lv_tabix LIKE sy-tabix, lt_functab TYPE ty_rs38l_incl_tt. diff --git a/src/zabapgit_object_shi3.prog.abap b/src/zabapgit_object_shi3.prog.abap index 255bcdf89..7faadf630 100644 --- a/src/zabapgit_object_shi3.prog.abap +++ b/src/zabapgit_object_shi3.prog.abap @@ -18,16 +18,7 @@ CLASS lcl_object_shi3 DEFINITION INHERITING FROM lcl_objects_super FINAL. PRIVATE SECTION. - - TYPES: BEGIN OF ty_id_map, - old TYPE ttree-id, - new TYPE ttree-id, - END OF ty_id_map. - TYPES tt_id_map TYPE STANDARD TABLE OF ty_id_map. - TYPES ts_id_map TYPE SORTED TABLE OF ty_id_map WITH UNIQUE KEY old. - - DATA: mv_tree_id TYPE ttree-id, - mt_map TYPE ts_id_map. " SORTED ! + DATA: mv_tree_id TYPE ttree-id. METHODS jump_se43 RAISING lcx_exception. diff --git a/src/zabapgit_object_tabl.prog.abap b/src/zabapgit_object_tabl.prog.abap index 229167c76..a8d4a2ab5 100644 --- a/src/zabapgit_object_tabl.prog.abap +++ b/src/zabapgit_object_tabl.prog.abap @@ -27,7 +27,6 @@ CLASS lcl_object_tabl IMPLEMENTATION. 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. @@ -42,7 +41,9 @@ CLASS lcl_object_tabl IMPLEMENTATION. iv_timestamp = iv_timestamp iv_date = lv_date iv_time = lv_time ). - CHECK rv_changed = abap_false. + IF rv_changed = abap_true. + RETURN. + ENDIF. SELECT SINGLE as4date as4time FROM dd09l " Table tech settings INTO (lv_date, lv_time) @@ -54,7 +55,9 @@ CLASS lcl_object_tabl IMPLEMENTATION. iv_timestamp = iv_timestamp iv_date = lv_date iv_time = lv_time ). - CHECK rv_changed = abap_false. + IF rv_changed = abap_true. + RETURN. + ENDIF. SELECT as4date as4time FROM dd12l " Table tech settings INTO CORRESPONDING FIELDS OF TABLE lt_indexes @@ -67,7 +70,9 @@ CLASS lcl_object_tabl IMPLEMENTATION. iv_timestamp = iv_timestamp iv_date = -as4date iv_time = -as4time ). - CHECK rv_changed = abap_false. + IF rv_changed = abap_true. + RETURN. + ENDIF. ENDLOOP. ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_object_ttyp.prog.abap b/src/zabapgit_object_ttyp.prog.abap index a79f4a6aa..a8031cc0e 100644 --- a/src/zabapgit_object_ttyp.prog.abap +++ b/src/zabapgit_object_ttyp.prog.abap @@ -25,8 +25,7 @@ CLASS lcl_object_ttyp IMPLEMENTATION. METHOD lif_object~has_changed_since. DATA: lv_date TYPE dats, - lv_time TYPE tims, - lv_ts TYPE timestamp. + lv_time TYPE tims. SELECT SINGLE as4date as4time FROM dd40l INTO (lv_date, lv_time) diff --git a/src/zabapgit_object_view.prog.abap b/src/zabapgit_object_view.prog.abap index 1d89a367d..bee07aff5 100644 --- a/src/zabapgit_object_view.prog.abap +++ b/src/zabapgit_object_view.prog.abap @@ -37,7 +37,9 @@ CLASS lcl_object_view IMPLEMENTATION. iv_timestamp = iv_timestamp iv_date = lv_date iv_time = lv_time ). - CHECK rv_changed = abap_false. + IF rv_changed = abap_true. + RETURN. + ENDIF. SELECT SINGLE as4date as4time FROM dd09l INTO (lv_date, lv_time) @@ -49,7 +51,9 @@ CLASS lcl_object_view IMPLEMENTATION. iv_timestamp = iv_timestamp iv_date = lv_date iv_time = lv_time ). - CHECK rv_changed = abap_false. + IF rv_changed = abap_true. + RETURN. + ENDIF. ENDMETHOD. "lif_object~has_changed_since diff --git a/src/zabapgit_objects.prog.abap b/src/zabapgit_objects.prog.abap index 22f9f8e2d..8b2907a56 100644 --- a/src/zabapgit_objects.prog.abap +++ b/src/zabapgit_objects.prog.abap @@ -1534,7 +1534,6 @@ CLASS lcl_objects_program IMPLEMENTATION. 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. @@ -1550,7 +1549,9 @@ CLASS lcl_objects_program IMPLEMENTATION. iv_timestamp = iv_timestamp iv_date = lv_date iv_time = lv_time ). - CHECK rv_changed = abap_false. + IF rv_changed = abap_true. + RETURN. + ENDIF. SELECT SINGLE udat utime FROM repotext " Program text pool INTO (lv_date, lv_time) @@ -1562,7 +1563,9 @@ CLASS lcl_objects_program IMPLEMENTATION. iv_timestamp = iv_timestamp iv_date = lv_date iv_time = lv_time ). - CHECK rv_changed = abap_false. + IF rv_changed = abap_true. + RETURN. + ENDIF. ENDIF. IF iv_skip_gui = abap_true. @@ -1578,7 +1581,9 @@ CLASS lcl_objects_program IMPLEMENTATION. iv_timestamp = iv_timestamp iv_date = -dgen iv_time = -tgen ). - CHECK rv_changed = abap_false. + IF rv_changed = abap_true. + RETURN. + ENDIF. ENDLOOP. SELECT vdatum vzeit FROM eudb " GUI @@ -1592,7 +1597,9 @@ CLASS lcl_objects_program IMPLEMENTATION. iv_timestamp = iv_timestamp iv_date = -vdatum iv_time = -vzeit ). - CHECK rv_changed = abap_false. + IF rv_changed = abap_true. + RETURN. + ENDIF. ENDLOOP. ENDMETHOD. "check_prog_changed_since diff --git a/src/zabapgit_repo_impl.prog.abap b/src/zabapgit_repo_impl.prog.abap index 85e26ac1e..ef402633c 100644 --- a/src/zabapgit_repo_impl.prog.abap +++ b/src/zabapgit_repo_impl.prog.abap @@ -558,7 +558,7 @@ CLASS lcl_repo IMPLEMENTATION. io_dot = get_dot_abapgit( ) ). lt_filter = it_filter. - lv_filter_exist = boolc( lines( lt_filter ) > 0 ) . + lv_filter_exist = boolc( lines( lt_filter ) > 0 ). LOOP AT lt_tadir ASSIGNING . IF lv_filter_exist = abap_true. diff --git a/src/zabapgit_syntax_highlighter.prog.abap b/src/zabapgit_syntax_highlighter.prog.abap index bc176e31a..27c883e37 100644 --- a/src/zabapgit_syntax_highlighter.prog.abap +++ b/src/zabapgit_syntax_highlighter.prog.abap @@ -345,8 +345,6 @@ CLASS lcl_syntax_abap IMPLEMENTATION. METHOD constructor. - DATA ls_rule LIKE LINE OF mt_rules. - super->constructor( ). " Initialize instances of regular expression @@ -575,8 +573,6 @@ CLASS lcl_syntax_xml IMPLEMENTATION. METHOD constructor. - DATA ls_rule LIKE LINE OF mt_rules. - super->constructor( ). " Initialize instances of regular expressions diff --git a/src/zabapgit_util.prog.abap b/src/zabapgit_util.prog.abap index 45db5048c..db0ee274a 100644 --- a/src/zabapgit_util.prog.abap +++ b/src/zabapgit_util.prog.abap @@ -110,8 +110,8 @@ CLASS lcl_convert DEFINITION FINAL. RETURNING VALUE(rv_xstring) TYPE xstring. CLASS-METHODS split_string - IMPORTING iv_string TYPE string - RETURNING value(rt_lines) TYPE string_table. + IMPORTING iv_string TYPE string + RETURNING VALUE(rt_lines) TYPE string_table. ENDCLASS. "lcl_convert DEFINITION @@ -423,8 +423,8 @@ CLASS lcl_path IMPLEMENTATION. METHOD change_dir. - DATA lv_last TYPE i. - DATA lv_temp TYPE string. + DATA: lv_last TYPE i, + lv_temp TYPE string. lv_last = strlen( iv_cur_dir ) - 1. diff --git a/src/zabapgit_xml.prog.abap b/src/zabapgit_xml.prog.abap index 109f62f55..ffe3c348d 100644 --- a/src/zabapgit_xml.prog.abap +++ b/src/zabapgit_xml.prog.abap @@ -293,8 +293,7 @@ CLASS lcl_xml_output IMPLEMENTATION. name = 'abap' prefix = 'asx' ). - li_attr = mi_xml_doc->create_attribute_ns( - name = 'version' ). + li_attr = mi_xml_doc->create_attribute_ns( 'version' ). li_attr->if_ixml_node~set_value( '1.0' ). ri_element->set_attribute_node_ns( li_attr ).