![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5yZzglewMjM5MjM2gjMx8FMvwVNvwFMxATMwIzLcRnbl1GajFGd0F2LcRXZu5ibkN3YukGavw1LcpDc0RHaiojIsJye.gif)
盡量不要使用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 * ,那麼,請你在表的關聯的時候,把目标表放在關聯的最後。