1 静态错误检查
1 语法检查
语法检查可以在程序编辑的任何时候进行(Check功能按钮),而且在程序激活和第一次运行过程中还将自动进行。
2 扩展语法检查
在激活或则运行ABAP程序前,一般都需要进行语法检查,但这样检查不够详尽。例如引用程序或者功能模块的语法检查,静态断点检查以及子程序等,这些通过Check功能无法发现错误。可以使用其他工具,例如SLIN检查(事务代码SLIN)。
在ABAP编辑器的初始化界面输入程序名后,选择Program->Check->Enhanced Program Check
2 运行时错误控制
因为无法确定运行时变量的值,静态检查不能完全避免运行时错误的出现。
1 可捕捉的运行时错误
SAP中可以捕捉的运行时错误组成一个运行时错误类,通过CATCH控制语句对这些错误进行处理。
CATCH SYSTEM-EXCEPTIONS exc1 = rc1 ... excn = rcn.
...
ENDCATCH.
其中excn表示一个单一的可捕捉错误或者一个ERROR类,rcn则代表一个数字。如果其中指定的错误之一在CATCH和ENDCATCH语句之间出现,程序就不会终止,而是直接跳至ENDCATCH语句。在该语句之后,系统将指定的错误代码rcn赋给字段SY-SUBRC,可以通过对该字段的值确定所发生的错误并进行相关处理。
CATCH控制结构类似于IF结构,可以进行嵌套,但必须在同一个处理块内部结束。此外该结构只能捕获当前调用级别的运行时错误,而不能对CATCH/ENDCATCH语句块内部调用的过程块中产生的错误进行处理。
REPORT z_carch_endcatch.
DATA: result TYPE p DECIMALS 3,
number TYPE i VALUE 11.
CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 10.
DO.
number = number - 1.
result = 1 / number.
WRITE: / number, result.
ENDDO.
ENDCATCH.
SKIP.
IF sy-subrc = 10.
WRITE / 'Dicision by zero!'.
ENDIF.
CATCH
2 不可捕捉的运行时错误
有些运行时错误是无法捕捉的(或者是没有对可捕捉的错误进行捕获),一旦出现该类错误,系统无法继续处理程序,将创建并进入Short Dump界面。
网友评论