Improve error messages (#1213)

* Add T100 support to ZCX_ABAPGIT_EXCEPTION

* Use T100 error messages in DEVC

* Replace zcx_abapgit_exception->text with get_text

* Use SE24 generated constructor in T100 exception
This commit is contained in:
Fabian Lupa 2018-03-10 13:27:09 +01:00 committed by Lars Hvam
parent 30112e0557
commit 889106b68b
9 changed files with 434 additions and 55 deletions

View File

@ -27,7 +27,7 @@ ENDCLASS.
CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
CLASS zcl_abapgit_object_devc IMPLEMENTATION.
METHOD constructor.
@ -55,7 +55,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
IF sy-subrc = 1.
RETURN.
ELSEIF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from CL_PACKAGE_FACTORY=>LOAD_PACKAGE { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDIF.
ENDMETHOD.
@ -82,7 +82,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
unexpected_error = 10
OTHERS = 11 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->SET_CHANGEABLE { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDIF.
@ -104,7 +104,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
IF ( sy-subrc = 1 AND iv_lock = abap_true ) OR ( sy-subrc = 2 AND iv_lock = abap_false ).
" There's no getter to find out beforehand...
ELSEIF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->SET_PERMISSIONS_CHANGEABLE { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDMETHOD.
@ -126,7 +126,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
unexpected_error = 2
OTHERS = 3 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE=>GET_PERMISSIONS_TO_USE { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ls_data_sign-err_sever = abap_true.
@ -151,8 +151,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
intern_err = 3
OTHERS = 4 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise(
|Error from IF_PACKAGE_PERMISSION_TO_USE->SET_ALL_ATTRIBUTES { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ELSE.
@ -169,7 +168,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
unexpected_error = 5
OTHERS = 6 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->ADD_PERMISSION_TO_USE { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDIF.
@ -192,7 +191,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
intern_err = 4
OTHERS = 5 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->DELETE { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDLOOP.
ENDMETHOD.
@ -218,11 +217,11 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
METHOD zif_abapgit_object~deserialize.
DATA: li_package TYPE REF TO if_package,
ls_package_data TYPE scompkdtln,
ls_data_sign TYPE scompksign,
lt_usage_data TYPE scomppdata,
ls_save_sign TYPE paksavsign.
DATA: li_package TYPE REF TO if_package,
ls_package_data TYPE scompkdtln,
ls_data_sign TYPE scompksign,
lt_usage_data TYPE scomppdata,
ls_save_sign TYPE paksavsign.
FIELD-SYMBOLS: <ls_usage_data> TYPE scomppdtln.
@ -301,7 +300,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
superpackage_invalid = 17
OTHERS = 18 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->SET_ALL_ATTRIBUTES { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
* " If the application component was cleared SET_ALL_ATTRIBUTES doesn't change it
@ -341,7 +340,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
* error_in_cts_checks = 21 downport, does not exist in 7.31
OTHERS = 22 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from CL_PACKAGE_FACTORY=>CREATE_NEW_PACKAGE { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDIF.
@ -374,7 +373,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
object_invalid = 4
OTHERS = 5 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->SAVE_GENERIC { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
set_lock( ii_package = li_package iv_lock = abap_false ).
@ -382,7 +381,6 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
METHOD zif_abapgit_object~exists.
" Check remote package if deserialize has not been called before this
IF mv_local_devclass IS INITIAL.
rv_bool = abap_false.
@ -396,7 +394,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
intern_err = 1
OTHERS = 2 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from CL_PACKAGE_HELPER=>CHECK_PACKAGE_EXISTENCE { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDIF.
ENDMETHOD.
@ -424,7 +422,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
invalid_object_type = 2
OTHERS = 3.
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from RS_TOOL_ACCESS, DEVC| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
ENDMETHOD.
@ -454,7 +452,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
intern_err = 3
OTHERS = 4 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->GET_ALL_ATTRIBUTES { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
CLEAR: ls_package_data-devclass,
@ -508,7 +506,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
unexpected_error = 2
OTHERS = 3 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise( |Error from IF_PACKAGE->GET_PERMISSION_TO_USE { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
LOOP AT lt_intf_usages INTO li_usage.
@ -520,8 +518,7 @@ CLASS ZCL_ABAPGIT_OBJECT_DEVC IMPLEMENTATION.
intern_err = 2
OTHERS = 3 ).
IF sy-subrc <> 0.
zcx_abapgit_exception=>raise(
|Error from IF_PACKAGE_PERMISSION_TO_USE->GET_ALL_ATTRIBUTES { sy-subrc }| ).
zcx_abapgit_exception=>raise_t100( ).
ENDIF.
CLEAR: ls_usage_data-pack_name, ls_usage_data-client_pak.

View File

@ -270,7 +270,7 @@ CLASS ZCL_ABAPGIT_GUI IMPLEMENTATION.
CATCH zcx_abapgit_exception INTO lx_exception.
ROLLBACK WORK.
MESSAGE lx_exception->text TYPE 'S' DISPLAY LIKE 'E'.
MESSAGE lx_exception TYPE 'S' DISPLAY LIKE 'E'.
CATCH zcx_abapgit_cancel ##NO_HANDLER.
" Do nothing = gc_event_state-no_more_act
ENDTRY.

View File

@ -83,7 +83,7 @@ CLASS ZCL_ABAPGIT_GUI_CHUNK_LIB IMPLEMENTATION.
CREATE OBJECT ro_html.
IF ix_error IS BOUND.
lv_error = ix_error->text.
lv_error = ix_error->get_text( ).
ELSE.
lv_error = iv_error.
ENDIF.

View File

@ -24,7 +24,7 @@ FORM run.
zcl_abapgit_migrations=>run( ).
PERFORM open_gui.
CATCH zcx_abapgit_exception INTO lx_exception.
MESSAGE lx_exception->text TYPE 'E'.
MESSAGE lx_exception TYPE 'E'.
ENDTRY.
ENDFORM. "run
@ -73,7 +73,7 @@ FORM branch_popup TABLES tt_fields TYPE zif_abapgit_definitions=>ty_sval_tt
cv_show_popup = cv_show_popup ).
CATCH zcx_abapgit_exception INTO lx_error.
MESSAGE lx_error->text TYPE 'S' DISPLAY LIKE 'E'.
MESSAGE lx_error TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
ENDFORM. "branch_popup
@ -97,7 +97,7 @@ FORM package_popup TABLES tt_fields TYPE zif_abapgit_definitions=>ty_sval_tt
cv_show_popup = cv_show_popup ).
CATCH zcx_abapgit_exception INTO lx_error.
MESSAGE lx_error->text TYPE 'S' DISPLAY LIKE 'E'.
MESSAGE lx_error TYPE 'S' DISPLAY LIKE 'E'.
ENDTRY.
ENDFORM. "package_popup

View File

@ -58,7 +58,7 @@ CLASS ZCL_ABAPGIT_MIGRATIONS IMPLEMENTATION.
CALL FUNCTION 'POPUP_TO_INFORM'
EXPORTING
titel = 'Migration has failed'
txt1 = lx_exception->text
txt1 = lx_exception->get_text( )
txt2 = lv_msg
txt3 = 'You will be prompted to migrate the repository every time you run abapGit.'
txt4 = 'You can safely remove the repository in its ''Advanced -> Remove'' menu.'.

View File

@ -161,7 +161,7 @@ CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION.
" ensure to reset default transport request task
zcl_abapgit_default_task=>get_instance( )->reset( ).
zcx_abapgit_exception=>raise( lx_error->text ).
RAISE EXCEPTION lx_error.
ENDTRY.

View File

@ -1,47 +1,147 @@
"! abapGit general error
CLASS zcx_abapgit_exception DEFINITION
PUBLIC
INHERITING FROM cx_static_check
CREATE PUBLIC .
CREATE PUBLIC.
PUBLIC SECTION.
DATA text TYPE string .
METHODS constructor
IMPORTING
!textid LIKE textid OPTIONAL
!previous LIKE previous OPTIONAL
!text TYPE string OPTIONAL.
CLASS-METHODS raise
IMPORTING
!iv_text TYPE clike
RAISING
zcx_abapgit_exception.
INTERFACES:
if_t100_message.
CONSTANTS:
BEGIN OF dummy,
msgid TYPE symsgid VALUE '02',
msgno TYPE symsgno VALUE '004',
attr1 TYPE scx_attrname VALUE 'MSGV1',
attr2 TYPE scx_attrname VALUE 'MSGV2',
attr3 TYPE scx_attrname VALUE 'MSGV3',
attr4 TYPE scx_attrname VALUE 'MSGV4',
END OF dummy.
CLASS-METHODS:
"! Raise exception with text
"! @parameter iv_text | Text
"! @raising zcx_abapgit_exception | Exception
raise IMPORTING iv_text TYPE clike
RAISING zcx_abapgit_exception,
"! Raise exception with T100 message
"! <p>
"! Will default to sy-msg* variables. These need to be set right before calling this method.
"! </p>
"! @parameter iv_msgid | Message ID
"! @parameter iv_msgno | Message number
"! @parameter iv_msgv1 | Message variable 1
"! @parameter iv_msgv2 | Message variable 2
"! @parameter iv_msgv3 | Message variable 3
"! @parameter iv_msgv4 | Message variable 4
"! @raising zcx_abapgit_exception | Exception
raise_t100 IMPORTING VALUE(iv_msgid) TYPE syst_msgid DEFAULT sy-msgid
VALUE(iv_msgno) TYPE syst_msgno DEFAULT sy-msgno
VALUE(iv_msgv1) TYPE syst_msgv DEFAULT sy-msgv1
VALUE(iv_msgv2) TYPE syst_msgv DEFAULT sy-msgv2
VALUE(iv_msgv3) TYPE syst_msgv DEFAULT sy-msgv3
VALUE(iv_msgv4) TYPE syst_msgv DEFAULT sy-msgv4
RAISING zcx_abapgit_exception .
METHODS:
constructor IMPORTING textid LIKE if_t100_message=>t100key OPTIONAL
previous LIKE previous OPTIONAL
text TYPE string OPTIONAL
subrc TYPE syst_subrc OPTIONAL
msgv1 TYPE syst_msgv OPTIONAL
msgv2 TYPE syst_msgv OPTIONAL
msgv3 TYPE syst_msgv OPTIONAL
msgv4 TYPE syst_msgv OPTIONAL,
if_message~get_text REDEFINITION.
DATA:
text TYPE string READ-ONLY,
subrc TYPE syst_subrc READ-ONLY,
msgv1 TYPE syst_msgv READ-ONLY,
msgv2 TYPE syst_msgv READ-ONLY,
msgv3 TYPE syst_msgv READ-ONLY,
msgv4 TYPE syst_msgv READ-ONLY.
PROTECTED SECTION.
PRIVATE SECTION.
CONSTANTS:
gc_generic_error_msg TYPE string VALUE `An error occured (ZCX_ABAPGIT_EXCEPTION)` ##NO_TEXT.
ENDCLASS.
CLASS zcx_abapgit_exception IMPLEMENTATION.
METHOD constructor ##ADT_SUPPRESS_GENERATION.
super->constructor( previous = previous ).
CALL METHOD super->constructor
EXPORTING
textid = textid
previous = previous.
me->text = text.
me->subrc = subrc.
me->msgv1 = msgv1.
me->msgv2 = msgv2.
me->msgv3 = msgv3.
me->msgv4 = msgv4.
me->text = text .
CLEAR me->textid.
IF textid IS INITIAL.
if_t100_message~t100key = if_t100_message=>default_textid.
ELSE.
if_t100_message~t100key = textid.
ENDIF.
ENDMETHOD.
METHOD if_message~get_text.
" The standard implementation of this method always uses T100 messages, if IF_T100_MESSAGE is
" implemented. Since this is a 'hybrid' exception of IF_MESSAGE and IF_T100_MESSAGE the normal
" get_text() is only called if a T100 message is used.
" Otherwise try to get a meaningful error text for the user in this order:
" mv_text variable, previous exception's text, generic error message
IF if_t100_message~t100key IS INITIAL OR
if_t100_message~t100key = if_t100_message=>default_textid.
IF text IS NOT INITIAL.
result = text.
ELSEIF previous IS NOT INITIAL.
result = previous->get_text( ).
ELSE.
IF sy-subrc IS NOT INITIAL.
result = |{ gc_generic_error_msg } ({ subrc })|.
ELSE.
result = gc_generic_error_msg.
ENDIF.
ENDIF.
ELSE.
result = super->get_text( ).
ENDIF.
ENDMETHOD.
METHOD raise.
RAISE EXCEPTION TYPE zcx_abapgit_exception
EXPORTING
text = iv_text.
ENDMETHOD.
METHOD raise_t100.
DATA: ls_t100_key TYPE scx_t100key,
lv_subrc TYPE syst_subrc.
" If this method is called right in the sy-subrc handling of a method or function module
" sy-subrc should still contain the id from that.
lv_subrc = sy-subrc.
ls_t100_key-msgid = iv_msgid.
ls_t100_key-msgno = iv_msgno.
ls_t100_key-attr1 = 'MSGV1'.
ls_t100_key-attr2 = 'MSGV2'.
ls_t100_key-attr3 = 'MSGV3'.
ls_t100_key-attr4 = 'MSGV4'.
IF iv_msgid IS INITIAL OR iv_msgno IS INITIAL.
CLEAR ls_t100_key.
ENDIF.
RAISE EXCEPTION TYPE zcx_abapgit_exception
EXPORTING
textid = ls_t100_key
msgv1 = iv_msgv1
msgv2 = iv_msgv2
msgv3 = iv_msgv3
msgv4 = iv_msgv4
subrc = lv_subrc.
ENDMETHOD.
ENDCLASS.

View File

@ -0,0 +1,281 @@
CLASS ltcl_test DEFINITION DEFERRED.
CLASS zcx_abapgit_exception DEFINITION LOCAL FRIENDS ltcl_test.
CLASS ltcl_test DEFINITION
FOR TESTING
DURATION SHORT
RISK LEVEL HARMLESS.
PUBLIC SECTION.
METHODS:
test_direct_text FOR TESTING,
test_t100_text FOR TESTING,
test_no_text FOR TESTING.
PROTECTED SECTION.
PRIVATE SECTION.
TYPES:
BEGIN OF gty_t100_message,
msgid TYPE syst_msgid,
msgno TYPE syst_msgno,
msgv1 TYPE syst_msgv,
msgv2 TYPE syst_msgv,
msgv3 TYPE syst_msgv,
msgv4 TYPE syst_msgv,
END OF gty_t100_message.
CLASS-METHODS:
get_t100_text IMPORTING is_message TYPE gty_t100_message
RETURNING VALUE(rv_text) TYPE string.
ENDCLASS.
CLASS ltcl_test IMPLEMENTATION.
METHOD test_direct_text.
CONSTANTS: lc_text1 TYPE string VALUE `This is a test error message.`,
lc_text2 TYPE string VALUE ``.
DATA: lx_ex TYPE REF TO zcx_abapgit_exception,
lx_previous TYPE REF TO cx_root.
CREATE OBJECT lx_ex
EXPORTING
text = lc_text1.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( ) exp = lc_text1 ).
FREE lx_ex.
CREATE OBJECT lx_ex
EXPORTING
text = lc_text2.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( )
exp = zcx_abapgit_exception=>gc_generic_error_msg ).
FREE lx_ex.
CREATE OBJECT lx_previous TYPE cx_sy_dyn_call_illegal_method
EXPORTING
textid = cx_sy_dyn_call_illegal_method=>private_method
classname = 'CLASS'
methodname = 'METHOD'.
CREATE OBJECT lx_ex
EXPORTING
text = lc_text2
previous = lx_previous.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( )
exp = lx_previous->get_text( ) ).
FREE: lx_ex, lx_previous.
TRY.
zcx_abapgit_exception=>raise( lc_text1 ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception INTO lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( ) exp = lc_text1 ).
ENDTRY.
FREE lx_ex.
TRY.
zcx_abapgit_exception=>raise( lc_text2 ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception INTO lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( )
exp = zcx_abapgit_exception=>gc_generic_error_msg ).
ENDTRY.
FREE lx_ex.
ENDMETHOD.
METHOD test_no_text.
DATA: lx_ex TYPE REF TO zcx_abapgit_exception.
CREATE OBJECT lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( )
exp = zcx_abapgit_exception=>gc_generic_error_msg ).
ENDMETHOD.
METHOD test_t100_text.
CONSTANTS: BEGIN OF lc_msg1,
msgid TYPE syst_msgid VALUE '00',
msgno TYPE syst_msgno VALUE '001',
msgv1 TYPE syst_msgv VALUE IS INITIAL,
msgv2 TYPE syst_msgv VALUE IS INITIAL,
msgv3 TYPE syst_msgv VALUE IS INITIAL,
msgv4 TYPE syst_msgv VALUE IS INITIAL,
END OF lc_msg1,
BEGIN OF lc_msg2,
msgid TYPE syst_msgid VALUE '00',
msgno TYPE syst_msgno VALUE '001',
msgv1 TYPE syst_msgv VALUE 'Variable 1',
msgv2 TYPE syst_msgv VALUE IS INITIAL,
msgv3 TYPE syst_msgv VALUE IS INITIAL,
msgv4 TYPE syst_msgv VALUE IS INITIAL,
END OF lc_msg2,
BEGIN OF lc_msg3,
msgid TYPE syst_msgid VALUE '00',
msgno TYPE syst_msgno VALUE '001',
msgv1 TYPE syst_msgv VALUE 'Variable 1',
msgv2 TYPE syst_msgv VALUE 'Variable 2',
msgv3 TYPE syst_msgv VALUE IS INITIAL,
msgv4 TYPE syst_msgv VALUE IS INITIAL,
END OF lc_msg3,
BEGIN OF lc_msg4,
msgid TYPE syst_msgid VALUE '00',
msgno TYPE syst_msgno VALUE '001',
msgv1 TYPE syst_msgv VALUE 'Variable 1',
msgv2 TYPE syst_msgv VALUE 'Variable 2',
msgv3 TYPE syst_msgv VALUE'Variable 3',
msgv4 TYPE syst_msgv VALUE IS INITIAL,
END OF lc_msg4,
BEGIN OF lc_msg5,
msgid TYPE syst_msgid VALUE '00',
msgno TYPE syst_msgno VALUE '001',
msgv1 TYPE syst_msgv VALUE 'Variable 1',
msgv2 TYPE syst_msgv VALUE 'Variable 2',
msgv3 TYPE syst_msgv VALUE 'Variable 3',
msgv4 TYPE syst_msgv VALUE 'Variable 4',
END OF lc_msg5,
BEGIN OF lc_msg6,
msgid TYPE syst_msgid VALUE '00',
msgno TYPE syst_msgno VALUE '003',
msgv1 TYPE syst_msgv VALUE 'Variable 1',
msgv2 TYPE syst_msgv VALUE 'Variable 2',
msgv3 TYPE syst_msgv VALUE 'Variable 3',
msgv4 TYPE syst_msgv VALUE 'Variable 4',
END OF lc_msg6,
BEGIN OF lc_msg7,
msgid TYPE syst_msgid VALUE '00',
msgno TYPE syst_msgno VALUE '003',
msgv1 TYPE syst_msgv VALUE IS INITIAL,
msgv2 TYPE syst_msgv VALUE IS INITIAL,
msgv3 TYPE syst_msgv VALUE IS INITIAL,
msgv4 TYPE syst_msgv VALUE IS INITIAL,
END OF lc_msg7,
BEGIN OF lc_msg8,
msgid TYPE syst_msgid VALUE '00',
msgno TYPE syst_msgno VALUE '002',
msgv1 TYPE syst_msgv VALUE IS INITIAL,
msgv2 TYPE syst_msgv VALUE IS INITIAL,
msgv3 TYPE syst_msgv VALUE IS INITIAL,
msgv4 TYPE syst_msgv VALUE IS INITIAL,
END OF lc_msg8,
BEGIN OF lc_msg9,
msgid TYPE syst_msgid VALUE '!"(/&&(%!)"(',
msgno TYPE syst_msgno VALUE '000',
msgv1 TYPE syst_msgv VALUE IS INITIAL,
msgv2 TYPE syst_msgv VALUE IS INITIAL,
msgv3 TYPE syst_msgv VALUE IS INITIAL,
msgv4 TYPE syst_msgv VALUE IS INITIAL,
END OF lc_msg9.
DATA: lx_ex TYPE REF TO zcx_abapgit_exception,
lv_text TYPE string.
TRY.
lv_text = get_t100_text( lc_msg1 ).
zcx_abapgit_exception=>raise_t100( ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception INTO lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( ) exp = lv_text ).
ENDTRY.
CLEAR lv_text.
FREE lx_ex.
TRY.
lv_text = get_t100_text( lc_msg2 ).
zcx_abapgit_exception=>raise_t100( ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception INTO lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( ) exp = lv_text ).
ENDTRY.
CLEAR lv_text.
FREE lx_ex.
TRY.
lv_text = get_t100_text( lc_msg3 ).
zcx_abapgit_exception=>raise_t100( ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception INTO lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( ) exp = lv_text ).
ENDTRY.
CLEAR lv_text.
FREE lx_ex.
TRY.
lv_text = get_t100_text( lc_msg4 ).
zcx_abapgit_exception=>raise_t100( ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception INTO lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( ) exp = lv_text ).
ENDTRY.
CLEAR lv_text.
FREE lx_ex.
TRY.
lv_text = get_t100_text( lc_msg5 ).
zcx_abapgit_exception=>raise_t100( ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception INTO lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( ) exp = lv_text ).
ENDTRY.
CLEAR lv_text.
FREE lx_ex.
TRY.
lv_text = get_t100_text( lc_msg6 ).
zcx_abapgit_exception=>raise_t100( ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception INTO lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( ) exp = lv_text ).
ENDTRY.
CLEAR lv_text.
FREE lx_ex.
TRY.
lv_text = get_t100_text( lc_msg7 ).
zcx_abapgit_exception=>raise_t100( ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception INTO lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( ) exp = lv_text ).
ENDTRY.
CLEAR lv_text.
FREE lx_ex.
TRY.
lv_text = get_t100_text( lc_msg8 ).
zcx_abapgit_exception=>raise_t100( ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception INTO lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( ) exp = lv_text ).
ENDTRY.
CLEAR lv_text.
FREE lx_ex.
TRY.
lv_text = get_t100_text( lc_msg9 ).
zcx_abapgit_exception=>raise_t100( ).
cl_abap_unit_assert=>fail( ).
CATCH zcx_abapgit_exception INTO lx_ex.
cl_abap_unit_assert=>assert_equals( act = lx_ex->get_text( )
exp = zcx_abapgit_exception=>gc_generic_error_msg ).
ENDTRY.
CLEAR lv_text.
FREE lx_ex.
ENDMETHOD.
METHOD get_t100_text.
MESSAGE ID is_message-msgid TYPE 'S' NUMBER is_message-msgno
WITH is_message-msgv1 is_message-msgv2 is_message-msgv3 is_message-msgv4
INTO rv_text.
ENDMETHOD.
ENDCLASS.

View File

@ -13,6 +13,7 @@
<CLSCCINCL>X</CLSCCINCL>
<FIXPT>X</FIXPT>
<UNICODE>X</UNICODE>
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
</VSEOCLASS>
<DESCRIPTIONS>
<SEOCOMPOTX>