函数模块的异常抛出
*&---------------------------------------------------------------------*
*& Report Z_TEST_EXCEPTIONS_LHY
*&---------------------------------------------------------------------*
*& TYPE:Report
*& Description:函数模块的异常抛出
*& Creator:LiuHongyu
*& Created On:2024年2月24日
*&---------------------------------------------------------------------*
* Change History
* ---------- ------------- ------------- -------------
* Version Date Change By Description
* ---------- ------------- ------------- -------------
* N 2024.2.24 LiuHongyu 创建
*&---------------------------------------------------------------------*
REPORT z_test_exceptions_lhy.
*&----------------------------Variables--------------------------------*
DATA itab TYPE spfli_tab.
DATA str TYPE string.
*&----------------------------Logic------------------------------------*
*&---------以下是从SAP系统的文档拷贝过来的程序示例,在他基础上修改的------------------*
CALL FUNCTION 'READ_SPFLI_INTO_TABLE'
EXPORTING
"id = 'LH'
id = 'DD' "原来是LH
IMPORTING
itab = itab
"EXCEPTIONS
" not_found = 4
"如果没有使用EXCEPTIONS,并且没有设置返回值的话,那么就会执行READ_SPFLI_INTO_TABLE函数模块的MESSAGE语句。
"如果使用EXCEPTIONS,那么就是触发异常,并且会有返回值,体现在sy-subrc里面,可以通过判断sy-subrc的值来确定是哪一种异常被触发了。比如使用case ... when ... 语句
.
IF sy-subrc <> 0.
* cl_demo_output=>display( '抛出not_found异常').
* MESSAGE e007(sabapdemos).
ELSE.
cl_demo_output=>display( itab ).
ENDIF.
START-OF-SELECTION.
TRY.
CALL FUNCTION 'READ_SPFLI_INTO_TABLE_NEW'
EXPORTING
id = 'DD' "原来是LH
"id = 'LH'
IMPORTING
itab = itab.
CATCH cx_no_flight_found INTO DATA(exc).
IF NOT exc IS INITIAL.
CALL METHOD exc->get_text
RECEIVING result = str. "类的方法时是returning,现在就用receiving来接收
"cl_demo_output=>display( '抛出cx_no_flight_found异常,文本:' && str ).
ENDIF.
...
ENDTRY.