RS_VARIANT_CONTENTS崩溃

2020-08-19 19:10发布

         点击此处--->   EasySAP.com群内免费提供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没有捕获,它们导致了运行时错误转储。

有人对此有想法吗?

谢谢!

         点击此处--->   EasySAP.com群内免费提供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没有捕获,它们导致了运行时错误转储。

有人对此有想法吗?

谢谢!

付费偷看设置
发送
6条回答
大简至美
1楼-- · 2020-08-19 19:54

你好,马修,

您是否尝试过TRY/CATCH语句? 这样可以防止任何转储,并允许您检测"不良"变体。

尝试。
 *调用函数" RS_VARIANT_CONTENTS" [...]
 捕获cx_root。
 *在报告屏幕中提及该变体的技术错误
 ENDTRY。  

仔细查看转储屏幕,以更精确的错误类型替换cx_root。

最好的问候

贝特朗

Violet凡
2楼-- · 2020-08-19 19:32

你好,

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

三十六小时_GS
3楼-- · 2020-08-19 19:55

使用参数EXECUTE_DIRECT ='X'运行功能模块RS_VARIANT_CONTENTS并使用EXCEPTIONS ERROR_MESSAGE = 99可能会很有用,否则执行SUBMIT来检索变量内容(因此 您将无法处理任何异常),并且任何以" A"类型发送的错误消息都将终止您的程序(它可能会执行MESSAGE A093(DB))。

渐行渐远_HoldOn
4楼-- · 2020-08-19 19:51

此方法有效,谢谢 。

Nir深蓝
5楼-- · 2020-08-19 19:53

编写一个小助手程序,将相应程序读入内部表并执行SYNTAX-CHECK 语句是否针对每个语句? 那就是我会做的(实际上,例如每天晚上都要查看ABAP文档的所有示例)。

xfwsx85
6楼-- · 2020-08-19 19:55

那是一个不同的故事。 您没有语法,但是运行时错误! 当然,通过语法检查无法找到这些内容。

 1/num 

语法上正确,但是如果num包含0,则会崩溃。

使用TRY CATCH,您只能捕获可捕获的异常。 对于无法捕获的异常,您始终必须解决根本原因。

但实际上 CX_SY_IMPORT_MISMATCH_ERROR 是可捕获的。 但请注意,异常不会在程序外部传播。 因此,没有必要在提交周围放置TRY CATCH。 对于这种测试,您可以编写UNIT测试(从概念上讲是一种误用,但我们会...)。

一周热门 更多>