点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一个事件处理程序DELETE_LOCAL_AFTER_COMMIT,其代码如下:
方法delete_local_after_commit。 "行号1
循环到gt_del_obj_tab中INTO DATA(ls_del_obj_tab)。 " object_type
iv_delflag ='X'。
捕获cx_ilm_tadir_api INTO DATA(lx_error)。
引发异常lx_error。 10
ENDTRY。
ENDLOOP。
清除gt_del_obj_tab。
ENDMETHOD。
调用事件处理程序的代码如下:
尝试。
调用方法cl_ilm_tadir_api => delete_local_after_commit。
捕获cx_ilm_tadir_api INTO DATA(lx_error)。 "第18行
ENDTRY。
但是,在第n行中引发了异常。 10未排在第10行。 18.可能出什么问题了? (由于我的方法是事件处理程序,因此我什至无法向其添加异常类)
可能您从CX_STATIC_CHECK或CX_DYNAMIC_CHECK继承了异常类,然后将其包装到CX_SY_NO_HANDLER类的异常中,因为[CLASS-] EVENTS无法声明RAISING
在 ABAP文档-事件处理程序中基于类的异常中对此进行了解释 。
仅不包装从CX_NO_CHECK派生的异常类。
下面是测试代码,该代码将在以下三个变量中返回捕获的异常:
测试代码(使用Ctrl + Shift运行 + F10):
我怀疑是否可以使用CALL METHOD来调用事件处理程序...事件处理程序是否可以通过RAISE EVENT"调用"(间接松耦合) p>
在实际情况下,这是一个RAISE EVENT,它会触发我的事件处理程序。 但这在我的本地测试类中,在这里我试图调用事件处理程序DELETE_LOCAL_AFTER_COMMIT(不执行SET HANDLER ...)
正如你所说,我错了: 可以使用CALL METHOD调用事件处理程序。
我发布了详细的答案,解释了您的情况可能发生的情况。
您完全问了一个新问题 与上一个无关,也与我的答案无关。
不需要将异常类与消息类相关。 如果使用消息类中的消息创建异常类,则检索相应的msgid和msgno没有问题。 如果您需要更多信息,请提出更多详细信息。
一周热门 更多>