ABAP 函数模块的异常抛出

89 篇文章 0 订阅
本文详细描述了在SAP系统中如何处理函数模块的异常,包括使用EXCEPTIONS结构处理可能的错误,以及使用TRY/CATCH块捕获特定异常如cx_no_flight_found,并展示了相应的错误文本输出。
摘要由CSDN通过智能技术生成

函数模块的异常抛出

在这里插入图片描述

*&---------------------------------------------------------------------*
*& Report Z_TEST_EXCEPTIONS_LHY
*&---------------------------------------------------------------------*
*& TYPE:Report
*& Description:函数模块的异常抛出
*& Creator:LiuHongyu
*& Created On:2024224*&---------------------------------------------------------------------*
*                           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. 

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值