点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
向大家致意。
我正在分析系统中的一种ABAP程序。
似乎在开发和生产系统中产生了不同的结果。
我知道这两个系统之间会有数据差异。 但是,select语句返回的结果的排序顺序会有所不同。
当执行下面的SELECT语句时,在开发系统中,结果按数据库表键FIELD1排序。 但是在生产系统中,据我所知,没有排序。
是否有一些参数或数据库设置可以控制这一点。
如何在生产系统中获得正确排序的结果。
以下是我的select语句和相关的数据声明
类型:ty_table1的开始,
field2类似于table1-field2,
field1类似于table1-field1,
field3像table1-field3,
field4就像table1-field4,
ty_table1结束。
数据:ty_table1的i_table1类型标准表。
选择field2 field1 field3 field4
FROM table1
进入表i_table1的对应字段
在哪里
field2 ='100191'。
数据库表TABLE1的字段顺序为FIELD1-FIELD2-FIELD3-FIELD4。 FIELD1是唯一的关键字段。
你好乔什瓦,
您应该通过abap编码保证相同的排序顺序。 我不会在SQL语句中使用它,因为ORDER BY会降低性能。
相反,应声明内部表是使用唯一键排序的,或者您可以根据需要对内部标准表进行排序,而按FIELD1的升序或降序进行。
Jonas
ORDER BY不会降低性能。 如果要按特定顺序排列数据,请在选择->而不是SORT语句中使用ORDER BY。
你好Joshva,
如果未定义顺序,则选择语句获取数据的顺序是不可预测的。 db上的顺序似乎主要是创建的顺序,但是可以随时更改。
这很危险,因为开发人员会看到任何订单,并认为总是这样。 但这不是!
因此,如果您的声明中未定义任何订单,请不要考虑任何订单!
致谢
Stefan
是的,好的做法始终是对数据进行显式排序(在SELECT或SORT语句或内部表的定义中),以防止出现诸如。说明602138-IDoc:段字段的顺序不正确...
关于
雷蒙德(Raymond)
非常感谢您的回答。
我将在ABAP代码中进行更改,以对内部表进行排序。
我只是想检查除通过程序外是否还有其他方法可以控制它。
但是您已经为我澄清了这一点。
此致
约书亚。
嗨,乔什瓦,
编写Select语句时有3件事-
1。 选择字段的顺序应与数据库表中的顺序相同。
2。 where条件中的字段顺序也应与数据库表中的顺序相同。
3。 您要选择的内部表中字段的顺序也应与数据库表中的顺序相同。
此内部表在声明时理想情况下应为标准类型,并应在 选择查询。
因此理想情况下,您的选择查询应该像这样
TYPES:TY_TABLE1的BEGIN,
FIELD1 TYPE TABLE1-FIELD1,
< p> FIELD2类型TABLE1-FIELD2,FIELD3类型TABLE1-FIELD3,
FIELD4类型TABLE1-FIELD4,
TY_TABLE1的结尾。
DATA:TY_TABLE1的I_TABLE1类型标准表。
选择FIELD1
FIELD2
FIELD3
FIELD4
FROM TABLE1
INTO TABLE I_TABLE1
其中FIELD1 =
AND FIELD2 =
AND FIELD3 =
AND FIELD4 =
IF SY-SUBRC EQ 0。
SORT I_TABLE1通过FIELD1 FIELD2 FIELD3 FIELD4。
ENDIF。
一周热门 更多>