天天看點

SAP abap SELECT *

SAP abap SELECT *

盡量不要使用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 * ,那麼,請你在表的關聯的時候,把目标表放在關聯的最後。