SE16中的排序顺序不正确

2020-08-19 02:15发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我有一个表,当用SE16n查询时,确实显示了不正确的排序顺序。

表具有以下列:

MANDT
ID(INT2-键)
TEXT(CHAR80-非键)


即使按顺序输入了数据(即ID = 1、2、3等),并在使用SM30或SQL进行检查时也显示了这种方式,当我使用SE16查询时,它仍按TEXT排序 柱。

为什么会发生这种情况? 我以为SE16的默认顺序是通过表键...

预先感谢

路易斯

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

我有一个表,当用SE16n查询时,确实显示了不正确的排序顺序。

表具有以下列:

MANDT
ID(INT2-键)
TEXT(CHAR80-非键)


即使按顺序输入了数据(即ID = 1、2、3等),并在使用SM30或SQL进行检查时也显示了这种方式,当我使用SE16查询时,它仍按TEXT排序 柱。

为什么会发生这种情况? 我以为SE16的默认顺序是通过表键...

预先感谢

路易斯

付费偷看设置
发送
5条回答
黑丝骑士
1楼 · 2020-08-19 02:47.采纳回答

SE16和SE16N默认情况下不排序,就像默认情况下没有RDBMS排序一样。

您提到了带有该错误的SE16,但同时也提到了SE16N,您实际上与这些错误具有相同的行为还是不同?

我的第一个猜测是,该表已缓冲,在大多数情况下,当数据从数据库"未排序"时,这将导致其他"排序"。 您可以检查表的缓冲区设置,还可以将调用与SE16和SE16N进行比较。

  • SE16N总是超过缓冲区,而SE16不会,甚至会为每个表生成自己的显示报告。 我假设SM30不会绕过缓冲区,但是由于还生成了SM30的报告,因此可能还会有更多的逻辑在进行。 默认情况下,SQL编辑器绝对不会排序。

如果您想将SE16 SQL select语句与SE16N,SM30或SQL编辑器中的select语句进行比较,我建议您比较 ST05 SQL跟踪(或ST01,如果需要)。

  • 还可以在调用select语句时调试SAP编码,并比较所选数据的顺序,以防比较SQL跟踪 麻烦:
  • SE16生成的报告很可能看起来像这样:如果是MARA,则为/1BCDWB/DBMARA;如果是MVKE,则为/1BCDWB/DBMVKE,并且它们有几个针对数据库的预定义SQL选择,具体取决于 关于选择和输出标准的最后一个配置
  • 可以在"使用的列表"或SE11中以及通过设置了功能组的表维护生成器找到SM30的选择语句。
  • SE16N在Include LSE16NF95-SELECT_CENTRAL

中动态构建选择语句。如果SQL语句相同,则 差异只能通过处理所选数据的程序来解释。 在那种情况下,我会假设设置了布局或使用了变体。

哎,真难
2楼-- · 2020-08-19 02:56

SQL默认不会对SELECT的结果进行排序。 您必须使用ORDER BY来做到这一点。 但是可能会影响性能。 因此,除非有排序要求,否则不会对行进行排序。 我认为SE16/SE16N中的行排序没有附加值。

自定义表通常很小。 对行进行排序并不令我感到惊讶,这不会显着影响性能。

SAP小菜
3楼-- · 2020-08-19 02:42

一个简短的问题:您是否将SAP HANA用作数据库? 该数据库不会自动按主键对数据进行排序。 我目前不确定SE16或SE16N是否正在对它们进行排序。 Eclipse中的数据预览和SQL控制台肯定没有。

另一个原因可能是ID的数字类型。 在这种情况下,它们将按字母顺序排序(1、10、11,[..],2、20,...)。

另一个不确定条目排序的地方是SM30。

Nan4612
5楼-- · 2020-08-19 02:47

在任何关系数据库中的表上都没有定义的顺序。 如果要订购,则必须排序。 对于HANA来说,这并不是新事物。 我已经在Oracle,Informix,Ingress中看到了它(是的,我很老)。

一周热门 更多>