perform 也叫sub routine,是獨立存在於這個程式本身。除了這個程式別人都看不到。include後面跟的,是另外一個程式,可以用SE38去看,但是該程式的本身屬性是include,不能直接F8執行。用你的例子來說就是,你SE38打開了一個程式A。程式裡面有PERFORM QUERY_DATA.那麼就是程式A能夠使用或者說看到這個perform下的所有邏輯。至於 INCLUDE ZDMS_RP011_F01.他本身不能被直接執行,但是可以被任何的程式去呼叫。還是程式A,裡面寫了INCLUDE ZDMS_RP011_F01,那麼你就可以去SE38下面看到ZDMS_RP011_F01這個include程式下的所有邏輯,都被A使用了。需要注意的是,假設include下也有PERFORM QUERY_DATA.那麼A程式如果呼叫了這個include,在A程式本身就不能再存在這個同名的perform:PERFORM QUERY_DATA。 舉例一個常見的例子,假設一個大型專案開發。我們要興建3個報表A B C(這些報表有一定的功能交集和資料交集)那麼我們通常會這麼做,首先去建一個include D,把所有的資料定義都放在D裡面那麼ABC程式只要在程式中使用include D。就不用再定義公共的資料型別了。ABC都可以有叫perform show_result. 這個名字的perfrom,但是都是為各自的程式獨立服務,相互不會衝突。
perform 也叫sub routine,是獨立存在於這個程式本身。除了這個程式別人都看不到。include後面跟的,是另外一個程式,可以用SE38去看,但是該程式的本身屬性是include,不能直接F8執行。用你的例子來說就是,你SE38打開了一個程式A。程式裡面有PERFORM QUERY_DATA.那麼就是程式A能夠使用或者說看到這個perform下的所有邏輯。至於 INCLUDE ZDMS_RP011_F01.他本身不能被直接執行,但是可以被任何的程式去呼叫。還是程式A,裡面寫了INCLUDE ZDMS_RP011_F01,那麼你就可以去SE38下面看到ZDMS_RP011_F01這個include程式下的所有邏輯,都被A使用了。需要注意的是,假設include下也有PERFORM QUERY_DATA.那麼A程式如果呼叫了這個include,在A程式本身就不能再存在這個同名的perform:PERFORM QUERY_DATA。 舉例一個常見的例子,假設一個大型專案開發。我們要興建3個報表A B C(這些報表有一定的功能交集和資料交集)那麼我們通常會這麼做,首先去建一個include D,把所有的資料定義都放在D裡面那麼ABC程式只要在程式中使用include D。就不用再定義公共的資料型別了。ABC都可以有叫perform show_result. 這個名字的perfrom,但是都是為各自的程式獨立服務,相互不會衝突。