1.9. ABAP程序中的局部與全局變量
報表程序中選擇屏幕事件塊(AT SELECTION-SCREEN)與邏輯數據庫事件塊、以及methods(類中的方法)、subroutines(FORM子過程)、function modules(Function函數)中聲明的變量為局部的,即在這些塊里聲明的變量不能在其他塊里使用,但這些局部變量可以覆蓋同名的全局變量;除這些處理塊外,其他塊里聲明的變量都屬於全局的(如報表事件塊、列表事件塊、對話Module),效果與在程序最開頭定義的變量效果是一樣的,所以可以在其他處理塊直接使用(但要注意的是,需遵守先定義后使用的原則,這種先后關系是從語句書寫順序來說的,與事件塊的本身運行順序沒有關系);另外,局部變量聲明時,不管在處理塊的任何地方,其效果都是相當於處理塊里的全局變量,而不像其他語言如Java那樣:局部變量的作用域可以存在於任何花括號{}之間(這就意味着局部變量在處理過程范圍內是全局的),如下面的i,在ABAP語言中還是會累加輸出,而不會永遠是1(在Java語言中會是1):
FORM aa.
DO 10 TIMES.
DATA: i TYPE i VALUE 0.
i = i + 1.
WRITE: / i.
ENDDO.
ENDFORM.
