mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 11:46:38 +08:00
simple diff added
This commit is contained in:
parent
6a8773ddf9
commit
f8a04a6f96
544
zagit.abap
544
zagit.abap
|
@ -1,7 +1,7 @@
|
||||||
REPORT zabapgit.
|
REPORT zabapgit.
|
||||||
* todo, program header + license
|
* todo, program header + license
|
||||||
* todo, too many pulls, create repo object
|
* todo, too many pulls, create repo object
|
||||||
* todo, send client name via git protocol
|
* todo, list what will happen/has happened when doing pull
|
||||||
|
|
||||||
CONSTANTS: gc_version TYPE string VALUE 'alpha'. "#EC NOTEXT
|
CONSTANTS: gc_version TYPE string VALUE 'alpha'. "#EC NOTEXT
|
||||||
|
|
||||||
|
@ -56,9 +56,17 @@ TYPES: BEGIN OF st_result,
|
||||||
obj_type TYPE tadir-object,
|
obj_type TYPE tadir-object,
|
||||||
obj_name TYPE tadir-obj_name,
|
obj_name TYPE tadir-obj_name,
|
||||||
match TYPE abap_bool,
|
match TYPE abap_bool,
|
||||||
|
filename TYPE string,
|
||||||
END OF st_result.
|
END OF st_result.
|
||||||
TYPES: tt_results TYPE STANDARD TABLE OF st_result WITH DEFAULT KEY.
|
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_comment,
|
TYPES: BEGIN OF st_comment,
|
||||||
username TYPE string,
|
username TYPE string,
|
||||||
email TYPE string,
|
email TYPE string,
|
||||||
|
@ -309,7 +317,8 @@ CLASS lcl_xml DEFINITION FINAL.
|
||||||
METHODS xml_element IMPORTING iv_name TYPE string
|
METHODS xml_element IMPORTING iv_name TYPE string
|
||||||
RETURNING value(ri_element) TYPE REF TO if_ixml_element.
|
RETURNING value(ri_element) TYPE REF TO if_ixml_element.
|
||||||
|
|
||||||
METHODS xml_add IMPORTING ii_element TYPE REF TO if_ixml_element.
|
METHODS xml_add IMPORTING ii_root TYPE REF TO if_ixml_element OPTIONAL
|
||||||
|
ii_element TYPE REF TO if_ixml_element.
|
||||||
|
|
||||||
METHODS xml_find IMPORTING ii_root TYPE REF TO if_ixml_element OPTIONAL
|
METHODS xml_find IMPORTING ii_root TYPE REF TO if_ixml_element OPTIONAL
|
||||||
iv_name TYPE string
|
iv_name TYPE string
|
||||||
|
@ -380,6 +389,8 @@ CLASS lcl_xml IMPLEMENTATION.
|
||||||
<ls_comp> TYPE abap_compdescr.
|
<ls_comp> TYPE abap_compdescr.
|
||||||
|
|
||||||
|
|
||||||
|
CLEAR cg_structure.
|
||||||
|
|
||||||
lo_descr_ref ?= cl_abap_typedescr=>describe_by_data( cg_structure ).
|
lo_descr_ref ?= cl_abap_typedescr=>describe_by_data( cg_structure ).
|
||||||
lv_name = lo_descr_ref->get_relative_name( ).
|
lv_name = lo_descr_ref->get_relative_name( ).
|
||||||
IF lv_name IS INITIAL.
|
IF lv_name IS INITIAL.
|
||||||
|
@ -415,6 +426,8 @@ CLASS lcl_xml IMPLEMENTATION.
|
||||||
FIELD-SYMBOLS: <lg_line> TYPE any.
|
FIELD-SYMBOLS: <lg_line> TYPE any.
|
||||||
|
|
||||||
|
|
||||||
|
CLEAR ct_table[].
|
||||||
|
|
||||||
lo_table_descr ?= cl_abap_typedescr=>describe_by_data( ct_table ).
|
lo_table_descr ?= cl_abap_typedescr=>describe_by_data( ct_table ).
|
||||||
lv_name = lo_table_descr->get_relative_name( ).
|
lv_name = lo_table_descr->get_relative_name( ).
|
||||||
IF lv_name IS INITIAL.
|
IF lv_name IS INITIAL.
|
||||||
|
@ -426,11 +439,6 @@ CLASS lcl_xml IMPLEMENTATION.
|
||||||
IF NOT li_root IS BOUND.
|
IF NOT li_root IS BOUND.
|
||||||
RETURN.
|
RETURN.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
* IF ii_root IS BOUND.
|
|
||||||
* li_root = ii_root->find_from_name( depth = 0 name = lv_name ).
|
|
||||||
* ELSE.
|
|
||||||
* li_root = mi_root->find_from_name( depth = 0 name = lv_name ).
|
|
||||||
* ENDIF.
|
|
||||||
|
|
||||||
lv_kind = lo_table_descr->get_table_line_type( )->kind.
|
lv_kind = lo_table_descr->get_table_line_type( )->kind.
|
||||||
|
|
||||||
|
@ -547,16 +555,19 @@ CLASS lcl_xml IMPLEMENTATION.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
IF ii_root IS SUPPLIED.
|
xml_add( ii_root = ii_root
|
||||||
ii_root->append_child( li_table ).
|
ii_element = li_table ).
|
||||||
ELSE.
|
|
||||||
mi_root->append_child( li_table ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD. "table_add
|
ENDMETHOD. "table_add
|
||||||
|
|
||||||
METHOD xml_add.
|
METHOD xml_add.
|
||||||
|
|
||||||
|
IF ii_root IS BOUND.
|
||||||
|
ii_root->append_child( ii_element ).
|
||||||
|
ELSE.
|
||||||
mi_root->append_child( ii_element ).
|
mi_root->append_child( ii_element ).
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD. "xml_add
|
ENDMETHOD. "xml_add
|
||||||
|
|
||||||
METHOD element_add.
|
METHOD element_add.
|
||||||
|
@ -582,11 +593,8 @@ CLASS lcl_xml IMPLEMENTATION.
|
||||||
|
|
||||||
li_element->append_child( li_text ).
|
li_element->append_child( li_text ).
|
||||||
|
|
||||||
IF ii_root IS SUPPLIED.
|
xml_add( ii_root = ii_root
|
||||||
ii_root->append_child( li_element ).
|
ii_element = li_element ).
|
||||||
ELSE.
|
|
||||||
mi_root->append_child( li_element ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD. "element_add
|
ENDMETHOD. "element_add
|
||||||
|
|
||||||
|
@ -627,11 +635,8 @@ CLASS lcl_xml IMPLEMENTATION.
|
||||||
li_structure->append_child( li_element ).
|
li_structure->append_child( li_element ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
IF ii_root IS SUPPLIED.
|
xml_add( ii_root = ii_root
|
||||||
ii_root->append_child( li_structure ).
|
ii_element = li_structure ).
|
||||||
ELSE.
|
|
||||||
mi_root->append_child( li_structure ).
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
ENDMETHOD. "structure_to_xml
|
ENDMETHOD. "structure_to_xml
|
||||||
|
|
||||||
|
@ -669,6 +674,60 @@ CLASS lcl_time DEFINITION FINAL.
|
||||||
|
|
||||||
ENDCLASS. "lcl_time DEFINITION
|
ENDCLASS. "lcl_time DEFINITION
|
||||||
|
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
* CLASS lcl_time IMPLEMENTATION
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
*
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
CLASS lcl_time IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD get.
|
||||||
|
|
||||||
|
DATA: lv_i TYPE i,
|
||||||
|
lv_tz TYPE tznzone,
|
||||||
|
lv_utcdiff TYPE tznutcdiff,
|
||||||
|
lv_utcsign TYPE tznutcsign.
|
||||||
|
|
||||||
|
|
||||||
|
lv_i = sy-datum - c_epoch.
|
||||||
|
lv_i = lv_i * 86400.
|
||||||
|
lv_i = lv_i + sy-uzeit.
|
||||||
|
|
||||||
|
CALL FUNCTION 'TZON_GET_OS_TIMEZONE'
|
||||||
|
IMPORTING
|
||||||
|
ef_timezone = lv_tz.
|
||||||
|
|
||||||
|
CALL FUNCTION 'TZON_GET_OFFSET'
|
||||||
|
EXPORTING
|
||||||
|
if_timezone = lv_tz
|
||||||
|
if_local_date = sy-datum
|
||||||
|
if_local_time = sy-uzeit
|
||||||
|
IMPORTING
|
||||||
|
ef_utcdiff = lv_utcdiff
|
||||||
|
ef_utcsign = lv_utcsign
|
||||||
|
EXCEPTIONS
|
||||||
|
conversion_error = 1
|
||||||
|
OTHERS = 2.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
_raise 'Timezone error'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
CASE lv_utcsign.
|
||||||
|
WHEN '+'.
|
||||||
|
lv_i = lv_i - lv_utcdiff.
|
||||||
|
WHEN '-'.
|
||||||
|
lv_i = lv_i + lv_utcdiff.
|
||||||
|
ENDCASE.
|
||||||
|
|
||||||
|
rv_time = lv_i.
|
||||||
|
CONDENSE rv_time.
|
||||||
|
rv_time+11 = lv_utcsign.
|
||||||
|
rv_time+12 = lv_utcdiff.
|
||||||
|
|
||||||
|
ENDMETHOD. "get
|
||||||
|
|
||||||
|
ENDCLASS. "lcl_time IMPLEMENTATION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
* CLASS lcl_repo DEFINITION
|
* CLASS lcl_repo DEFINITION
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -742,60 +801,6 @@ CLASS lcl_url IMPLEMENTATION.
|
||||||
|
|
||||||
ENDCLASS. "lcl_repo IMPLEMENTATION
|
ENDCLASS. "lcl_repo IMPLEMENTATION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
|
||||||
* CLASS lcl_time IMPLEMENTATION
|
|
||||||
*----------------------------------------------------------------------*
|
|
||||||
*
|
|
||||||
*----------------------------------------------------------------------*
|
|
||||||
CLASS lcl_time IMPLEMENTATION.
|
|
||||||
|
|
||||||
METHOD get.
|
|
||||||
|
|
||||||
DATA: lv_i TYPE i,
|
|
||||||
lv_tz TYPE tznzone,
|
|
||||||
lv_utcdiff TYPE tznutcdiff,
|
|
||||||
lv_utcsign TYPE tznutcsign.
|
|
||||||
|
|
||||||
|
|
||||||
lv_i = sy-datum - c_epoch.
|
|
||||||
lv_i = lv_i * 86400.
|
|
||||||
lv_i = lv_i + sy-uzeit.
|
|
||||||
|
|
||||||
CALL FUNCTION 'TZON_GET_OS_TIMEZONE'
|
|
||||||
IMPORTING
|
|
||||||
ef_timezone = lv_tz.
|
|
||||||
|
|
||||||
CALL FUNCTION 'TZON_GET_OFFSET'
|
|
||||||
EXPORTING
|
|
||||||
if_timezone = lv_tz
|
|
||||||
if_local_date = sy-datum
|
|
||||||
if_local_time = sy-uzeit
|
|
||||||
IMPORTING
|
|
||||||
ef_utcdiff = lv_utcdiff
|
|
||||||
ef_utcsign = lv_utcsign
|
|
||||||
EXCEPTIONS
|
|
||||||
conversion_error = 1
|
|
||||||
OTHERS = 2.
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
_raise 'Timezone error'.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
CASE lv_utcsign.
|
|
||||||
WHEN '+'.
|
|
||||||
lv_i = lv_i - lv_utcdiff.
|
|
||||||
WHEN '-'.
|
|
||||||
lv_i = lv_i + lv_utcdiff.
|
|
||||||
ENDCASE.
|
|
||||||
|
|
||||||
rv_time = lv_i.
|
|
||||||
CONDENSE rv_time.
|
|
||||||
rv_time+11 = lv_utcsign.
|
|
||||||
rv_time+12 = lv_utcdiff.
|
|
||||||
|
|
||||||
ENDMETHOD. "get
|
|
||||||
|
|
||||||
ENDCLASS. "lcl_time IMPLEMENTATION
|
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
* CLASS lcl_convert DEFINITION
|
* CLASS lcl_convert DEFINITION
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -956,6 +961,73 @@ INTERFACE lif_serialize.
|
||||||
|
|
||||||
ENDINTERFACE. "lif_serialize IMPLEMENTATION
|
ENDINTERFACE. "lif_serialize IMPLEMENTATION
|
||||||
|
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
* CLASS lcl_diff DEFINITION
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
*
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
CLASS lcl_diff DEFINITION FINAL.
|
||||||
|
|
||||||
|
PUBLIC SECTION.
|
||||||
|
* assumes data is UTF8 based with newlines
|
||||||
|
CLASS-METHODS diff IMPORTING iv_local TYPE xstring
|
||||||
|
iv_remote TYPE xstring
|
||||||
|
RETURNING value(rt_diffs) TYPE tt_diffs.
|
||||||
|
|
||||||
|
ENDCLASS. "lcl_diff DEFINITION
|
||||||
|
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
* CLASS lcl_diff IMPLEMENTATION
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
*
|
||||||
|
*----------------------------------------------------------------------*
|
||||||
|
CLASS lcl_diff IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD diff.
|
||||||
|
|
||||||
|
* todo, this is way too simple, but will do for now
|
||||||
|
|
||||||
|
DATA: lv_local TYPE string,
|
||||||
|
lv_remote TYPE string,
|
||||||
|
lt_local TYPE TABLE OF string,
|
||||||
|
lt_remote TYPE TABLE OF string.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <lv_string> TYPE string,
|
||||||
|
<ls_diff> LIKE LINE OF rt_diffs.
|
||||||
|
|
||||||
|
|
||||||
|
lv_local = lcl_convert=>xstring_to_string_utf8( iv_local ).
|
||||||
|
lv_remote = lcl_convert=>xstring_to_string_utf8( iv_remote ).
|
||||||
|
|
||||||
|
SPLIT lv_local AT gc_newline INTO TABLE lt_local.
|
||||||
|
SPLIT lv_remote AT gc_newline INTO TABLE lt_remote.
|
||||||
|
|
||||||
|
|
||||||
|
LOOP AT lt_local ASSIGNING <lv_string>.
|
||||||
|
APPEND INITIAL LINE TO rt_diffs ASSIGNING <ls_diff>.
|
||||||
|
<ls_diff>-local = <lv_string>.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
LOOP AT lt_remote ASSIGNING <lv_string>.
|
||||||
|
READ TABLE rt_diffs INDEX sy-tabix ASSIGNING <ls_diff>.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
APPEND INITIAL LINE TO rt_diffs ASSIGNING <ls_diff>.
|
||||||
|
ENDIF.
|
||||||
|
<ls_diff>-remote = <lv_string>.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
LOOP AT rt_diffs ASSIGNING <ls_diff>.
|
||||||
|
IF <ls_diff>-local = <ls_diff>-remote.
|
||||||
|
<ls_diff>-result = '='.
|
||||||
|
ELSE.
|
||||||
|
<ls_diff>-result = '!'.
|
||||||
|
ENDIF.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
ENDMETHOD. "diff
|
||||||
|
|
||||||
|
ENDCLASS. "lcl_diff IMPLEMENTATION
|
||||||
|
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
* CLASS lcl_serialize_prog DEFINITION
|
* CLASS lcl_serialize_prog DEFINITION
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
|
@ -978,11 +1050,6 @@ CLASS lcl_serialize_prog DEFINITION FINAL.
|
||||||
CLASS-METHODS: deserialize_dynpros IMPORTING io_xml TYPE REF TO lcl_xml
|
CLASS-METHODS: deserialize_dynpros IMPORTING io_xml TYPE REF TO lcl_xml
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
CLASS-METHODS: serialize_includes IMPORTING iv_program_name TYPE programm
|
|
||||||
io_xml TYPE REF TO lcl_xml
|
|
||||||
CHANGING ct_files TYPE tt_files
|
|
||||||
RAISING lcx_exception.
|
|
||||||
|
|
||||||
CLASS-METHODS: deserialize_abap IMPORTING iv_obj_name TYPE tadir-obj_name
|
CLASS-METHODS: deserialize_abap IMPORTING iv_obj_name TYPE tadir-obj_name
|
||||||
io_xml TYPE REF TO lcl_xml
|
io_xml TYPE REF TO lcl_xml
|
||||||
iv_abap TYPE string
|
iv_abap TYPE string
|
||||||
|
@ -1048,10 +1115,6 @@ CLASS lcl_serialize_prog IMPLEMENTATION.
|
||||||
lo_xml->table_add( lt_textelements ).
|
lo_xml->table_add( lt_textelements ).
|
||||||
|
|
||||||
IF ls_progdir-subc = '1'.
|
IF ls_progdir-subc = '1'.
|
||||||
serialize_includes( EXPORTING iv_program_name = lv_program_name
|
|
||||||
io_xml = lo_xml
|
|
||||||
CHANGING ct_files = rt_files ).
|
|
||||||
|
|
||||||
serialize_dynpros( EXPORTING iv_program_name = lv_program_name
|
serialize_dynpros( EXPORTING iv_program_name = lv_program_name
|
||||||
io_xml = lo_xml ).
|
io_xml = lo_xml ).
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
@ -1075,43 +1138,6 @@ CLASS lcl_serialize_prog IMPLEMENTATION.
|
||||||
|
|
||||||
ENDMETHOD. "lif_serialize~serialize
|
ENDMETHOD. "lif_serialize~serialize
|
||||||
|
|
||||||
METHOD serialize_includes.
|
|
||||||
|
|
||||||
DATA: lt_includes TYPE programt,
|
|
||||||
lt_files LIKE ct_files.
|
|
||||||
|
|
||||||
FIELD-SYMBOLS: <lv_include> LIKE LINE OF lt_includes.
|
|
||||||
|
|
||||||
|
|
||||||
CALL FUNCTION 'RS_GET_ALL_INCLUDES'
|
|
||||||
EXPORTING
|
|
||||||
program = iv_program_name
|
|
||||||
TABLES
|
|
||||||
includetab = lt_includes
|
|
||||||
EXCEPTIONS
|
|
||||||
not_existent = 1
|
|
||||||
no_program = 2
|
|
||||||
OTHERS = 3.
|
|
||||||
IF sy-subrc <> 0.
|
|
||||||
_raise 'Error from get_all_includes'.
|
|
||||||
ENDIF.
|
|
||||||
|
|
||||||
LOOP AT lt_includes ASSIGNING <lv_include>.
|
|
||||||
IF NOT <lv_include> CP 'Z*' AND NOT <lv_include> CP 'Y*'.
|
|
||||||
DELETE lt_includes INDEX sy-tabix.
|
|
||||||
ENDIF.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
* todo, not sure it is needed to add this to the xml
|
|
||||||
io_xml->table_add( lt_includes ).
|
|
||||||
|
|
||||||
LOOP AT lt_includes ASSIGNING <lv_include>.
|
|
||||||
lt_files = lif_serialize~serialize( <lv_include> ).
|
|
||||||
APPEND LINES OF lt_files TO ct_files.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
ENDMETHOD. "serialize_includes
|
|
||||||
|
|
||||||
METHOD serialize_dynpros.
|
METHOD serialize_dynpros.
|
||||||
|
|
||||||
DATA: ls_header TYPE rpy_dyhead,
|
DATA: ls_header TYPE rpy_dyhead,
|
||||||
|
@ -1240,7 +1266,30 @@ CLASS lcl_serialize_prog IMPLEMENTATION.
|
||||||
CHANGING ct_table = lt_fields_to_containers ).
|
CHANGING ct_table = lt_fields_to_containers ).
|
||||||
io_xml->table_read( EXPORTING ii_root = li_element
|
io_xml->table_read( EXPORTING ii_root = li_element
|
||||||
CHANGING ct_table = lt_flow_logic ).
|
CHANGING ct_table = lt_flow_logic ).
|
||||||
BREAK-POINT.
|
|
||||||
|
CALL FUNCTION 'RPY_DYNPRO_INSERT'
|
||||||
|
EXPORTING
|
||||||
|
header = ls_header
|
||||||
|
TABLES
|
||||||
|
containers = lt_containers
|
||||||
|
fields_to_containers = lt_fields_to_containers
|
||||||
|
flow_logic = lt_flow_logic
|
||||||
|
EXCEPTIONS
|
||||||
|
cancelled = 1
|
||||||
|
already_exists = 2
|
||||||
|
program_not_exists = 3
|
||||||
|
not_executed = 4
|
||||||
|
missing_required_field = 5
|
||||||
|
illegal_field_value = 6
|
||||||
|
field_not_allowed = 7
|
||||||
|
not_generated = 8
|
||||||
|
illegal_field_position = 9
|
||||||
|
OTHERS = 10.
|
||||||
|
IF sy-subrc <> 2 AND sy-subrc <> 0.
|
||||||
|
_raise 'error from RPY_DYNPRO_INSERT'.
|
||||||
|
ENDIF.
|
||||||
|
* todo, RPY_DYNPRO_UPDATE?
|
||||||
|
|
||||||
ENDDO.
|
ENDDO.
|
||||||
|
|
||||||
ENDMETHOD. "deserialize_dynpros
|
ENDMETHOD. "deserialize_dynpros
|
||||||
|
@ -1358,7 +1407,7 @@ CLASS lcl_serialize DEFINITION FINAL.
|
||||||
|
|
||||||
CLASS-METHODS compare_files
|
CLASS-METHODS compare_files
|
||||||
IMPORTING it_repo TYPE tt_files
|
IMPORTING it_repo TYPE tt_files
|
||||||
it_sap TYPE tt_files
|
is_gen TYPE st_file
|
||||||
RETURNING value(rv_match) TYPE abap_bool
|
RETURNING value(rv_match) TYPE abap_bool
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
@ -1401,7 +1450,8 @@ CLASS lcl_serialize IMPLEMENTATION.
|
||||||
lv_type TYPE string,
|
lv_type TYPE string,
|
||||||
lv_ext TYPE string.
|
lv_ext TYPE string.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_file> LIKE LINE OF it_files.
|
FIELD-SYMBOLS: <ls_file> LIKE LINE OF it_files,
|
||||||
|
<ls_gen> LIKE LINE OF lt_files.
|
||||||
|
|
||||||
|
|
||||||
LOOP AT it_files ASSIGNING <ls_file>.
|
LOOP AT it_files ASSIGNING <ls_file>.
|
||||||
|
@ -1419,16 +1469,22 @@ CLASS lcl_serialize IMPLEMENTATION.
|
||||||
|
|
||||||
CASE lv_type.
|
CASE lv_type.
|
||||||
WHEN 'PROG'.
|
WHEN 'PROG'.
|
||||||
IF lcl_serialize_prog=>exists( lv_pre ) = abap_true.
|
|
||||||
lt_files = lcl_serialize_prog=>serialize( lv_pre ).
|
lt_files = lcl_serialize_prog=>serialize( lv_pre ).
|
||||||
ls_result-match = compare_files( it_repo = it_files it_sap = lt_files ).
|
|
||||||
ENDIF.
|
|
||||||
WHEN OTHERS.
|
WHEN OTHERS.
|
||||||
_raise 'status, unknown type'.
|
_raise 'status, unknown type'.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
|
LOOP AT lt_files ASSIGNING <ls_gen>.
|
||||||
|
ls_result-filename = <ls_gen>-filename.
|
||||||
|
ls_result-match = compare_files( it_repo = it_files is_gen = <ls_gen> ).
|
||||||
APPEND ls_result TO rt_results.
|
APPEND ls_result TO rt_results.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
ENDLOOP.
|
||||||
|
|
||||||
|
SORT rt_results BY obj_type obj_name filename.
|
||||||
|
DELETE ADJACENT DUPLICATES FROM rt_results
|
||||||
|
COMPARING obj_type obj_name filename.
|
||||||
|
|
||||||
* todo, how to handle deleted in repo?
|
* todo, how to handle deleted in repo?
|
||||||
|
|
||||||
|
@ -1464,21 +1520,15 @@ CLASS lcl_serialize IMPLEMENTATION.
|
||||||
|
|
||||||
METHOD compare_files.
|
METHOD compare_files.
|
||||||
|
|
||||||
FIELD-SYMBOLS: <ls_sap> TYPE st_file.
|
READ TABLE it_repo WITH KEY path = is_gen-path
|
||||||
|
filename = is_gen-filename
|
||||||
|
data = is_gen-data
|
||||||
LOOP AT it_sap ASSIGNING <ls_sap>.
|
|
||||||
READ TABLE it_repo WITH KEY path = <ls_sap>-path
|
|
||||||
filename = <ls_sap>-filename
|
|
||||||
data = <ls_sap>-data
|
|
||||||
TRANSPORTING NO FIELDS.
|
TRANSPORTING NO FIELDS.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
rv_match = abap_false.
|
rv_match = abap_false.
|
||||||
RETURN.
|
ELSE.
|
||||||
ENDIF.
|
|
||||||
ENDLOOP.
|
|
||||||
|
|
||||||
rv_match = abap_true.
|
rv_match = abap_true.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
ENDMETHOD. "compare_files
|
ENDMETHOD. "compare_files
|
||||||
|
|
||||||
|
@ -2522,13 +2572,13 @@ ENDCLASS. "lcl_persistence IMPLEMENTATION
|
||||||
CLASS lcl_transport DEFINITION FINAL.
|
CLASS lcl_transport DEFINITION FINAL.
|
||||||
|
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
* from GitHub to SAP
|
* remote to local
|
||||||
CLASS-METHODS upload_pack IMPORTING is_repo TYPE st_repo
|
CLASS-METHODS upload_pack IMPORTING is_repo TYPE st_repo
|
||||||
EXPORTING ev_pack TYPE xstring
|
EXPORTING ev_pack TYPE xstring
|
||||||
ev_branch TYPE t_sha1
|
ev_branch TYPE t_sha1
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
* from SAP to GitHub
|
* local to remote
|
||||||
CLASS-METHODS receive_pack IMPORTING is_repo TYPE st_repo
|
CLASS-METHODS receive_pack IMPORTING is_repo TYPE st_repo
|
||||||
iv_commit TYPE t_sha1
|
iv_commit TYPE t_sha1
|
||||||
iv_pack TYPE xstring
|
iv_pack TYPE xstring
|
||||||
|
@ -2713,7 +2763,7 @@ CLASS lcl_transport IMPLEMENTATION.
|
||||||
is_repo-branch_name &&
|
is_repo-branch_name &&
|
||||||
get_null( ) &&
|
get_null( ) &&
|
||||||
` ` &&
|
` ` &&
|
||||||
'report-status' &&
|
'report-status agent=abapGit/' && gc_version &&
|
||||||
gc_newline. "#EC NOTEXT
|
gc_newline. "#EC NOTEXT
|
||||||
lv_cmd_pkt = pkt_string( lv_line ).
|
lv_cmd_pkt = pkt_string( lv_line ).
|
||||||
|
|
||||||
|
@ -2821,7 +2871,7 @@ CLASS lcl_transport IMPLEMENTATION.
|
||||||
` ` &&
|
` ` &&
|
||||||
ev_branch &&
|
ev_branch &&
|
||||||
` ` &&
|
` ` &&
|
||||||
'side-band-64k no-progress'
|
'side-band-64k no-progress agent=abapGit/' && gc_version
|
||||||
&& gc_newline. "#EC NOTEXT
|
&& gc_newline. "#EC NOTEXT
|
||||||
lv_pkt = pkt_string( lv_line ).
|
lv_pkt = pkt_string( lv_line ).
|
||||||
|
|
||||||
|
@ -3124,7 +3174,7 @@ CLASS lcl_gui DEFINITION FINAL.
|
||||||
PUBLIC SECTION.
|
PUBLIC SECTION.
|
||||||
CLASS-METHODS: run RAISING lcx_exception.
|
CLASS-METHODS: run RAISING lcx_exception.
|
||||||
|
|
||||||
CLASS-METHODS: on_sapevent
|
CLASS-METHODS: on_event
|
||||||
FOR EVENT sapevent OF cl_gui_html_viewer
|
FOR EVENT sapevent OF cl_gui_html_viewer
|
||||||
IMPORTING action frame getdata postdata query_table. "#EC NEEDED
|
IMPORTING action frame getdata postdata query_table. "#EC NEEDED
|
||||||
|
|
||||||
|
@ -3146,6 +3196,12 @@ CLASS lcl_gui DEFINITION FINAL.
|
||||||
RETURNING value(rv_html) TYPE string
|
RETURNING value(rv_html) TYPE string
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS: render_header
|
||||||
|
RETURNING value(rv_html) TYPE string.
|
||||||
|
|
||||||
|
CLASS-METHODS: render_footer
|
||||||
|
RETURNING value(rv_html) TYPE string.
|
||||||
|
|
||||||
CLASS-METHODS: install
|
CLASS-METHODS: install
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
@ -3161,8 +3217,19 @@ CLASS lcl_gui DEFINITION FINAL.
|
||||||
IMPORTING is_repo TYPE st_repo
|
IMPORTING is_repo TYPE st_repo
|
||||||
RAISING lcx_exception.
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS: diff
|
||||||
|
IMPORTING is_result TYPE st_result
|
||||||
|
is_repo TYPE st_repo
|
||||||
|
RAISING lcx_exception.
|
||||||
|
|
||||||
|
CLASS-METHODS render_diff IMPORTING is_result TYPE st_result
|
||||||
|
it_diffs TYPE tt_diffs.
|
||||||
|
|
||||||
|
CLASS-METHODS fix_prefix_spaces CHANGING cv_value TYPE string.
|
||||||
|
|
||||||
CLASS-METHODS: struct_encode
|
CLASS-METHODS: struct_encode
|
||||||
IMPORTING ig_structure TYPE any
|
IMPORTING ig_structure1 TYPE any
|
||||||
|
ig_structure2 TYPE any OPTIONAL
|
||||||
RETURNING value(rv_string) TYPE string.
|
RETURNING value(rv_string) TYPE string.
|
||||||
|
|
||||||
CLASS-METHODS: struct_decode
|
CLASS-METHODS: struct_decode
|
||||||
|
@ -3183,6 +3250,118 @@ ENDCLASS. "lcl_gui DEFINITION
|
||||||
*----------------------------------------------------------------------*
|
*----------------------------------------------------------------------*
|
||||||
CLASS lcl_gui IMPLEMENTATION.
|
CLASS lcl_gui IMPLEMENTATION.
|
||||||
|
|
||||||
|
METHOD render_header.
|
||||||
|
|
||||||
|
rv_html = '<html>' && gc_newline &&
|
||||||
|
'<head>' && gc_newline &&
|
||||||
|
'<title>abapGit</title>' && gc_newline &&
|
||||||
|
render_css( ) && gc_newline &&
|
||||||
|
'<meta http-equiv="content-type" content="text/html; charset=utf-8">' && gc_newline &&
|
||||||
|
'</head>' && gc_newline &&
|
||||||
|
'<body>'.
|
||||||
|
|
||||||
|
ENDMETHOD. "render_head
|
||||||
|
|
||||||
|
METHOD diff.
|
||||||
|
|
||||||
|
DATA: lt_remote TYPE tt_files,
|
||||||
|
lt_local TYPE tt_files,
|
||||||
|
lt_diffs TYPE tt_diffs.
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_remote> LIKE LINE OF lt_remote,
|
||||||
|
<ls_local> LIKE LINE OF lt_local.
|
||||||
|
|
||||||
|
|
||||||
|
lcl_porcelain=>pull( EXPORTING is_repo = is_repo
|
||||||
|
IMPORTING et_files = lt_remote ).
|
||||||
|
|
||||||
|
lt_local = lcl_serialize=>serialize( iv_obj_type = is_result-obj_type
|
||||||
|
iv_obj_name = is_result-obj_name ).
|
||||||
|
|
||||||
|
READ TABLE lt_remote ASSIGNING <ls_remote>
|
||||||
|
WITH KEY filename = is_result-filename.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
_raise 'not found remotely'.
|
||||||
|
ENDIF.
|
||||||
|
READ TABLE lt_local ASSIGNING <ls_local>
|
||||||
|
WITH KEY filename = is_result-filename.
|
||||||
|
IF sy-subrc <> 0.
|
||||||
|
_raise 'not found locally'.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
|
lt_diffs = lcl_diff=>diff( iv_local = <ls_local>-data
|
||||||
|
iv_remote = <ls_remote>-data ).
|
||||||
|
|
||||||
|
render_diff( is_result = is_result
|
||||||
|
it_diffs = lt_diffs ).
|
||||||
|
|
||||||
|
ENDMETHOD. "diff
|
||||||
|
|
||||||
|
METHOD fix_prefix_spaces.
|
||||||
|
|
||||||
|
DATA: lv_char TYPE c LENGTH 1,
|
||||||
|
lv_count TYPE i.
|
||||||
|
|
||||||
|
* todo, this must be easier somehow, regex?
|
||||||
|
lv_count = 0.
|
||||||
|
DO.
|
||||||
|
IF strlen( cv_value ) = 0.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
lv_char = cv_value(1).
|
||||||
|
IF lv_char = space.
|
||||||
|
cv_value = cv_value+1.
|
||||||
|
lv_count = lv_count + 1.
|
||||||
|
ELSE.
|
||||||
|
EXIT.
|
||||||
|
ENDIF.
|
||||||
|
ENDDO.
|
||||||
|
DO lv_count TIMES.
|
||||||
|
CONCATENATE ' ' cv_value INTO cv_value.
|
||||||
|
ENDDO.
|
||||||
|
|
||||||
|
ENDMETHOD. "fix_prefix_spaces
|
||||||
|
|
||||||
|
METHOD render_diff.
|
||||||
|
|
||||||
|
DATA: lv_html TYPE string,
|
||||||
|
lv_local TYPE string,
|
||||||
|
lv_remote TYPE string.
|
||||||
|
|
||||||
|
|
||||||
|
FIELD-SYMBOLS: <ls_diff> LIKE LINE OF it_diffs.
|
||||||
|
|
||||||
|
|
||||||
|
lv_html = render_header( ) &&
|
||||||
|
'<h1>diff</h1> <a href="sapevent:refresh">Back</a>' &&
|
||||||
|
'<hr><h3>' &&
|
||||||
|
is_result-obj_type && ' ' &&
|
||||||
|
is_result-obj_name && ' ' &&
|
||||||
|
is_result-filename && '</h3><br><br>'.
|
||||||
|
|
||||||
|
lv_html = lv_html && '<table border="0">' && gc_newline &&
|
||||||
|
'<tr><td><h2>Local</h2></td><td></td><td><h2>Remote</h2></td></tr>'.
|
||||||
|
|
||||||
|
LOOP AT it_diffs ASSIGNING <ls_diff>.
|
||||||
|
lv_local = escape( val = <ls_diff>-local format = cl_abap_format=>e_html_attr ).
|
||||||
|
fix_prefix_spaces( CHANGING cv_value = lv_local ).
|
||||||
|
lv_remote = escape( val = <ls_diff>-remote format = cl_abap_format=>e_html_attr ).
|
||||||
|
fix_prefix_spaces( CHANGING cv_value = lv_remote ).
|
||||||
|
|
||||||
|
lv_html = lv_html &&
|
||||||
|
'<tr>' && gc_newline &&
|
||||||
|
'<td><tt>' && lv_local && '</tt></td>' && gc_newline &&
|
||||||
|
'<td> ' && <ls_diff>-result && ' </td>' && gc_newline &&
|
||||||
|
'<td><tt>' && lv_remote && '</tt></td>' && gc_newline &&
|
||||||
|
'</tr>' && gc_newline.
|
||||||
|
ENDLOOP.
|
||||||
|
lv_html = lv_html && '</table>' && gc_newline.
|
||||||
|
|
||||||
|
lv_html = lv_html && render_footer( ).
|
||||||
|
view( lv_html ).
|
||||||
|
|
||||||
|
ENDMETHOD. "render_diff
|
||||||
|
|
||||||
METHOD popup_comment.
|
METHOD popup_comment.
|
||||||
|
|
||||||
DATA: lv_returncode TYPE c,
|
DATA: lv_returncode TYPE c,
|
||||||
|
@ -3324,7 +3503,7 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
LOOP AT lt_fields ASSIGNING <ls_field>.
|
LOOP AT lt_fields ASSIGNING <ls_field>.
|
||||||
ASSIGN COMPONENT <ls_field>-name OF STRUCTURE cg_structure TO <lg_any>.
|
ASSIGN COMPONENT <ls_field>-name OF STRUCTURE cg_structure TO <lg_any>.
|
||||||
IF sy-subrc <> 0.
|
IF sy-subrc <> 0.
|
||||||
_raise 'wrong field'.
|
CONTINUE. " more structures might be encoded in same string
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
<lg_any> = <ls_field>-value.
|
<lg_any> = <ls_field>-value.
|
||||||
|
@ -3342,11 +3521,11 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
<lg_any> TYPE any.
|
<lg_any> TYPE any.
|
||||||
|
|
||||||
|
|
||||||
lo_descr_ref ?= cl_abap_typedescr=>describe_by_data( ig_structure ).
|
lo_descr_ref ?= cl_abap_typedescr=>describe_by_data( ig_structure1 ).
|
||||||
|
|
||||||
LOOP AT lo_descr_ref->components ASSIGNING <ls_comp>.
|
LOOP AT lo_descr_ref->components ASSIGNING <ls_comp>.
|
||||||
|
|
||||||
ASSIGN COMPONENT <ls_comp>-name OF STRUCTURE ig_structure TO <lg_any>.
|
ASSIGN COMPONENT <ls_comp>-name OF STRUCTURE ig_structure1 TO <lg_any>.
|
||||||
ASSERT sy-subrc = 0.
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
ls_field-name = <ls_comp>-name.
|
ls_field-name = <ls_comp>-name.
|
||||||
|
@ -3354,12 +3533,27 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
APPEND ls_field TO lt_fields.
|
APPEND ls_field TO lt_fields.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
IF ig_structure2 IS SUPPLIED.
|
||||||
|
lo_descr_ref ?= cl_abap_typedescr=>describe_by_data( ig_structure2 ).
|
||||||
|
|
||||||
|
LOOP AT lo_descr_ref->components ASSIGNING <ls_comp>.
|
||||||
|
|
||||||
|
ASSIGN COMPONENT <ls_comp>-name OF STRUCTURE ig_structure2 TO <lg_any>.
|
||||||
|
ASSERT sy-subrc = 0.
|
||||||
|
|
||||||
|
ls_field-name = <ls_comp>-name.
|
||||||
|
ls_field-value = <lg_any>.
|
||||||
|
APPEND ls_field TO lt_fields.
|
||||||
|
ENDLOOP.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
rv_string = cl_http_utility=>if_http_utility~fields_to_string( lt_fields ).
|
rv_string = cl_http_utility=>if_http_utility~fields_to_string( lt_fields ).
|
||||||
ENDMETHOD. "encode_struct
|
ENDMETHOD. "encode_struct
|
||||||
|
|
||||||
METHOD on_sapevent.
|
METHOD on_event.
|
||||||
|
|
||||||
DATA: lx_exception TYPE REF TO lcx_exception,
|
DATA: lx_exception TYPE REF TO lcx_exception,
|
||||||
|
ls_result TYPE st_result,
|
||||||
ls_repo TYPE st_repo.
|
ls_repo TYPE st_repo.
|
||||||
|
|
||||||
|
|
||||||
|
@ -3382,6 +3576,13 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
struct_decode( EXPORTING iv_string = getdata
|
struct_decode( EXPORTING iv_string = getdata
|
||||||
CHANGING cg_structure = ls_repo ).
|
CHANGING cg_structure = ls_repo ).
|
||||||
commit( ls_repo ).
|
commit( ls_repo ).
|
||||||
|
WHEN 'diff'.
|
||||||
|
struct_decode( EXPORTING iv_string = getdata
|
||||||
|
CHANGING cg_structure = ls_result ).
|
||||||
|
struct_decode( EXPORTING iv_string = getdata
|
||||||
|
CHANGING cg_structure = ls_repo ).
|
||||||
|
diff( is_result = ls_result
|
||||||
|
is_repo = ls_repo ).
|
||||||
WHEN 'pull'.
|
WHEN 'pull'.
|
||||||
struct_decode( EXPORTING iv_string = getdata
|
struct_decode( EXPORTING iv_string = getdata
|
||||||
CHANGING cg_structure = ls_repo ).
|
CHANGING cg_structure = ls_repo ).
|
||||||
|
@ -3393,7 +3594,7 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
MESSAGE lx_exception->mv_text TYPE 'S' DISPLAY LIKE 'E'.
|
MESSAGE lx_exception->mv_text TYPE 'S' DISPLAY LIKE 'E'.
|
||||||
ENDTRY.
|
ENDTRY.
|
||||||
|
|
||||||
ENDMETHOD. "on_sapevent
|
ENDMETHOD. "on_event
|
||||||
|
|
||||||
METHOD add.
|
METHOD add.
|
||||||
|
|
||||||
|
@ -3537,13 +3738,7 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
|
|
||||||
lt_repos = lcl_persistence=>list( ).
|
lt_repos = lcl_persistence=>list( ).
|
||||||
|
|
||||||
rv_html = '<html>' && gc_newline &&
|
rv_html = render_header( ) &&
|
||||||
'<head>' && gc_newline &&
|
|
||||||
'<title>abapGit</title>' && gc_newline &&
|
|
||||||
render_css( ) && gc_newline &&
|
|
||||||
'<meta http-equiv="content-type" content="text/html; charset=utf-8">' && gc_newline &&
|
|
||||||
'</head>' && gc_newline &&
|
|
||||||
'<body>' && gc_newline &&
|
|
||||||
'<h1>abapGit</h1> ' && gc_newline &&
|
'<h1>abapGit</h1> ' && gc_newline &&
|
||||||
'<a href="sapevent:refresh">Refresh</a> ' && gc_newline &&
|
'<a href="sapevent:refresh">Refresh</a> ' && gc_newline &&
|
||||||
'<a href="sapevent:install">Clone</a> ' && gc_newline &&
|
'<a href="sapevent:install">Clone</a> ' && gc_newline &&
|
||||||
|
@ -3564,6 +3759,12 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
rv_html = rv_html && render_repo( ls_repo ).
|
rv_html = rv_html && render_repo( ls_repo ).
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
|
||||||
|
rv_html = rv_html && render_footer( ).
|
||||||
|
|
||||||
|
ENDMETHOD. "render
|
||||||
|
|
||||||
|
METHOD render_footer.
|
||||||
|
|
||||||
rv_html = rv_html &&
|
rv_html = rv_html &&
|
||||||
'<br><br><hr><center><h3>abapGit Version: ' &&
|
'<br><br><hr><center><h3>abapGit Version: ' &&
|
||||||
gc_version &&
|
gc_version &&
|
||||||
|
@ -3571,13 +3772,14 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
|
|
||||||
rv_html = rv_html && '</body></html>'.
|
rv_html = rv_html && '</body></html>'.
|
||||||
|
|
||||||
ENDMETHOD. "render
|
ENDMETHOD. "render_footer
|
||||||
|
|
||||||
METHOD render_repo.
|
METHOD render_repo.
|
||||||
|
|
||||||
DATA: lt_files TYPE tt_files,
|
DATA: lt_files TYPE tt_files,
|
||||||
ls_repo TYPE st_repo,
|
ls_repo TYPE st_repo,
|
||||||
lv_branch TYPE t_sha1,
|
lv_branch TYPE t_sha1,
|
||||||
|
lv_link TYPE string,
|
||||||
lv_status TYPE string,
|
lv_status TYPE string,
|
||||||
lt_results TYPE tt_results.
|
lt_results TYPE tt_results.
|
||||||
|
|
||||||
|
@ -3621,15 +3823,24 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
rv_html = rv_html && '<table border="1">' && gc_newline.
|
||||||
LOOP AT lt_results ASSIGNING <ls_result>.
|
LOOP AT lt_results ASSIGNING <ls_result>.
|
||||||
|
IF <ls_result>-match = abap_false.
|
||||||
|
lv_link = '<a href="sapevent:diff?' && struct_encode( ig_structure1 = <ls_result> ig_structure2 = is_repo ) && '">diff</a>'.
|
||||||
|
ELSE.
|
||||||
|
CLEAR lv_link.
|
||||||
|
ENDIF.
|
||||||
|
|
||||||
rv_html = rv_html &&
|
rv_html = rv_html &&
|
||||||
<ls_result>-obj_type &&
|
'<tr>' && gc_newline &&
|
||||||
' ' &&
|
'<td>' && <ls_result>-obj_type && '</td>' && gc_newline &&
|
||||||
<ls_result>-obj_name &&
|
'<td>' && <ls_result>-obj_name && '</td>' && gc_newline &&
|
||||||
' ' &&
|
'<td>' && <ls_result>-match && '</td>' && gc_newline &&
|
||||||
<ls_result>-match &&
|
'<td>' && <ls_result>-filename && '</td>' && gc_newline &&
|
||||||
'<br>'.
|
'<td>' && lv_link && '</td>' && gc_newline &&
|
||||||
|
'</tr>' && gc_newline.
|
||||||
ENDLOOP.
|
ENDLOOP.
|
||||||
|
rv_html = rv_html && '</table>' && gc_newline.
|
||||||
|
|
||||||
CASE lv_status.
|
CASE lv_status.
|
||||||
WHEN 'match'.
|
WHEN 'match'.
|
||||||
|
@ -3642,9 +3853,6 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
_raise 'status unknown'.
|
_raise 'status unknown'.
|
||||||
ENDCASE.
|
ENDCASE.
|
||||||
|
|
||||||
* todo, remove:
|
|
||||||
rv_html = rv_html && ' <a href="sapevent:pull?' && struct_encode( ls_repo ) && '">pull</a>'.
|
|
||||||
|
|
||||||
ENDMETHOD. "render_repo
|
ENDMETHOD. "render_repo
|
||||||
|
|
||||||
METHOD run.
|
METHOD run.
|
||||||
|
@ -3663,7 +3871,7 @@ CLASS lcl_gui IMPLEMENTATION.
|
||||||
APPEND ls_event TO lt_events.
|
APPEND ls_event TO lt_events.
|
||||||
go_html_viewer->set_registered_events( lt_events ).
|
go_html_viewer->set_registered_events( lt_events ).
|
||||||
|
|
||||||
SET HANDLER lcl_gui=>on_sapevent FOR go_html_viewer.
|
SET HANDLER lcl_gui=>on_event FOR go_html_viewer.
|
||||||
|
|
||||||
view( render( ) ).
|
view( render( ) ).
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user