SAP/ABAP 接口中关于终止类型错误消息(A、E、X)的处理,使用CALL FUNCTION…EXCEPTIONS

SAP/ABAP 接口中关于终止类型错误消息(A、E、X)的处理,使用CALL FUNCTION…EXCEPTIONS

CALL FUNCTION func [EXCEPTIONS
[exc1= n1 exc2= n2]
[others= n_others] ]
[ERROR_MESSAGE = n_error].

exc1,exc2…与OTHERS异常只能捕获到MESSAGE…RAISING选项或RAISE语句抛出的异常,而error_message是无法捕获MESSAGE…RAISING与RAISE抛出的异常的

MESSAGE中的RAISING <exc1…exci>抛出异常时,如果在Call Function的Exception列表中有exc1…exci或others异常,则异常会优先被exc1…exci或others捕获到;否则RAISING选项将直接被忽略掉,MESSAGE会被error_message所捕获(在使用error_message捕获的前提下)

如果加了选项RAISING时:MESSAGE… RAISING ,此时的Message 的处理方式与是否显示,就要依赖于主调者在调用时,是否加上了exception 选项:

1、如果调用时没有带exception 选项,此时Message语包中的RAISING 选项抛出的异常将会被忽略,Message语句会当作正常消息来处理

2、 如果调用时加上了exception 选项对exc 异常进行了捕获,则不会再显示消息(但如果即使加上了exception选项,但没有捕获到exc异常,则此时会忽略RAISING选项),并设置sy-subrc。只要异常被捕获,相关消息内容将会入存入到SY-MSGID,SY-MSGTY, SY-MSGNO, and SY-MSGV1 to SY-MSGV4有关系统变量中。

### ABAP 中 `CALL FUNCTION` 的使用方法 #### 基本语法结构 在 ABAP 编程中,`CALL FUNCTION` 是用于调用函数模块的关键字。基本语法如下: ```abap CALL FUNCTION 'FUNCTION_NAME' EXPORTING parameter_name1 = value1 ... IMPORTING parameter_name2 = value2 ... TABLES table_parameter_name = itab ... EXCEPTIONS exception1 = 1 exception2 = 2. ``` 此语句允许程序通过指定参数来执行特定功能[^1]。 #### 同步与异步调用的区别 当希望立即等待结果返回时可以采用同步方式;而如果不需要立刻获取处理成果,则可以选择异步模式,在这种情况下会启动一个新的后台任务来进行操作。 对于异步调用而言,其具体写法为: ```abap CALL FUNCTION 'REMOTE_FUNCTION' STARTING NEW TASK 'TaskName'. ``` 这里需要注意的是,为了确保异步任务能够成功创建并运行,目标系统之间应当已经建立了适当的消息传递机制以及权限配置。 #### 实际应用案例展示 下面给出一段简单的代码片段作为例子说明如何利用上述特性实现文件转换的功能——即将 SAP 打印队列中的数据转化为 PDF 文件格式保存下来[^2]: ```abap DATA: lv_spool_id TYPE tsp01-rqident, lt_pdf_data TYPE STANDARD TABLE OF tline. lv_spool_id = 'YOUR_SPOOL_ID'. CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF' EXPORTING src_spoolid = lv_spool_id TABLES pdf_tab = lt_pdf_data EXCEPTIONS err_no_job = 1 err_conv_failed = 2 OTHERS = 3. IF sy-subrc EQ 0. " 成功转化后的PDF二进制流存储于lt_pdf_data表内, 可进一步处理这些数据... ENDIF. ``` 这段脚本首先定义了一个变量用来接收待处理打印作业ID,并准备好了存放最终输出内容的数据容器。接着便是正式发起请求给服务器端负责实际工作的服务接口(`CONVERT_ABAPSPOOLJOB_2_PDF`),期间还指定了可能出现错误情况下的异常捕获逻辑。最后检查整个过程是否顺利完成,以便后续动作安排。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

令狐九剑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值