mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
TABL texts, WDYN sort, diff stats
TABL: exclude/clear texts for fields referring to data element WDYN: sort xml contents to try making sure its the same across systems Show insert/delete/update statistics in diff screen
This commit is contained in:
parent
42eaae824f
commit
3481eaa8ff
178
zabapgit.abap
178
zabapgit.abap
|
@ -3,7 +3,7 @@ REPORT zabapgit.
|
|||
* See https://github.com/larshp/abapGit/
|
||||
|
||||
CONSTANTS: gc_xml_version TYPE string VALUE 'v0.2-alpha', "#EC NOTEXT
|
||||
gc_abap_version TYPE string VALUE 'v0.75'. "#EC NOTEXT
|
||||
gc_abap_version TYPE string VALUE 'v0.76'. "#EC NOTEXT
|
||||
|
||||
********************************************************************************
|
||||
* The MIT License (MIT)
|
||||
|
@ -96,13 +96,6 @@ TYPES: BEGIN OF st_result,
|
|||
END OF st_result.
|
||||
TYPES: tt_results TYPE STANDARD TABLE OF st_result WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF st_diff,
|
||||
local TYPE string,
|
||||
result TYPE c LENGTH 1,
|
||||
remote TYPE string,
|
||||
END OF st_diff.
|
||||
TYPES: tt_diffs TYPE STANDARD TABLE OF st_diff WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF st_tadir,
|
||||
pgmid TYPE tadir-pgmid,
|
||||
object TYPE tadir-object,
|
||||
|
@ -144,12 +137,6 @@ CONSTANTS: gc_newline TYPE abap_char1 VALUE cl_abap_char_utilities=>newline.
|
|||
|
||||
CONSTANTS: gc_english TYPE spras VALUE 'E'.
|
||||
|
||||
CONSTANTS: BEGIN OF gc_diff,
|
||||
insert TYPE c LENGTH 1 VALUE 'I',
|
||||
delete TYPE c LENGTH 1 VALUE 'D',
|
||||
update TYPE c LENGTH 1 VALUE 'U',
|
||||
END OF gc_diff.
|
||||
|
||||
DATA: gv_agent TYPE string ##NEEDED.
|
||||
|
||||
DEFINE _raise.
|
||||
|
@ -1412,14 +1399,40 @@ ENDCLASS. "lcl_convert IMPLEMENTATION
|
|||
CLASS lcl_diff DEFINITION FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
CONSTANTS: BEGIN OF gc_diff,
|
||||
insert TYPE c LENGTH 1 VALUE 'I',
|
||||
delete TYPE c LENGTH 1 VALUE 'D',
|
||||
update TYPE c LENGTH 1 VALUE 'U',
|
||||
END OF gc_diff.
|
||||
|
||||
TYPES: BEGIN OF st_diff,
|
||||
local TYPE string,
|
||||
result TYPE c LENGTH 1,
|
||||
remote TYPE string,
|
||||
END OF st_diff.
|
||||
TYPES: tt_diffs TYPE STANDARD TABLE OF st_diff WITH DEFAULT KEY.
|
||||
|
||||
TYPES: BEGIN OF st_count,
|
||||
insert TYPE i,
|
||||
delete TYPE i,
|
||||
update TYPE i,
|
||||
END OF st_count.
|
||||
|
||||
* assumes data is UTF8 based with newlines
|
||||
* only works with lines up to 255 characters
|
||||
CLASS-METHODS diff
|
||||
IMPORTING iv_local TYPE xstring
|
||||
iv_remote TYPE xstring
|
||||
METHODS constructor
|
||||
IMPORTING iv_local TYPE xstring
|
||||
iv_remote TYPE xstring.
|
||||
|
||||
METHODS get
|
||||
RETURNING VALUE(rt_diff) TYPE tt_diffs.
|
||||
|
||||
METHODS count
|
||||
RETURNING VALUE(rs_count) TYPE st_count.
|
||||
|
||||
PRIVATE SECTION.
|
||||
DATA mt_diff TYPE tt_diffs.
|
||||
|
||||
CLASS-METHODS: unpack
|
||||
IMPORTING iv_local TYPE xstring
|
||||
iv_remote TYPE xstring
|
||||
|
@ -1446,6 +1459,28 @@ ENDCLASS. "lcl_diff DEFINITION
|
|||
*----------------------------------------------------------------------*
|
||||
CLASS lcl_diff IMPLEMENTATION.
|
||||
|
||||
METHOD get.
|
||||
rt_diff = mt_diff.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD count.
|
||||
|
||||
FIELD-SYMBOLS: <ls_diff> LIKE LINE OF mt_diff.
|
||||
|
||||
|
||||
LOOP AT mt_diff ASSIGNING <ls_diff>.
|
||||
CASE <ls_diff>-result.
|
||||
WHEN lcl_diff=>gc_diff-insert.
|
||||
rs_count-insert = rs_count-insert + 1.
|
||||
WHEN lcl_diff=>gc_diff-delete.
|
||||
rs_count-delete = rs_count-delete + 1.
|
||||
WHEN lcl_diff=>gc_diff-update.
|
||||
rs_count-update = rs_count-update + 1.
|
||||
ENDCASE.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD unpack.
|
||||
|
||||
DATA: lv_local TYPE string,
|
||||
|
@ -1478,7 +1513,7 @@ CLASS lcl_diff IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD diff.
|
||||
METHOD constructor.
|
||||
|
||||
DATA: lt_delta TYPE vxabapt255_tab,
|
||||
lt_local TYPE abaptxt255_tab,
|
||||
|
@ -1493,7 +1528,7 @@ CLASS lcl_diff IMPLEMENTATION.
|
|||
lt_delta = compute( it_local = lt_local
|
||||
it_remote = lt_remote ).
|
||||
|
||||
rt_diff = render( it_local = lt_local
|
||||
mt_diff = render( it_local = lt_local
|
||||
it_remote = lt_remote
|
||||
it_delta = lt_delta ).
|
||||
|
||||
|
@ -4825,6 +4860,21 @@ CLASS lcl_object_wdyn IMPLEMENTATION.
|
|||
ENDCASE.
|
||||
ENDLOOP.
|
||||
|
||||
SORT rs_component-ctlr_metadata BY
|
||||
definition-component_name ASCENDING
|
||||
definition-controller_name ASCENDING.
|
||||
|
||||
SORT gt_components BY
|
||||
component_name ASCENDING
|
||||
controller_name ASCENDING
|
||||
cmpname ASCENDING.
|
||||
|
||||
SORT gt_sources BY
|
||||
component_name ASCENDING
|
||||
controller_name ASCENDING
|
||||
cmpname ASCENDING
|
||||
line_number ASCENDING.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD serialize.
|
||||
|
@ -6180,7 +6230,8 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
lt_dd35v TYPE TABLE OF dd35v,
|
||||
lt_dd36m TYPE dd36mttyp.
|
||||
|
||||
FIELD-SYMBOLS: <ls_dd12v> LIKE LINE OF lt_dd12v.
|
||||
FIELD-SYMBOLS: <ls_dd12v> LIKE LINE OF lt_dd12v,
|
||||
<ls_dd03p> LIKE LINE OF lt_dd03p.
|
||||
|
||||
|
||||
lv_name = is_item-obj_name.
|
||||
|
@ -6224,6 +6275,16 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
<ls_dd12v>-as4time.
|
||||
ENDLOOP.
|
||||
|
||||
LOOP AT lt_dd03p ASSIGNING <ls_dd03p> WHERE NOT rollname IS INITIAL.
|
||||
CLEAR: <ls_dd03p>-ddlanguage,
|
||||
<ls_dd03p>-dtelmaster,
|
||||
<ls_dd03p>-ddtext,
|
||||
<ls_dd03p>-reptext,
|
||||
<ls_dd03p>-scrtext_s,
|
||||
<ls_dd03p>-scrtext_m,
|
||||
<ls_dd03p>-scrtext_l.
|
||||
ENDLOOP.
|
||||
|
||||
CREATE OBJECT lo_xml.
|
||||
lo_xml->structure_add( ls_dd02v ).
|
||||
lo_xml->structure_add( ls_dd09l ).
|
||||
|
@ -10232,11 +10293,11 @@ CLASS lcl_pack IMPLEMENTATION.
|
|||
lv_data = lv_data+4. " skip adler checksum
|
||||
|
||||
ELSEIF lv_zlib = c_zlib_hmm.
|
||||
* this takes some processing, when time permits, implement DEFLATE algorithm
|
||||
* this takes some processing. When time permits: implement DEFLATE algorithm
|
||||
* cl_abap_gzip copmression works for '789C', but does not produce the same
|
||||
* result when '7801'
|
||||
* compressed data might be larger than origial so add 10, adding 10 is safe
|
||||
* as package always ends with sha1 checksum
|
||||
* as package always ends with SHA1 checksum
|
||||
DO lv_expected + 10 TIMES.
|
||||
lv_compressed_len = sy-index.
|
||||
|
||||
|
@ -12084,7 +12145,7 @@ CLASS lcl_gui DEFINITION FINAL.
|
|||
|
||||
CLASS-METHODS render_diff
|
||||
IMPORTING is_result TYPE st_result
|
||||
it_diffs TYPE tt_diffs.
|
||||
io_diff TYPE REF TO lcl_diff.
|
||||
|
||||
CLASS-METHODS struct_encode
|
||||
IMPORTING ig_structure1 TYPE any
|
||||
|
@ -12191,7 +12252,7 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
DATA: lt_remote TYPE tt_files,
|
||||
lt_local TYPE tt_files,
|
||||
ls_item TYPE st_item,
|
||||
lt_diffs TYPE tt_diffs.
|
||||
lo_diff TYPE REF TO lcl_diff.
|
||||
|
||||
FIELD-SYMBOLS: <ls_remote> LIKE LINE OF lt_remote,
|
||||
<ls_local> LIKE LINE OF lt_local.
|
||||
|
@ -12217,11 +12278,13 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
_raise 'not found locally'.
|
||||
ENDIF.
|
||||
|
||||
lt_diffs = lcl_diff=>diff( iv_local = <ls_local>-data
|
||||
iv_remote = <ls_remote>-data ).
|
||||
CREATE OBJECT lo_diff
|
||||
EXPORTING
|
||||
iv_local = <ls_local>-data
|
||||
iv_remote = <ls_remote>-data.
|
||||
|
||||
render_diff( is_result = is_result
|
||||
it_diffs = lt_diffs ).
|
||||
io_diff = lo_diff ).
|
||||
|
||||
ENDMETHOD. "diff
|
||||
|
||||
|
@ -12231,9 +12294,11 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
lv_local TYPE string,
|
||||
lv_remote TYPE string,
|
||||
lv_clocal TYPE string,
|
||||
lv_cremote TYPE string.
|
||||
lv_cremote TYPE string,
|
||||
ls_count TYPE lcl_diff=>st_count,
|
||||
lt_diffs TYPE lcl_diff=>tt_diffs.
|
||||
|
||||
FIELD-SYMBOLS: <ls_diff> LIKE LINE OF it_diffs.
|
||||
FIELD-SYMBOLS: <ls_diff> LIKE LINE OF lt_diffs.
|
||||
|
||||
|
||||
lv_html = render_header( ) &&
|
||||
|
@ -12243,6 +12308,29 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
is_result-obj_name && ' ' &&
|
||||
is_result-filename && '</h3><br><br>'.
|
||||
|
||||
ls_count = io_diff->count( ).
|
||||
lv_html = lv_html &&
|
||||
'<table border="1">' && gc_newline &&
|
||||
'<tr>' && gc_newline &&
|
||||
'<td>Insert</td>' && gc_newline &&
|
||||
'<td>' &&
|
||||
ls_count-insert &&
|
||||
'</td>' && gc_newline &&
|
||||
'</tr>' && gc_newline &&
|
||||
'<tr>' && gc_newline &&
|
||||
'<td>Delete</td>' && gc_newline &&
|
||||
'<td>' &&
|
||||
ls_count-delete &&
|
||||
'</td>' && gc_newline &&
|
||||
'</tr>' && gc_newline &&
|
||||
'<tr>' && gc_newline &&
|
||||
'<td>Update</td>' && gc_newline &&
|
||||
'<td>' &&
|
||||
ls_count-update &&
|
||||
'</td>' && gc_newline &&
|
||||
'</tr>' && gc_newline &&
|
||||
'</table><br>' && gc_newline.
|
||||
|
||||
lv_html = lv_html &&
|
||||
'<table border="0">' && gc_newline &&
|
||||
'<tr>' && gc_newline &&
|
||||
|
@ -12251,18 +12339,19 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
'<td><h2>Remote</h2></td>' && gc_newline &&
|
||||
'</tr>'.
|
||||
|
||||
LOOP AT it_diffs ASSIGNING <ls_diff>.
|
||||
lt_diffs = io_diff->get( ).
|
||||
LOOP AT lt_diffs ASSIGNING <ls_diff>.
|
||||
lv_local = escape( val = <ls_diff>-local format = cl_abap_format=>e_html_attr ).
|
||||
lv_remote = escape( val = <ls_diff>-remote format = cl_abap_format=>e_html_attr ).
|
||||
|
||||
CASE <ls_diff>-result.
|
||||
WHEN gc_diff-insert.
|
||||
WHEN lcl_diff=>gc_diff-insert.
|
||||
lv_clocal = ' style="background:lightgreen;"'. "#EC NOTEXT
|
||||
lv_cremote = ''.
|
||||
WHEN gc_diff-delete.
|
||||
WHEN lcl_diff=>gc_diff-delete.
|
||||
lv_clocal = ''.
|
||||
lv_cremote = ' style="background:lightpink;"'. "#EC NOTEXT
|
||||
WHEN gc_diff-update.
|
||||
WHEN lcl_diff=>gc_diff-update.
|
||||
lv_clocal = ' style="background:lightgreen;"'. "#EC NOTEXT
|
||||
lv_cremote = ' style="background:lightpink;"'. "#EC NOTEXT
|
||||
WHEN OTHERS.
|
||||
|
@ -13469,7 +13558,7 @@ CLASS ltcl_diff DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT FINAL.
|
|||
PRIVATE SECTION.
|
||||
DATA: mt_local TYPE TABLE OF string,
|
||||
mt_remote TYPE TABLE OF string,
|
||||
mt_expected TYPE tt_diffs,
|
||||
mt_expected TYPE lcl_diff=>tt_diffs,
|
||||
ms_expected LIKE LINE OF mt_expected.
|
||||
|
||||
METHODS: setup.
|
||||
|
@ -13515,7 +13604,8 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
lv_xlocal TYPE xstring,
|
||||
lv_remote TYPE string,
|
||||
lv_xremote TYPE xstring,
|
||||
lt_diff TYPE tt_diffs.
|
||||
lo_diff TYPE REF TO lcl_diff,
|
||||
lt_diff TYPE lcl_diff=>tt_diffs.
|
||||
|
||||
|
||||
CONCATENATE LINES OF mt_local INTO lv_local SEPARATED BY gc_newline.
|
||||
|
@ -13524,8 +13614,12 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
lv_xlocal = lcl_convert=>string_to_xstring_utf8( lv_local ).
|
||||
lv_xremote = lcl_convert=>string_to_xstring_utf8( lv_remote ).
|
||||
|
||||
lt_diff = lcl_diff=>diff( iv_local = lv_xlocal
|
||||
iv_remote = lv_xremote ).
|
||||
CREATE OBJECT lo_diff
|
||||
EXPORTING
|
||||
iv_local = lv_xlocal
|
||||
iv_remote = lv_xremote.
|
||||
|
||||
lt_diff = lo_diff->get( ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals( act = lt_diff
|
||||
exp = mt_expected ).
|
||||
|
@ -13537,7 +13631,7 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
* insert
|
||||
_local '1'.
|
||||
_expected '1' gc_diff-insert ''.
|
||||
_expected '1' lcl_diff=>gc_diff-insert ''.
|
||||
test( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -13556,7 +13650,7 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
* delete
|
||||
_remote '1'.
|
||||
_expected '' gc_diff-delete '1'.
|
||||
_expected '' lcl_diff=>gc_diff-delete '1'.
|
||||
test( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -13566,7 +13660,7 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
* update
|
||||
_local '1+'.
|
||||
_remote '1'.
|
||||
_expected '1+' gc_diff-update '1'.
|
||||
_expected '1+' lcl_diff=>gc_diff-update '1'.
|
||||
test( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -13599,9 +13693,9 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
_expected '1' '' '1'.
|
||||
_expected '2' '' '2'.
|
||||
_expected 'inserted' gc_diff-insert ''.
|
||||
_expected 'inserted' lcl_diff=>gc_diff-insert ''.
|
||||
_expected '3' '' '3'.
|
||||
_expected '4 update' gc_diff-update '4'.
|
||||
_expected '4 update' lcl_diff=>gc_diff-update '4'.
|
||||
|
||||
test( ).
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user