我有许多使用动态调用的 ABAP 程序submit。为了确保它能够运行,我首先进行语法检查。
syntax-check for program programName message error line location word word.
if ( sy-subrc = 0 ).
submit (programName) exporting list to memory and return.
endif.
我遇到的问题是由于逻辑错误。其中一个程序最终试图将一个数字除以零。我不知道为什么或者是否可以修复该错误,但我想做的是能够优雅地告诉我的应用程序发生了错误,而不是让整个应用程序停止。
为了论证起见,假设程序是:
report.
data(holeInEarth) = 1 / 0.
我尝试使用 try catch 块,但如果发生错误,则不会发生任何事情。
try.
submit (programName) exporting list to memory and return.
catch cx_root into (err).
...do something with err...
endtry.
我也尝试使用catch system-exceptions.
catch system-exceptions others = 1.
submit (programName) exporting list to memory and return.
endcatch.
在后台运行报告不是一个选项,因为我需要结果。有没有办法从这个语句中捕获错误?
