mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
pull warning on dbchanges
This commit is contained in:
parent
a669d8d96b
commit
75c2c07095
|
@ -146,4 +146,8 @@ CLASS lcl_object_acid IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_acid IMPLEMENTATION
|
|
@ -119,4 +119,8 @@ CLASS lcl_object_auth IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_auth IMPLEMENTATION
|
|
@ -987,4 +987,8 @@ CLASS lcl_object_clas IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_CLAS IMPLEMENTATION
|
|
@ -151,4 +151,8 @@ CLASS lcl_object_doct IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_msag IMPLEMENTATION
|
|
@ -155,4 +155,8 @@ CLASS lcl_object_docv IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_msag IMPLEMENTATION
|
|
@ -343,4 +343,8 @@ CLASS lcl_object_doma IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize_texts
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_doma IMPLEMENTATION
|
|
@ -306,4 +306,8 @@ CLASS lcl_object_dtel IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_dtel IMPLEMENTATION
|
|
@ -416,4 +416,8 @@ CLASS lcl_object_enho IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_enho IMPLEMENTATION
|
|
@ -211,4 +211,8 @@ CLASS lcl_object_enhs IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_enhs
|
|
@ -173,4 +173,8 @@ CLASS lcl_object_enqu IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_enqu IMPLEMENTATION
|
|
@ -191,4 +191,8 @@ CLASS lcl_object_ensc IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_ensc
|
|
@ -652,4 +652,8 @@ CLASS lcl_object_fugr IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_fugr IMPLEMENTATION
|
|
@ -188,4 +188,8 @@ CLASS lcl_object_iarp IMPLEMENTATION.
|
|||
lcx_exception=>raise( 'todo, IARP, jump' ).
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_iarp IMPLEMENTATION
|
|
@ -188,4 +188,8 @@ CLASS lcl_object_iasp IMPLEMENTATION.
|
|||
lcx_exception=>raise( 'todo, IASP, jump' ).
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_iasp IMPLEMENTATION
|
|
@ -205,4 +205,8 @@ CLASS lcl_object_iatu IMPLEMENTATION.
|
|||
lcx_exception=>raise( 'todo, IATU, jump' ).
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_iatu IMPLEMENTATION
|
|
@ -179,6 +179,11 @@ CLASS lcl_object_msag IMPLEMENTATION.
|
|||
io_xml->add( ig_data = lt_source
|
||||
iv_name = 'T100' ).
|
||||
|
||||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_msag IMPLEMENTATION
|
|
@ -268,4 +268,8 @@ CLASS lcl_object_nrob IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_nrob IMPLEMENTATION
|
|
@ -147,4 +147,8 @@ CLASS lcl_object_para IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_para IMPLEMENTATION
|
|
@ -348,4 +348,8 @@ CLASS lcl_object_pinf IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_PINF IMPLEMENTATION
|
|
@ -161,4 +161,8 @@ CLASS lcl_object_prog IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "lif_serialize~deserialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_prog IMPLEMENTATION
|
|
@ -36,6 +36,7 @@ INCLUDE zabapgit_object_ssfo.
|
|||
INCLUDE zabapgit_object_ssst.
|
||||
INCLUDE zabapgit_object_susc.
|
||||
INCLUDE zabapgit_object_suso.
|
||||
INCLUDE zabapgit_object_tabl_valid.
|
||||
INCLUDE zabapgit_object_tabl.
|
||||
INCLUDE zabapgit_object_tobj.
|
||||
INCLUDE zabapgit_object_tran.
|
||||
|
|
|
@ -233,4 +233,8 @@ CLASS lcl_object_sfbf IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_SFBF IMPLEMENTATION
|
|
@ -207,4 +207,10 @@ CLASS lcl_object_sfbs IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
||||
ENDCLASS. "lcl_object_SFBS IMPLEMENTATION
|
|
@ -201,4 +201,8 @@ CLASS lcl_object_sfsw IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_sfsw IMPLEMENTATION
|
|
@ -330,4 +330,8 @@ CLASS lcl_object_shi3 IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_shi3 IMPLEMENTATION
|
|
@ -203,4 +203,8 @@ CLASS lcl_object_shlp IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_shlp IMPLEMENTATION
|
|
@ -418,4 +418,8 @@ CLASS lcl_object_sicf IMPLEMENTATION.
|
|||
lcx_exception=>raise( 'todo, SICF, jump' ).
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_sicf IMPLEMENTATION
|
|
@ -317,4 +317,8 @@ CLASS lcl_object_smim IMPLEMENTATION.
|
|||
lcx_exception=>raise( 'todo, SMIM, jump' ).
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_smim IMPLEMENTATION
|
|
@ -127,4 +127,8 @@ CLASS lcl_object_splo IMPLEMENTATION.
|
|||
lcx_exception=>raise( 'todo, jump, SPLO' ).
|
||||
ENDMETHOD. "lif_object~jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_splo IMPLEMENTATION
|
|
@ -238,4 +238,8 @@ CLASS lcl_object_ssfo IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_ssfo IMPLEMENTATION
|
|
@ -203,4 +203,8 @@ CLASS lcl_object_ssst IMPLEMENTATION.
|
|||
lcx_exception=>raise( 'todo' ).
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_ssst IMPLEMENTATION
|
|
@ -122,4 +122,8 @@ CLASS lcl_object_susc IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_susc IMPLEMENTATION
|
|
@ -169,4 +169,8 @@ CLASS lcl_object_suso IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_suso IMPLEMENTATION
|
|
@ -7,6 +7,7 @@
|
|||
*----------------------------------------------------------------------*
|
||||
*
|
||||
*----------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_object_tabl DEFINITION INHERITING FROM lcl_objects_super FINAL.
|
||||
|
||||
PUBLIC SECTION.
|
||||
|
@ -377,4 +378,32 @@ CLASS lcl_object_tabl IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
DATA: lo_table_validation TYPE REF TO lcl_object_tabl_validation,
|
||||
lo_local_version_output TYPE REF TO lcl_xml_output,
|
||||
lo_local_version_input TYPE REF TO lcl_xml_input,
|
||||
lv_validation_text TYPE string.
|
||||
|
||||
CREATE OBJECT lo_local_version_output.
|
||||
me->lif_object~serialize( lo_local_version_output ).
|
||||
|
||||
CREATE OBJECT lo_local_version_input
|
||||
EXPORTING
|
||||
iv_xml = lo_local_version_output->render( ).
|
||||
|
||||
CREATE OBJECT lo_table_validation.
|
||||
|
||||
lv_validation_text = lo_table_validation->validate(
|
||||
io_remote_version = io_remote_version_xml
|
||||
io_local_version = lo_local_version_input ).
|
||||
IF lv_validation_text IS NOT INITIAL.
|
||||
lv_validation_text = |Database Table { ms_item-obj_name }: { lv_validation_text }|.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_tabl_validation_dialog
|
||||
EXPORTING
|
||||
iv_message = lv_validation_text.
|
||||
ELSE.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_TABL IMPLEMENTATION
|
227
src/zabapgit_object_tabl_valid.prog.abap
Normal file
227
src/zabapgit_object_tabl_valid.prog.abap
Normal file
|
@ -0,0 +1,227 @@
|
|||
*&---------------------------------------------------------------------*
|
||||
*& Include zabapgit_object_tabl_valid
|
||||
*&---------------------------------------------------------------------*
|
||||
|
||||
CLASS lcl_object_tabl_validation DEFINITION.
|
||||
PUBLIC SECTION.
|
||||
METHODS validate
|
||||
IMPORTING
|
||||
io_remote_version TYPE REF TO lcl_xml_input
|
||||
io_local_version TYPE REF TO lcl_xml_input
|
||||
RETURNING
|
||||
VALUE(rv_message) TYPE string
|
||||
RAISING
|
||||
lcx_exception.
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_tabl_validation_dialog DEFINITION.
|
||||
PUBLIC SECTION.
|
||||
METHODS:
|
||||
constructor
|
||||
IMPORTING
|
||||
iv_message TYPE string.
|
||||
INTERFACES: lif_object_comparison_result.
|
||||
PRIVATE SECTION.
|
||||
DATA mv_message TYPE string.
|
||||
DATA mv_halt TYPE string.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_object_tabl_validation IMPLEMENTATION.
|
||||
|
||||
METHOD validate.
|
||||
DATA: lt_previous_table_fields TYPE TABLE OF dd03p,
|
||||
ls_previous_table_field LIKE LINE OF lt_previous_table_fields,
|
||||
lt_current_table_fields TYPE TABLE OF dd03p,
|
||||
ls_current_table_field LIKE LINE OF lt_current_table_fields.
|
||||
io_remote_version->read(
|
||||
EXPORTING
|
||||
iv_name = 'DD03P_TABLE'
|
||||
CHANGING
|
||||
cg_data = lt_previous_table_fields ).
|
||||
io_local_version->read(
|
||||
EXPORTING
|
||||
iv_name = 'DD03P_TABLE'
|
||||
CHANGING
|
||||
cg_data = lt_current_table_fields ).
|
||||
|
||||
LOOP AT lt_previous_table_fields INTO ls_previous_table_field.
|
||||
READ TABLE lt_current_table_fields WITH KEY fieldname = ls_previous_table_field-fieldname
|
||||
INTO ls_current_table_field.
|
||||
IF sy-subrc = 0.
|
||||
IF ls_current_table_field-rollname <> ls_previous_table_field-rollname.
|
||||
rv_message = 'Fields were changed. This may lead to inconsistencies.'.
|
||||
ENDIF.
|
||||
ELSE.
|
||||
rv_message = 'Fields were changed. This may lead to inconsistencies.'.
|
||||
ENDIF.
|
||||
ENDLOOP.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lcl_tabl_validation_dialog IMPLEMENTATION.
|
||||
METHOD constructor.
|
||||
mv_message = iv_message.
|
||||
ENDMETHOD.
|
||||
METHOD lif_object_comparison_result~is_result_complete_halt.
|
||||
rv_response = mv_halt.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_comparison_result~show_confirmation_dialog.
|
||||
DATA lv_answer TYPE string.
|
||||
TRY.
|
||||
lv_answer = lcl_popups=>popup_to_confirm(
|
||||
titlebar = 'Warning'
|
||||
text_question = mv_message
|
||||
text_button_1 = 'Abort'
|
||||
icon_button_1 = 'ICON_CANCEL'
|
||||
text_button_2 = 'Pull anyway'
|
||||
icon_button_2 = 'ICON_OKAY'
|
||||
default_button = '2'
|
||||
display_cancel_button = abap_false ).
|
||||
CATCH lcx_exception.
|
||||
mv_halt = abap_true.
|
||||
ENDTRY.
|
||||
|
||||
IF lv_answer = 1.
|
||||
mv_halt = abap_true.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
CLASS lct_table_validation DEFINITION FOR TESTING RISK LEVEL HARMLESS DURATION SHORT.
|
||||
PRIVATE SECTION.
|
||||
METHODS:
|
||||
setup,
|
||||
type_changed FOR TESTING RAISING lcx_exception,
|
||||
no_type_changes FOR TESTING RAISING lcx_exception,
|
||||
field_not_found FOR TESTING RAISING lcx_exception,
|
||||
no_fields_no_message FOR TESTING RAISING lcx_exception,
|
||||
create_xmls
|
||||
RAISING
|
||||
lcx_exception.
|
||||
DATA: mo_table_validator TYPE REF TO lcl_object_tabl_validation,
|
||||
mo_previous_version_out_xml TYPE REF TO lcl_xml_output,
|
||||
mo_previous_version_input_xml TYPE REF TO lcl_xml_input,
|
||||
mo_current_version_out_xml TYPE REF TO lcl_xml_output,
|
||||
mo_current_version_input_xml TYPE REF TO lcl_xml_input,
|
||||
mt_previous_table_fields TYPE TABLE OF dd03p,
|
||||
mt_current_table_fields TYPE TABLE OF dd03p,
|
||||
mv_validation_message TYPE string.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS lct_table_validation IMPLEMENTATION.
|
||||
METHOD setup.
|
||||
CREATE OBJECT mo_table_validator.
|
||||
ENDMETHOD.
|
||||
METHOD type_changed.
|
||||
DATA:
|
||||
ls_previous_table_field LIKE LINE OF mt_previous_table_fields,
|
||||
ls_current_table_field LIKE LINE OF mt_current_table_fields.
|
||||
|
||||
ls_previous_table_field-fieldname = 'FIELD1'.
|
||||
ls_previous_table_field-rollname = 'INT4'.
|
||||
APPEND ls_previous_table_field TO mt_previous_table_fields.
|
||||
|
||||
ls_current_table_field-fieldname = 'FIELD1'.
|
||||
ls_current_table_field-rollname = 'CHAR30'.
|
||||
APPEND ls_current_table_field TO mt_current_table_fields.
|
||||
|
||||
create_xmls( ).
|
||||
|
||||
mv_validation_message = mo_table_validator->validate(
|
||||
io_remote_version = mo_previous_version_input_xml
|
||||
io_local_version = mo_current_version_input_xml ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mv_validation_message
|
||||
exp = 'Fields were changed. This may lead to inconsistencies.' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD no_type_changes.
|
||||
DATA:
|
||||
ls_previous_table_field LIKE LINE OF mt_previous_table_fields,
|
||||
ls_current_table_field LIKE LINE OF mt_current_table_fields.
|
||||
|
||||
ls_previous_table_field-fieldname = 'FIELD1'.
|
||||
ls_previous_table_field-rollname = 'INT4'.
|
||||
APPEND ls_previous_table_field TO mt_previous_table_fields.
|
||||
|
||||
mt_current_table_fields = mt_previous_table_fields.
|
||||
|
||||
create_xmls( ).
|
||||
|
||||
mv_validation_message = mo_table_validator->validate(
|
||||
io_remote_version = mo_previous_version_input_xml
|
||||
io_local_version = mo_current_version_input_xml ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mv_validation_message
|
||||
exp = '' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD field_not_found.
|
||||
DATA:
|
||||
ls_previous_table_field LIKE LINE OF mt_previous_table_fields,
|
||||
ls_current_table_field LIKE LINE OF mt_current_table_fields.
|
||||
|
||||
ls_previous_table_field-fieldname = 'FIELD1'.
|
||||
ls_previous_table_field-rollname = 'INT4'.
|
||||
APPEND ls_previous_table_field TO mt_previous_table_fields.
|
||||
|
||||
ls_current_table_field-fieldname = 'ANOTHER_FIELD'.
|
||||
ls_current_table_field-rollname = 'CHAR30'.
|
||||
APPEND ls_current_table_field TO mt_current_table_fields.
|
||||
|
||||
create_xmls( ).
|
||||
|
||||
mv_validation_message = mo_table_validator->validate(
|
||||
io_remote_version = mo_previous_version_input_xml
|
||||
io_local_version = mo_current_version_input_xml ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
act = mv_validation_message
|
||||
exp = 'Fields were changed. This may lead to inconsistencies.' ).
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD no_fields_no_message.
|
||||
DATA:
|
||||
ls_previous_table_field LIKE LINE OF mt_previous_table_fields,
|
||||
ls_current_table_field LIKE LINE OF mt_current_table_fields.
|
||||
|
||||
create_xmls( ).
|
||||
|
||||
mv_validation_message = mo_table_validator->validate(
|
||||
io_remote_version = mo_previous_version_input_xml
|
||||
io_local_version = mo_current_version_input_xml ).
|
||||
|
||||
cl_abap_unit_assert=>assert_initial( mv_validation_message ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD create_xmls.
|
||||
CREATE OBJECT mo_previous_version_out_xml.
|
||||
mo_previous_version_out_xml->add(
|
||||
iv_name = 'DD03P_TABLE'
|
||||
ig_data = mt_previous_table_fields ).
|
||||
|
||||
CREATE OBJECT mo_previous_version_input_xml
|
||||
EXPORTING
|
||||
iv_xml = mo_previous_version_out_xml->render( ).
|
||||
|
||||
CREATE OBJECT mo_current_version_out_xml.
|
||||
mo_current_version_out_xml->add(
|
||||
iv_name = 'DD03P_TABLE'
|
||||
ig_data = mt_current_table_fields ).
|
||||
|
||||
CREATE OBJECT mo_current_version_input_xml
|
||||
EXPORTING
|
||||
iv_xml = mo_current_version_out_xml->render( ).
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
||||
ENDCLASS.
|
48
src/zabapgit_object_tabl_valid.prog.xml
Normal file
48
src/zabapgit_object_tabl_valid.prog.xml
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<abapGit version="v1.0.0" serializer="LCL_OBJECT_PROG" serializer_version="v1.0.0">
|
||||
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
||||
<asx:values>
|
||||
<PROGDIR>
|
||||
<NAME>ZABAPGIT_OBJECT_TABL_VALID</NAME>
|
||||
<STATE>A</STATE>
|
||||
<SQLX/>
|
||||
<EDTX/>
|
||||
<VARCL>X</VARCL>
|
||||
<DBAPL/>
|
||||
<DBNA/>
|
||||
<CLAS/>
|
||||
<TYPE/>
|
||||
<OCCURS/>
|
||||
<SUBC>I</SUBC>
|
||||
<APPL/>
|
||||
<SECU/>
|
||||
<CNAM/>
|
||||
<CDAT>0000-00-00</CDAT>
|
||||
<UNAM/>
|
||||
<UDAT>0000-00-00</UDAT>
|
||||
<VERN/>
|
||||
<LEVL/>
|
||||
<RSTAT/>
|
||||
<RMAND/>
|
||||
<RLOAD>E</RLOAD>
|
||||
<FIXPT/>
|
||||
<SSET/>
|
||||
<SDATE>0000-00-00</SDATE>
|
||||
<STIME/>
|
||||
<IDATE>0000-00-00</IDATE>
|
||||
<ITIME/>
|
||||
<LDBNAME/>
|
||||
<UCCHECK>X</UCCHECK>
|
||||
</PROGDIR>
|
||||
<TPOOL>
|
||||
<item>
|
||||
<ID>R</ID>
|
||||
<KEY/>
|
||||
<ENTRY>Include ZABAPGIT_OBJECT_TABL_VALID</ENTRY>
|
||||
<LENGTH>34</LENGTH>
|
||||
<SPLIT/>
|
||||
</item>
|
||||
</TPOOL>
|
||||
</asx:values>
|
||||
</asx:abap>
|
||||
</abapGit>
|
|
@ -183,4 +183,8 @@ CLASS lcl_object_tobj IMPLEMENTATION.
|
|||
lcx_exception=>raise( 'todo, TOBJ jump' ).
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_tobj IMPLEMENTATION
|
|
@ -413,4 +413,8 @@ CLASS lcl_object_tran IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "serialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_tran IMPLEMENTATION
|
|
@ -182,4 +182,8 @@ CLASS lcl_object_ttyp IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_ttyp IMPLEMENTATION
|
|
@ -205,4 +205,8 @@ CLASS lcl_object_type IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_type IMPLEMENTATION
|
|
@ -189,4 +189,8 @@ CLASS lcl_object_vcls IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_vcls IMPLEMENTATION
|
|
@ -217,4 +217,8 @@ CLASS lcl_object_view IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "deserialize
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_view IMPLEMENTATION
|
|
@ -340,6 +340,10 @@ CLASS lcl_object_w3super IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "lif_object~delete
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_W3SUPER IMPLEMENTATION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
|
|
@ -211,4 +211,8 @@ CLASS lcl_object_wdya IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_wdya IMPLEMENTATION
|
|
@ -647,4 +647,8 @@ CLASS lcl_object_wdyn IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "jump
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_wdyn IMPLEMENTATION
|
|
@ -443,4 +443,8 @@ CLASS lcl_object_webi IMPLEMENTATION.
|
|||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_webi IMPLEMENTATION
|
|
@ -188,4 +188,8 @@ CLASS lcl_object_xslt IMPLEMENTATION.
|
|||
rs_metadata = get_metadata( ).
|
||||
ENDMETHOD. "lif_object~get_metadata
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
CREATE OBJECT ro_comparison_result TYPE lcl_null_comparison_result.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_object_xslt IMPLEMENTATION
|
|
@ -255,6 +255,31 @@ CLASS lcl_objects_files DEFINITION FINAL.
|
|||
|
||||
ENDCLASS. "lcl_objects_files DEFINITION
|
||||
|
||||
INTERFACE lif_object_comparison_result.
|
||||
METHODS:
|
||||
show_confirmation_dialog,
|
||||
is_result_complete_halt
|
||||
RETURNING VALUE(rv_response) TYPE abap_bool.
|
||||
|
||||
ENDINTERFACE.
|
||||
|
||||
"Null Object Pattern
|
||||
CLASS lcl_null_comparison_result DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
INTERFACES lif_object_comparison_result.
|
||||
ENDCLASS.
|
||||
CLASS lcl_null_comparison_result IMPLEMENTATION.
|
||||
|
||||
METHOD lif_object_comparison_result~is_result_complete_halt.
|
||||
rv_response = abap_false.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_object_comparison_result~show_confirmation_dialog.
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
* INTERFACE lif_object DEFINITION
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -286,6 +311,11 @@ INTERFACE lif_object.
|
|||
IMPORTING iv_timestamp TYPE timestamp
|
||||
RETURNING VALUE(rv_changed) TYPE abap_bool
|
||||
RAISING lcx_exception.
|
||||
METHODS:
|
||||
compare_to_remote_version
|
||||
IMPORTING io_remote_version_xml TYPE REF TO lcl_xml_input
|
||||
RETURNING VALUE(ro_comparison_result) TYPE REF TO lif_object_comparison_result
|
||||
RAISING lcx_exception.
|
||||
|
||||
DATA: mo_files TYPE REF TO lcl_objects_files.
|
||||
|
||||
|
@ -727,6 +757,10 @@ CLASS lcl_objects_bridge IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "class_constructor
|
||||
|
||||
METHOD lif_object~compare_to_remote_version.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS. "lcl_objects_bridge IMPLEMENTATION
|
||||
|
||||
**********************************************************************
|
||||
|
|
|
@ -591,11 +591,14 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
lv_cancel TYPE abap_bool,
|
||||
li_obj TYPE REF TO lif_object,
|
||||
lt_remote TYPE ty_files_tt,
|
||||
ls_remote_file LIKE LINE OF lt_remote,
|
||||
lv_package TYPE devclass,
|
||||
lo_files TYPE REF TO lcl_objects_files,
|
||||
lo_xml TYPE REF TO lcl_xml_input,
|
||||
lt_results TYPE ty_results_tt,
|
||||
lt_late TYPE TABLE OF ty_late.
|
||||
lt_late TYPE TABLE OF ty_late,
|
||||
lo_current_version TYPE REF TO lcl_xml_input,
|
||||
lo_comparison_result TYPE REF TO lif_object_comparison_result.
|
||||
|
||||
FIELD-SYMBOLS: <ls_result> LIKE LINE OF lt_results,
|
||||
<ls_late> LIKE LINE OF lt_late.
|
||||
|
@ -652,6 +655,26 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
iv_language = io_repo->get_master_language( )
|
||||
is_metadata = lo_xml->get_metadata( ) ).
|
||||
|
||||
break copat.
|
||||
READ TABLE lt_remote WITH KEY filename = <ls_result>-filename INTO ls_remote_file.
|
||||
IF ls_remote_file-filename NS '.abap'.
|
||||
|
||||
"if file does not exist in remote, we don't need to validate
|
||||
IF sy-subrc = 0.
|
||||
CREATE OBJECT lo_current_version
|
||||
EXPORTING
|
||||
iv_xml = lcl_convert=>xstring_to_string_utf8( ls_remote_file-data ).
|
||||
lo_comparison_result = li_obj->compare_to_remote_version( lo_current_version ).
|
||||
lo_comparison_result->show_confirmation_dialog( ).
|
||||
|
||||
IF lo_comparison_result->is_result_complete_halt( ) = abap_true.
|
||||
RAISE EXCEPTION TYPE lcx_exception
|
||||
EXPORTING
|
||||
iv_text = 'Deserialization aborted by user'.
|
||||
ENDIF.
|
||||
ENDIF.
|
||||
endif.
|
||||
|
||||
li_obj->mo_files = lo_files.
|
||||
|
||||
IF li_obj->get_metadata( )-late_deser = abap_true.
|
||||
|
@ -662,6 +685,7 @@ CLASS lcl_objects IMPLEMENTATION.
|
|||
CONTINUE.
|
||||
ENDIF.
|
||||
|
||||
|
||||
li_obj->deserialize( iv_package = lv_package
|
||||
io_xml = lo_xml ).
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user