Abap SAPSQL_PARSE_错误异常的有意义错误消息

Abap SAPSQL_PARSE_错误异常的有意义错误消息,abap,saprfc,opensql,pyrfc,Abap,Saprfc,Opensql,Pyrfc,我在ABAP中编写了一个函数,该函数通过SAP pyrfc调用 如果存在SAPSQL_PARSE_错误,RFC调用程序(用Python编写的客户端)将收到一条无意义的错误消息: ABAPRUNTIMERROR:RFC_ABAP_运行时_失败(rc=3):key=SAPSQL_PARSE_错误,message=Beim Parsen einer dynamischen Angabe trat ein Fehler auf。[MSG:class=,type=,number=,v1-4:=;;] 通过

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

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

ABAPRUNTIMERROR:RFC_ABAP_运行时_失败(rc=3):key=SAPSQL_PARSE_错误,message=Beim Parsen einer dynamischen Angabe trat ein Fehler auf。[MSG:class=,type=,number=,v1-4:=;;]

通过tcode
st22
我可以查看详细信息。为了加快往返速度,我想改进python客户机上可见的错误消息

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


我知道st22的输出很长。有价值的文本在德语sap gui中,该框称为“fehleranalysis”,这意味着大致“疑难解答”或更多文字“错误分析”

SAPSQL\u PARSE\u error
表示远程启用的函数在某个点或其他位置向数据库提交了不正确的OpenSQL查询。这将导致类型
CX\u SY\u DYNAMIC\u OSQL\u SYNTAX
的可处理异常

未捕获此异常将导致转储。事务ST22是转储分析工具,允许您检查这些事务


正在放置<代码>尝试。。。围绕OpenSQL查询的CATCH应该允许您捕获该异常并解析其属性以获得更有意义的消息。然后,您可以抛出自己的异常,以便向RFC调用者转发更有用的内容。

最后,如果您的函数模块根据参数构建SQL查询,则可能需要通过调用类的方法来防止SQL注入。
CL\u ABAP\u DYN\u PRG
,这可能会在生成和执行查询之前检测到一些错误。