mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Fix handling of T100 exceptions (#3943)
* Fix errors raised during deletion * Fix error handler * Harmonize top and bottom message banners Co-authored-by: Lars Hvam <larshp@hotmail.com>
This commit is contained in:
parent
1c1b04fbe9
commit
dc9773bee9
|
@ -222,7 +222,7 @@ ENDCLASS.
|
|||
|
||||
|
||||
|
||||
CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||
CLASS ZCL_ABAPGIT_OBJECTS IMPLEMENTATION.
|
||||
|
||||
|
||||
METHOD adjust_namespaces.
|
||||
|
@ -512,8 +512,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
|||
|
||||
CATCH zcx_abapgit_exception INTO lx_error.
|
||||
zcl_abapgit_default_transport=>get_instance( )->reset( ).
|
||||
lv_text = lx_error->get_text( ).
|
||||
zcx_abapgit_exception=>raise( lv_text ).
|
||||
RAISE EXCEPTION lx_error.
|
||||
ENDTRY.
|
||||
|
||||
zcl_abapgit_default_transport=>get_instance( )->reset( ).
|
||||
|
|
|
@ -336,7 +336,7 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
|
|||
ENDIF.
|
||||
|
||||
ri_html->add( |<div class="{ lv_class }">| ).
|
||||
ri_html->add( |{ ri_html->icon( 'exclamation-circle/red' ) } Error: { lv_error }| ).
|
||||
ri_html->add( |{ ri_html->icon( 'exclamation-circle/red' ) } { lv_error }| ).
|
||||
ri_html->add( '</div>' ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -355,26 +355,26 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
|
|||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||
|
||||
lv_error_text = ix_error->get_text( ).
|
||||
lv_longtext = ix_error->get_longtext( abap_true ).
|
||||
lv_longtext = ix_error->if_message~get_longtext( abap_true ).
|
||||
|
||||
REPLACE FIRST OCCURRENCE OF REGEX |(<br>{ zcl_abapgit_message_helper=>gc_section_text-cause }<br>)|
|
||||
IN lv_longtext
|
||||
WITH |<h3>$1</h3>|.
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcl_abapgit_message_helper=>gc_section_text-cause }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
|
||||
REPLACE FIRST OCCURRENCE OF REGEX |(<br>{ zcl_abapgit_message_helper=>gc_section_text-system_response }<br>)|
|
||||
IN lv_longtext
|
||||
WITH |<h3>$1</h3>|.
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcl_abapgit_message_helper=>gc_section_text-system_response }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
|
||||
REPLACE FIRST OCCURRENCE OF REGEX |(<br>{ zcl_abapgit_message_helper=>gc_section_text-what_to_do }<br>)|
|
||||
IN lv_longtext
|
||||
WITH |<h3>$1</h3>|.
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcl_abapgit_message_helper=>gc_section_text-what_to_do }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
|
||||
REPLACE FIRST OCCURRENCE OF REGEX |(<br>{ zcl_abapgit_message_helper=>gc_section_text-sys_admin }<br>)|
|
||||
IN lv_longtext
|
||||
WITH |<h3>$1</h3>|.
|
||||
REPLACE FIRST OCCURRENCE OF REGEX
|
||||
|({ zcl_abapgit_message_helper=>gc_section_text-sys_admin }{ cl_abap_char_utilities=>newline })|
|
||||
IN lv_longtext WITH |<h3>$1</h3>|.
|
||||
|
||||
ri_html->add( |<div id="message" class="message-panel">| ).
|
||||
ri_html->add( |{ lv_error_text }| ).
|
||||
ri_html->add( |{ ri_html->icon( 'exclamation-circle/red' ) } { lv_error_text }| ).
|
||||
ri_html->add( |<div class="float-right">| ).
|
||||
|
||||
ri_html->add_a(
|
||||
|
|
|
@ -25,76 +25,67 @@ CLASS zcl_abapgit_message_helper DEFINITION
|
|||
!iv_text TYPE string .
|
||||
METHODS constructor
|
||||
IMPORTING
|
||||
!ii_t100_message TYPE REF TO if_t100_message .
|
||||
!io_exception TYPE REF TO zcx_abapgit_exception .
|
||||
METHODS get_t100_longtext
|
||||
RETURNING
|
||||
VALUE(rv_longtext) TYPE string .
|
||||
PROTECTED SECTION.
|
||||
PRIVATE SECTION.
|
||||
|
||||
TYPES:
|
||||
BEGIN OF ty_msg,
|
||||
msgv1 TYPE symsgv,
|
||||
msgv2 TYPE symsgv,
|
||||
msgv3 TYPE symsgv,
|
||||
msgv4 TYPE symsgv,
|
||||
END OF ty_msg.
|
||||
|
||||
CLASS-METHODS:
|
||||
split_text
|
||||
IMPORTING
|
||||
iv_text TYPE string
|
||||
RETURNING
|
||||
VALUE(rs_msg) TYPE ty_msg.
|
||||
END OF ty_msg .
|
||||
|
||||
DATA:
|
||||
mi_t100_message TYPE REF TO if_t100_message.
|
||||
|
||||
METHODS:
|
||||
itf_to_string
|
||||
IMPORTING
|
||||
it_itf TYPE tline_tab
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE string,
|
||||
|
||||
get_t100_longtext_itf
|
||||
RETURNING
|
||||
VALUE(rt_itf) TYPE tline_tab,
|
||||
|
||||
remove_empty_section
|
||||
IMPORTING
|
||||
iv_tabix_from TYPE i
|
||||
iv_tabix_to TYPE i
|
||||
CHANGING
|
||||
ct_itf TYPE tline_tab,
|
||||
|
||||
replace_section_head_with_text
|
||||
CHANGING
|
||||
cs_itf TYPE tline,
|
||||
|
||||
set_single_msg_var
|
||||
IMPORTING
|
||||
iv_arg TYPE clike
|
||||
RETURNING
|
||||
VALUE(rv_target) TYPE char01,
|
||||
|
||||
set_single_msg_var_clike
|
||||
IMPORTING
|
||||
iv_arg TYPE clike
|
||||
RETURNING
|
||||
VALUE(rv_target) TYPE char01,
|
||||
|
||||
set_single_msg_var_numeric
|
||||
IMPORTING
|
||||
iv_arg TYPE numeric
|
||||
RETURNING
|
||||
VALUE(rv_target) TYPE char01,
|
||||
|
||||
set_single_msg_var_xseq
|
||||
IMPORTING
|
||||
iv_arg TYPE xsequence
|
||||
RETURNING
|
||||
VALUE(rv_target) TYPE char01.
|
||||
mo_exception TYPE REF TO zcx_abapgit_exception,
|
||||
ms_t100key TYPE scx_t100key.
|
||||
|
||||
CLASS-METHODS split_text
|
||||
IMPORTING
|
||||
!iv_text TYPE string
|
||||
RETURNING
|
||||
VALUE(rs_msg) TYPE ty_msg .
|
||||
METHODS itf_to_string
|
||||
IMPORTING
|
||||
!it_itf TYPE tline_tab
|
||||
RETURNING
|
||||
VALUE(rv_result) TYPE string .
|
||||
METHODS get_t100_longtext_itf
|
||||
RETURNING
|
||||
VALUE(rt_itf) TYPE tline_tab .
|
||||
METHODS remove_empty_section
|
||||
IMPORTING
|
||||
!iv_tabix_from TYPE i
|
||||
!iv_tabix_to TYPE i
|
||||
CHANGING
|
||||
!ct_itf TYPE tline_tab .
|
||||
METHODS replace_section_head_with_text
|
||||
CHANGING
|
||||
!cs_itf TYPE tline .
|
||||
METHODS set_single_msg_var
|
||||
IMPORTING
|
||||
!iv_arg TYPE clike
|
||||
RETURNING
|
||||
VALUE(rv_target) TYPE symsgv .
|
||||
METHODS set_single_msg_var_clike
|
||||
IMPORTING
|
||||
!iv_arg TYPE clike
|
||||
RETURNING
|
||||
VALUE(rv_target) TYPE symsgv .
|
||||
METHODS set_single_msg_var_numeric
|
||||
IMPORTING
|
||||
!iv_arg TYPE numeric
|
||||
RETURNING
|
||||
VALUE(rv_target) TYPE symsgv .
|
||||
METHODS set_single_msg_var_xseq
|
||||
IMPORTING
|
||||
!iv_arg TYPE xsequence
|
||||
RETURNING
|
||||
VALUE(rv_target) TYPE symsgv .
|
||||
ENDCLASS.
|
||||
|
||||
|
||||
|
@ -104,7 +95,8 @@ CLASS ZCL_ABAPGIT_MESSAGE_HELPER IMPLEMENTATION.
|
|||
|
||||
METHOD constructor.
|
||||
|
||||
mi_t100_message = ii_t100_message.
|
||||
mo_exception = io_exception.
|
||||
ms_t100key = io_exception->if_t100_message~t100key.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -122,7 +114,7 @@ CLASS ZCL_ABAPGIT_MESSAGE_HELPER IMPLEMENTATION.
|
|||
|
||||
DATA: lv_docu_key TYPE doku_obj.
|
||||
|
||||
lv_docu_key = mi_t100_message->t100key-msgid && mi_t100_message->t100key-msgno.
|
||||
lv_docu_key = ms_t100key-msgid && ms_t100key-msgno.
|
||||
|
||||
CALL FUNCTION 'DOCU_GET'
|
||||
EXPORTING
|
||||
|
@ -136,25 +128,21 @@ CLASS ZCL_ABAPGIT_MESSAGE_HELPER IMPLEMENTATION.
|
|||
OTHERS = 1.
|
||||
|
||||
IF sy-subrc = 0.
|
||||
sy-msgv1 = set_single_msg_var( iv_arg = mi_t100_message->t100key-attr1 ).
|
||||
sy-msgv1 = set_single_msg_var( iv_arg = ms_t100key-attr1 ).
|
||||
|
||||
REPLACE '&V1&' IN TABLE rt_itf
|
||||
WITH sy-msgv1.
|
||||
REPLACE ALL OCCURRENCES OF '&V1&' IN TABLE rt_itf WITH sy-msgv1.
|
||||
|
||||
sy-msgv2 = set_single_msg_var( iv_arg = mi_t100_message->t100key-attr2 ).
|
||||
sy-msgv2 = set_single_msg_var( iv_arg = ms_t100key-attr2 ).
|
||||
|
||||
REPLACE '&V2&' IN TABLE rt_itf
|
||||
WITH sy-msgv2.
|
||||
REPLACE ALL OCCURRENCES OF '&V2&' IN TABLE rt_itf WITH sy-msgv2.
|
||||
|
||||
sy-msgv3 = set_single_msg_var( iv_arg = mi_t100_message->t100key-attr3 ).
|
||||
sy-msgv3 = set_single_msg_var( iv_arg = ms_t100key-attr3 ).
|
||||
|
||||
REPLACE '&V3&' IN TABLE rt_itf
|
||||
WITH sy-msgv3.
|
||||
REPLACE ALL OCCURRENCES OF '&V3&' IN TABLE rt_itf WITH sy-msgv3.
|
||||
|
||||
sy-msgv4 = set_single_msg_var( iv_arg = mi_t100_message->t100key-attr4 ).
|
||||
sy-msgv4 = set_single_msg_var( iv_arg = ms_t100key-attr4 ).
|
||||
|
||||
REPLACE '&V4&' IN TABLE rt_itf
|
||||
WITH sy-msgv4.
|
||||
REPLACE ALL OCCURRENCES OF '&V4&' IN TABLE rt_itf WITH sy-msgv4.
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -239,7 +227,11 @@ CLASS ZCL_ABAPGIT_MESSAGE_HELPER IMPLEMENTATION.
|
|||
|
||||
|
||||
METHOD remove_empty_section.
|
||||
DELETE ct_itf FROM iv_tabix_from TO iv_tabix_to.
|
||||
IF iv_tabix_to BETWEEN iv_tabix_from AND lines( ct_itf ).
|
||||
DELETE ct_itf FROM iv_tabix_from TO iv_tabix_to.
|
||||
ELSE.
|
||||
DELETE ct_itf FROM iv_tabix_from.
|
||||
ENDIF.
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
|
@ -266,8 +258,7 @@ CLASS ZCL_ABAPGIT_MESSAGE_HELPER IMPLEMENTATION.
|
|||
|
||||
ls_msg = split_text( iv_text ).
|
||||
|
||||
MESSAGE e001(00) WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4
|
||||
INTO lv_dummy.
|
||||
MESSAGE e001(00) WITH ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4 INTO lv_dummy.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
@ -280,7 +271,7 @@ CLASS ZCL_ABAPGIT_MESSAGE_HELPER IMPLEMENTATION.
|
|||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
ASSIGN me->(iv_arg) TO <lg_arg>.
|
||||
ASSIGN mo_exception->(iv_arg) TO <lg_arg>.
|
||||
IF sy-subrc <> 0.
|
||||
CONCATENATE '&' iv_arg '&' INTO rv_target.
|
||||
RETURN.
|
||||
|
@ -288,25 +279,19 @@ CLASS ZCL_ABAPGIT_MESSAGE_HELPER IMPLEMENTATION.
|
|||
|
||||
TRY.
|
||||
rv_target = set_single_msg_var_clike( iv_arg = <lg_arg> ).
|
||||
|
||||
RETURN.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_type ##no_handler.
|
||||
ENDTRY.
|
||||
|
||||
TRY.
|
||||
rv_target = set_single_msg_var_numeric( iv_arg = <lg_arg> ).
|
||||
|
||||
RETURN.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_type ##no_handler.
|
||||
ENDTRY.
|
||||
|
||||
TRY.
|
||||
rv_target = set_single_msg_var_xseq( iv_arg = <lg_arg> ).
|
||||
|
||||
RETURN.
|
||||
|
||||
CATCH cx_sy_dyn_call_illegal_type ##no_handler.
|
||||
ENDTRY.
|
||||
|
||||
|
|
|
@ -1,37 +1,40 @@
|
|||
CLASS ltcl_get_t100_longtext DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
||||
|
||||
PUBLIC SECTION.
|
||||
INTERFACES if_t100_message.
|
||||
METHODS test01 FOR TESTING.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
CLASS ltcl_get_t100_longtext IMPLEMENTATION.
|
||||
|
||||
METHOD if_message~get_longtext.
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD if_message~get_text.
|
||||
RETURN.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD test01.
|
||||
|
||||
DATA lo_cut TYPE REF TO zcl_abapgit_message_helper.
|
||||
DATA lv_result TYPE string.
|
||||
DATA: lx_err TYPE REF TO zcx_abapgit_exception,
|
||||
lv_dummy TYPE string,
|
||||
lv_result TYPE string.
|
||||
|
||||
if_t100_message~t100key-msgid = '00'.
|
||||
if_t100_message~t100key-msgno = '058'.
|
||||
if_t100_message~t100key-attr1 = 'ATTR'.
|
||||
TRY.
|
||||
MESSAGE e058(00) WITH 'Value_1' 'Value_2' 'Value_3' 'Value_4' INTO lv_dummy.
|
||||
zcx_abapgit_exception=>raise_t100( ).
|
||||
CATCH zcx_abapgit_exception INTO lx_err.
|
||||
lv_result = lx_err->get_longtext( ).
|
||||
ENDTRY.
|
||||
|
||||
CREATE OBJECT lo_cut
|
||||
EXPORTING
|
||||
ii_t100_message = me.
|
||||
|
||||
lv_result = lo_cut->get_t100_longtext( ).
|
||||
cl_abap_unit_assert=>assert_not_initial( lv_result ).
|
||||
|
||||
IF lv_result NS 'Value_1'.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
IF lv_result NS 'Value_2'.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
IF lv_result NS 'Value_3'.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
IF lv_result NS 'Value_4'.
|
||||
cl_abap_unit_assert=>fail( ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -118,7 +118,7 @@ CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD IF_MESSAGE~GET_LONGTEXT.
|
||||
METHOD if_message~get_longtext.
|
||||
|
||||
" You should remember that we have to call ZCL_ABAPGIT_MESSAGE_HELPER
|
||||
" dynamically, because the compiled abapGit report puts the definition
|
||||
|
@ -133,7 +133,7 @@ CLASS ZCX_ABAPGIT_EXCEPTION IMPLEMENTATION.
|
|||
|
||||
CREATE OBJECT lo_message_helper TYPE ('ZCL_ABAPGIT_MESSAGE_HELPER')
|
||||
EXPORTING
|
||||
ii_t100_message = me.
|
||||
io_exception = me.
|
||||
|
||||
CALL METHOD lo_message_helper->('GET_T100_LONGTEXT')
|
||||
RECEIVING
|
||||
|
|
Loading…
Reference in New Issue
Block a user