点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我正在尝试从VARID的每个报表/变体组合中调用RS_VARIANT_CONTENTS。 我发现那里有一些程序已保存了语法错误,这导致RS_VARIANT_CONTENTS在运行时崩溃。 不幸的是,系统中有成千上万的变体,因此要花一些时间才能运行并获得每个选择字段值的结果。 我试图在调用RS_VARIANT_CONTENTS之前从表中删除我知道会导致错误的程序,但是每次运行它时,似乎都会弹出另一个程序。 另外,我们希望运行该命令的频率较高,因此我正在寻找一种解决方案,该解决方案可以在将来捕获可能导致RS_VARIANT_CONTENTS失败的程序。
我尝试过RS_SYNTAX_CHECK,它捕获了其中一些,但是还有其他一些RS_SYNTAX_CHECK没有捕获,它们导致了运行时错误转储。
有人对此有想法吗?
谢谢!
你好,马修,
您是否尝试过TRY/CATCH语句? 这样可以防止任何转储,并允许您检测"不良"变体。
仔细查看转储屏幕,以更精确的错误类型替换cx_root。
最好的问候
贝特朗
你好,
CX_SY_IMPORT_MISMATCH_ERROR可能指示错误来自先前SAP版本中创建的旧变体。 您的计算机是否已从4.6(或非Unicode系统)升级?
如果是这样,则可以运行RS_VARIANT_INFO(具有prog_range = [I,EQ,progname,]),对于旧版本(升级之前的版本),请调用NO_IMPORT ='X'的RS_VARIANT_CONTENTS并在调试中分析其参数列表。 也许这样,您将找到一种识别不良变体的方法(并构建算法)。
防止无法捕获的转储的另一种方法是在作业/批处理中运行专用的外部特定程序(或者在新任务中调用FM,可能是我从未尝试过)。 从其后台处理中检索数据,没有数据意味着发生转储,请进行处理。
Bertrand
使用参数EXECUTE_DIRECT ='X'运行功能模块RS_VARIANT_CONTENTS并使用EXCEPTIONS ERROR_MESSAGE = 99可能会很有用,否则执行SUBMIT来检索变量内容(因此 您将无法处理任何异常),并且任何以" A"类型发送的错误消息都将终止您的程序(它可能会执行MESSAGE A093(DB))。
此方法有效,谢谢 。
编写一个小助手程序,将相应程序读入内部表并执行SYNTAX-CHECK 语句是否针对每个语句? 那就是我会做的(实际上,例如每天晚上都要查看ABAP文档的所有示例)。
那是一个不同的故事。 您没有语法,但是运行时错误! 当然,通过语法检查无法找到这些内容。
语法上正确,但是如果num包含0,则会崩溃。
使用TRY CATCH,您只能捕获可捕获的异常。 对于无法捕获的异常,您始终必须解决根本原因。
但实际上 CX_SY_IMPORT_MISMATCH_ERROR 是可捕获的。 但请注意,异常不会在程序外部传播。 因此,没有必要在提交周围放置TRY CATCH。 对于这种测试,您可以编写UNIT测试(从概念上讲是一种误用,但我们会...)。
一周热门 更多>