Exception and Error Handling in ABAP Reports

by | Oct 17, 2020 | ABAP Beginner

Home » SAP » ABAP » ABAP Beginner » Exception and Error Handling in ABAP Reports

Preface – This post is part of the ABAP Beginner series.

Introduction

A programmer always tries to code in such a way that his code is bug free and full proof. But there are certain scenarios, where his codes can fail. In such case, if the coder already knows the scenarios, then he handle them in form of Error handling. But, in case of situations, where an error can be generated due to unknown situations and left un-handled can cause serious dumps. For these scenarios, we have exception handling in SAP. In this article we will explore all scenarios of Exception and Error Handling in ABAP Reports

Exception and Error Handling in SAP ABAP Reports

As discussed above, a coder is required to handle known issues as well as intended error messages. These messages are shown to user in the output via MESSAGE statement.

Different ways to catch Errors/Exception

ABAP provides various ways to catch errors in an ABAP program.

  1. Using System Variable

The simplest way is to use their system variables.

 SY-SUBRC EQ  0. "This statement indicates that an operation completed successfully.
 SY-SUBRC NE  0. "This statement indicates that an operation has failed.

This way works directly if the entire code of report was process within the same program. It means, it cannot catch an error directly in case you have processed a Function Module or ABAP Class statements. For those entity, we need to raise exception from their end, and then exception can be handled in the report and processed accordingly.

  1. Catching Errors based on Exception

In case, we implement a function module or method of a class, then it is important to raise exception from these classes and then we can catch these exceptions in report and show respective error.

For Example:

CALL FUNCTION 'Test_Function'
     EXPORTING
          DELIMITER =   ':'
          STRING        =   lv_string
     IMPORTING
          HEAD           =   lv_head
          TAIL             =   lv_tail
     EXCEPTIONS
          NOT_FOUND   =  1
          OTHERS       =   2.


CASE SY-SUBRC.
     WHEN 1. ...
// Show Error Message
     WHEN 2. ...
// Show Error Message
     WHEN OTHER.
// Show Error Message
ENDCASE.

 

  1. Using TRY CATCH ENDTRY

In case an exception is raised via a method of class, or an unexpected exception is raised, in these cases, we use TRY CATCH functionality of SAP ABAP. This is one of the best full proof way to handle all types of exceptions.

Example:

TRY.
     //Call your class or function module here
CATCH CX_SY_ZERODIVIDE INTO O_REF. // The exception you have raised there
     MESSAGE “Your Error Message”.
ENDTRY.

 

Different ways to show Messages

  1. Using ABAP Statement

Syntax:

MESSAGE ‘<Enter Your Text here>’ TYPE ‘Enter the type of Message here’.

 

Types of Message

ABAP provides the following 6 types of messages:

Message TypeMeaningExplanation
ATerminationThis message is shown during program termination.
EErrorThis message is shown during Error.
IInformationThis message is used to show any information.
SSuccessThis shown in the status of the Output screen.
WWarningIt behaves like an error message.
XExitIt causes a short dump with error message.

 

  1. Using Predefined Function Modules

ABAP provides following function modules that can be used to store, format and show messages altogether:

Function ModuleUsage
MESSAGES_INITIALIZETo Initialize the messages.
MESSAGE_STORETo Store the messages to be displayed.
MESSAGES_SHOWTo Display all the messages together on a pop up
FORMAT_MESSAGETo Format the messages
HR_DISPLAY_ERROR_LISTTo display all the error messages

Example:

  1. Using Message Statement
MESSAGE 'This is an error message' TYPE 'E'.

 

  1. Using Multiple functions to store and show messages:
" It is Initialized only initially...
* Initialize your messages
  CALL FUNCTION 'MESSAGES_INITIALIZE'
    EXCEPTIONS
      log_not_active       = 1
      wrong_identification = 2
      OTHERS               = 3.
"One by one append all your messages here
      PERFORM store_messages USING 'E'
                                   w_pn
                                   w_batch2
                                   w_werks
                                   ' '
                                   w_msgno.
FORM store_messages USING p_msgty
                          p_msgv1
                          p_msgv2
                          p_msgv3
                          p_msgv4
                          p_txtnr.
  IF p_msgty EQ 'E'.
    w_err_fg = 'X'.
  ENDIF.
* Store all your messages meant to be displayed
  CALL FUNCTION 'MESSAGE_STORE'
    EXPORTING
      arbgb                  = 'ZCCH001'
      msgty                  = p_msgty
      msgv1                  = p_msgv1
      msgv2                  = p_msgv2
      msgv3                  = p_msgv3
      msgv4                  = p_msgv4
      txtnr                  = p_txtnr
    EXCEPTIONS
      message_type_not_valid = 1
      not_active             = 2
      OTHERS                 = 3.
ENDFORM.                    " STORE_MESSAGES
"In the end fetch all your message and show them altogether
* This displays all the messages in a popup
  CALL FUNCTION 'MESSAGES_SHOW'
    EXPORTING
      show_linno         = ' '
    IMPORTING
      e_exit_command     = wa_exit_command
    EXCEPTIONS
      inconsistent_range = 1
      no_messages        = 2
      OTHERS             = 3.

 

  1. Using HR_DISPLAY_ERROR_LIST
DATA:
it_error        TYPE STANDARD TABLE OF HRERROR,"TABLES PARAM
wa_error     LIKE LINE OF it_error .
DATA(ld_no_popup) = 'some text here'.
DATA(ld_no_print) = 'some text here'.
DATA(ld_no_img) = 'some text here'.
DATA(ld_no_msgno) = 'some text here'.
DATA(ld_linesize) = '123 '.
DATA(ld_listheader) = 'Check type of data required'.
DATA(ld_colheader) = 'Check type of data required'.
DATA(ld_hidemsg) = 'some text here'.
 
 
"populate fields of struture and append to itab
append wa_error to it_error.
.
CALL FUNCTION 'HR_DISPLAY_ERROR_LIST'
* EXPORTING
*   no_popup =                   ld_no_popup
*   no_print =                   ld_no_print
*   no_img =                     ld_no_img
*   no_msgno =                   ld_no_msgno
*   linesize =                   ld_linesize
*   listheader =                 ld_listheader
*   colheader =                  ld_colheader
*   hidemsg =                    ld_hidemsg
* TABLES
*   error =                      it_error
  EXCEPTIONS
    INVALID_LINESIZE =           1
    .  "  HR_DISPLAY_ERROR_LIST
IF SY-SUBRC EQ 0.
  "All OK
ELSEIF SY-SUBRC EQ 1. "Exception
  "Add code for exception here
ENDIF.

 

Author

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Author