您的位置:首页 > 其它

SAP abap SELECT *

2010-10-05 08:41 218 查看


 

尽量不要使用Select *。

 

程序的可读性差就不多说了。

 

在写程序的过程中,我们通常会用到一张表中的很多字段,于是图方便在定义结构体的时候就直接的

DATA: BEGIN OF GT_ITAB OCCURS 0.

               INCLUDE ***

               ***

               ***

          END OF GT_ITAB.

 

在数据选择的时候就为了方便而是用  SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB.在代码编写的时候使用这样的方式是一种很不好的习惯,一不小心会产生很难排查的错误。 尤其是在 from 语句中试用的还是 tab_a  inner join tab_b inner join tab_c 这样的多个表进行连接的时候。
我们知道 SELECT * INTO CORRESPONDING FIELDS OF TABLE ITAB,他们是根据字段的名进行一一的匹配的,我们也知道在SAP的表里面通常会有很多同名的字段,比如关联字段,保留字段等。在这个时候,内标中的字段会和哪儿源字段进行匹配呢?(关联字段倒还无所谓,因为多列是一样的值)

虽然在后期的应用中,很可能不回用到哪些保留字段。但在我们进行一些表级别的操作的时候,会产生一些困难,比如表的SORT,DELETE ADJACENT DUPLICATES FROM 的时候会对我们的数据处理带来一定的影响。
那么,SELECT * INTO CORRESPONDING FIELDS OF TABLE 的时候,多个重名列的匹配有什么规则的时候,到底怎么匹配的呢?  答案就是,匹配最后一个同名列。

所以,如果你非要使用SELECT * ,那么,请你在表的关联的时候,把目标表放在关联的最后。

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息