发现很多人对这个基础问题还都搞不清楚,这里解释一下。

在 ABAP 的很多函数模块中都定义了异常(EXCEPTIONS 选项卡)。如果在程序中使用 CALL FUNCTION '<fm_name>' 的时候,指定了 EXCEPTION 段,并且将每个异常都对应了一个数字,则在函数模块调用中出现异常时,就会把该异常对应的数字填写到系统变量 sy-subrc 中。这样说比较抽象,看看下面这个例子就很容易明白了 

Code

 

这里,EXCEPTIONS 后面有 22 个异常,其中前 21 个是函数模块中定义的,最后一个 OTHER 是 SAP 规定的处理上述未包含的情况的。如果在函数执行中,发生了文件未找到异常(FILE_NO_FOUND),则 sy-subrc 的值就是19,在后面的 IF 结构中,就可以对 sy-subrc 为 19 的情况提示一下 “没有找到文件!”。

需要注意的是,数字和异常的对应是可以在程序代码里修改的,比如我们删除了 DP_OUT_OF_MEMORY 这个异常,并且把后面的数字都提前,变成:

Code

 

则出现 FILE_NO_FOUND 时,sy-subrc 的值就是 18,后续处理判断也要相应修改。

手工添加异常语句比较麻烦,建议使用代码编辑器中的“模式”按钮添加函数模块调用,只需要输入函数名称,系统会根据它的定义自动为你生成完整的调用代码,非常方便。

一般来说,异常的名称就能说明具体问题,如果不能完全说明,还可以到函数定义中,点击每个异常最后的按钮查看其长文本。

posted on 2009-04-23 16:39  华亭慧剑  阅读(1159)  评论(0编辑  收藏  举报