读取语句失败,因为内部表为空



最近我遇到了一个 Read 语句,它给出了Sy-subrceq 8。 发生这种情况是因为内部表没有记录,同时WHERE子句中的变量也是空的。我一直想知道的是,为什么我们不在 read 语句之前检查表是否不是初始的?

请让我知道我们是否可以在读取语句之前检查 itab 不是初始的。

谢谢!

是的,您可以在阅读语句之前检查itabis not initial。 什么困扰着你? 这不是问题。并且与键或表键一起使用的子句与读语句不在哪里一起使用。
如果给定键值的内部表中不存在值,则SY-SUBRC将为4

在空表上的READ TABLESY-SUBRC = 8之间建立直接链接是一个错误的假设。如果您阅读官方 ABAP 文档,您将看到SY-SUBRC = 8与变体READ TABLE ... BINARY SEARCH.

因此,对于READ TABLE ... BINARY SEARCH,如果搜索的行不存在,则SY-SUBRC将为 8,但如果插入了它,它将放在表的最后一行之后。当然,当内部表为空时,总是如此。

附录 5 月 10 日:SY-SUBRC = 8 也可能与 READ TABLE 一起出现在 SORT 类型的内部表上(因为它隐式使用二叉搜索)。

相关内容

最新更新