Exceptions
In newer BAdIs, it is also possible to generate an error message and thus interrupt processing, for example. Technically, this is done using object-oriented exceptions.
-> The signature tells you whether an exception is available for a BAdI:
The following example implementations refer to the BAdI /AEB/AES_CONS_INV_01, but can also be transferred to other BAdIs that provide exceptions.
IF im_vbrk-land1 = 'DE'.
RAISE EXCEPTION TYPE /aeb/cx_aes_pb_cons_ete_sc.
ENDIF.
Interrupt processing, with error message:
- Create a new subclass for the superclass of the exception. For example, a subclass with the name
ZCX_AEB_AES for the superclass /AEB/CX_AES_PB_CONS_ETE_SC. - Define the subclass as class type Exception class, deactivate the property "With messages of message classes as exception texts" and activate the Final property.
- Define the corresponding long texts for the required error messages in the created subclass in the
Texts folder. The newly created text IDs should begin with "ZZ", for example,
zzmessage_wrong_country. - Save and activate the subclass.
- In the BAdI, call an exception for the new subclass and enter the text ID of the relevant long text for
the error message:
IF im_vbrk-land1 = 'DE'.
RAISE EXCEPTION TYPE zcx_aeb_aes
EXPORTING
textid = zcx_aeb_aes=>zzmessage_wrong_country.
ENDIF.
Interrupt processing, with error message including parameter value:
- Within the error message, it is possible to determine part of the displayed text dynamically using a
parameter. - To do this, define a new variable in the subclass of the exception. (Folder Attributes, Type of attribute
is Instance Attribute, the visibility is public, Type corresponds to the intended value). Example:
Variable ZZVBELN, type VBELN. - Use the variable when defining the long text, including % characters. Example for the content of a
long text: "Country for document %ZZVBELN% is not valid". - In the BAdI, call the exception with the corresponding parameter:
IF im_vbrk-land1 = 'DE'.
RAISE EXCEPTION TYPE zcx_aeb_aes
EXPORTING
textid = zcx_aeb_aes=>zzmessage_wrong_country
zzvbeln = im_vbrk-vbeln.
ENDIF.
Updated 2 months ago