2

我在 ABAP 中编写了一个通过 SAP pyrfc 调用的函数。

如果存在 SAPSQL_PARSE_ERROR,RFC 调用者(用 Python 编写的客户端)会收到一条无意义的错误消息:

ABAPRuntimeError: RFC_ABAP_RUNTIME_FAILURE (rc=3): key=SAPSQL_PARSE_ERROR, message=Beim Parsen einer dynamischen Angabe trat ein Fehler auf。[味精:class=, type=, number=, v1-4:=;;;]

通过 tcodest22我可以查看详细信息。为了使往返速度更快,我想改进在 python 客户端上可见的错误消息。

我想,但不知道,abap 函数需要更改。如何获取可见的有价值的文本st22

我知道 st22 的输出很长。有价值的文本在德语 sap gui 中名为“Fehleranalysis”的框,大致意思是“疑难解答”或更字面的“错误分析”

4

1 回答 1

4

SAPSQL_PARSE_ERROR建议您的远程启用函数在某个时间点或其他时间向数据库提交了不正确的 OpenSQL 查询。这应该导致类型为可处理的异常CX_SY_DYNAMIC_OSQL_SYNTAX

不捕获此异常会导致转储。Transaction ST22 是转储分析工具,可让您检查这些。

在OpenSQLTRY ... CATCH查询周围加上 a 应该允许您捕获该异常并解析其属性以获得更有意义的消息。然后,您可以抛出您自己的异常以转发对 RFC 调用者更有帮助的内容。

于 2018-10-26T12:55:17.180 回答