Documentation View

We are hiring and constantly growing! Have a look through our vacancies to find the right role for you!



CL_GUI_FRONTEND_SERVICES - Frontend Services   CL_GUI_FRONTEND_SERVICES - Frontend Services  
This documentation is copyright by SAP AG.
SAP E-Book


Short Reference

CATCH SYSTEM-EXCEPTIONS $[exc1 = n1 exc2 = n2...$]
                        $[OTHERS = n_others$].



Handling catchable runtime errors. The statement CATCH SYSTEM-EXCEPTIONS introduces a control structure containing a statement block statement_block that is always processed. In the list exc1 = n1 exc2 = n2 ..., catchable runtime errors and exception groups can be specified in any order. A directly specified number n1 n2 ... must be assigned to each of them.

The OTHERS addition can be specified independently or after the list exc1 = n1 exc2 = n2 .... Its effect is the same as specifying an exception group that includes all catchable runtime errors of the runtime framework.

The system handles the CATCH control structure as follows:

  • If one of the specified catchable runtime errors or a catchable runtime error contained in the specified exception groups occurs, the execution of the statement block is immediately terminated, the program continues after the statement ENDCATCH, and the number n1 n2 ... assigned to the catchable runtime error or the exception group, is stored for evaluation in the system field sy-subrc. If the list contains a catchable runtime error and its exception group or if a catchable runtime error occurs in some of the specified exception groups, sy-subrc contains the assigned number of the first position in the list.

  • If a catchable runtime error occurs in the statement block that is not specified in the statement CATCH SYSTEM-EXCEPTIONS or is not contained in one of the specified exception groups, the program terminates with a short dump

  • If the end of the statement block is reached and no runtime error occurs, sy-subrc is set to 0.

A CATCH control structure cannot be defined in the same processing block, in which the class-based exceptions are handled in a TRY control structure or are raised by the statement RAISE EXCEPTION or by the addition THROW in a conditional expression.


  • Catchable runtime errors are not passed from called procedures to the caller. They can only be caught within a processing block. Within a processing block, catchable runtime errors are caught in control structures that can be nested in any depth. If multiple CATCH control structures are nested, the system branches behind the ENDCATCH statement of the innermost CATCH control structure that handles the runtime error.
  • The handling of catchable runtime errors using CATCH SYSTEM-EXCEPTIONS is obsolete and should be replaced by a TRY control structure. Since class-based exceptions are assigned to all catchable runtime errors, this is possible without restriction. The class-based exceptions can also be passed from a procedure using RAISING, as well as by using TRY.


Catches all possible catchable runtime errors in a statement block. Catchable runtime errors of the exception group ARITHMETIC_ERRORS set sy-subrc to 4, all other catchable runtime errors set sy-subrc to 8. The division by 0 causes the catchable runtime error COMPUTE_INT_ZERODIVIDE, which is contained in the exception group ARITHMETIC_ERRORS. In this case, sy-subrc is also set to 4.

BAL_S_LOG - Application Log: Log header data   TXBHW - Original Tax Base Amount in Local Currency  
This documentation is copyright by SAP AG.

Length: 5070 Date: 20221203 Time: 172949     sap01-206 ( 105 ms )