ABAP 內錶的建立

2021-06-26 01:45:25 字數 1900 閱讀 5910

一.types,data,like區別:

1.types與data區別:types是用來定義某種類(型)的,需(用data語句)例項化以後才可以使用,而data是用來定義資料物件(例項變 量)的,對於用data直接定義的結構體物件(不參照其它結構型別),其同時也是乙個結構型別.

2.type與like區別:type後面跟隨的只能是某種類(型),而like後面可以跟隨型別或例項物件,參照結構體物件生成內錶時只能用like, 不能用type,因為結構體物件不是型別,只是一種例項物件,參照結構型別生成內錶時可以用like也可以用type.其中通過like定義的內錶直接擁 有參照結構型別的元素結構,而通過type定義的內錶只能間接擁有被參照結構型別的元素結構,結構型別不能作為內錶的工作區,只有結構體物件才可以.

二.內錶的建立

方式一:

types: begin of line,

field1 type i,

field2 type i,

end of line.

現在只定義乙個型別接下來你可以定義乙個工作區:

data: itab_wa type(like) line.

接下來定義乙個無工作區的內錶:

data: itab type(like) line occurs 0.

data: itab type(like) standard table of line initial size 0.

定義乙個有工作區的內錶:

data: itab type(like) line occurs 0 with header line.

data: itab type(like) standard table of line initial size 0 with header line.

方式二:

你可以直接用data來定義,例如:

data: 

begin of line,

field1 type i,

field2 type i,

end of line.

這時候line本身就是乙個物件,它當然可以當作工作區來使用,這時你就不用再定義乙個工作區了

(當然你如果願意也可以自定義乙個工作區)。

用data定義的line本身也是乙個結構型別。

例如下面再定義乙個工作區:

data: itab_wa type(like) line.

定義乙個內錶:

data: itab type(like) line occurs 0 with header line.

data: itab type(like) standard table of line initial size 0 with header line.

方式三:

當然你可以直接定義內錶,這個內錶是有工作區的(不管有無header line實踐證明):

data: begin of itab occurs 0 ,

carr1 like spfli-carrid,

conn1 like spfli-connid,

end of itab.

下面我再定義乙個類似的無工作區的內錶:

data: itab1 type itab.(錯誤的,實踐證明,定義出來的什麼都不是)。

正確方法:itab1 type itab occurs 0.(這樣定義後的是乙個無工作區的內錶)。

下面我再定義乙個類似的有工作區的內錶:

data: itab1 like itab occurs 0 with header line.

方式四:

這種方法,我沒有用過,以後用到了再說吧。

data: begin of structure itab1 occurs 0.

include 

structure itab.

end of structure itab1.

ABAP建立動態內錶

說明 最近業務顧問有很多的需求,其實都是一樣的邏輯,就是處理的表不一樣,就要寫好多次程式,整理一下他的一系列需求之後,準備寫乙個動態的程式,這樣會方便很多,動態的其實核心是動態的內錶,所以簡單的說一下動態內錶的定義方式。1 根據資料庫表定義動態內錶 這種定義比較直接,直接把資料庫表的所有欄位都放在動...

關於ABAP內錶

1.內錶的型別及定義 1 any table 即任意表型別,此種定義方式只能在傳遞引數的時候定義。例如 form using changing type any table 2 any table包括了兩種型別 index table和hashed table 1 index table 包括了st...

ABAP動態內錶

定義的動態內錶,對應內錶一行的工作區 field symbols type standard table type any.form create dynamic table data lt fcat type slis t fieldcat alv,ls fcat like line of lt ...