說明:最近業務顧問有很多的需求,其實都是一樣的邏輯,就是處理的表不一樣,就要寫好多次程式,整理一下他的一系列需求之後,準備寫乙個動態的程式,這樣會方便很多,動態的其實核心是動態的內錶,所以簡單的說一下動態內錶的定義方式。
1、根據資料庫表定義動態內錶
這種定義比較直接,直接把資料庫表的所有欄位都放在動態內錶中了,可能會有冗餘,但是用起來比較好寫。
data: dy_table type ref to data,
dy_line type ref to data.
data :lv_tabname type char15.
field-symbols:
type standard table.
lv_tabname =
'mara'
. create data dy_table type table of (lv_tabname)
.「 assign dy_table-
>
* to
. create data dy_line like line of
. assign dy_line-
>
* to
.
2、根據自己的選擇定義動態內錶
這種定義更diy一點,用什麼定義什麼就好了,就是依據lvc_t_fcat來定義,這裡我簡單的展示一下,把我從【z_bc_get_table】獲取到的欄位名稱以及描述放在內錶中,然後去寫給lvc_t_fcat
data: dy_table type ref to data,
dy_line type ref to data.
field-symbols:
type standard table,
. data : lt_table type table of zstable.
data : lt_ftab type lvc_t_fcat.
data : lw_ftab like line of lt_ftab.
"獲取表中的字段以及描述
call function 'z_bc_get_table'
exporting
tablename = p_table
importing
ev_mess = lv_message1
tables
it_tab = lt_table.
"刪除集團字段
delete lt_table where fieldname =
'madnt'
. "如果獲取的內容有誤,則報錯
if lv_message1 is not initial.
message lv_message1 type 'e'
. endif.
"將表內容寫給lt_ftab,依據lt_ftab建立動態的內錶
loop at lt_table into data
(lw_table)
. move-corresponding lw_table to lw_ftab.
"模板都使用char 型別.
lw_ftab-datatype =
'char'
. lw_ftab-inttype =
'c'.
"小於30位的字段設為30位.
if lw_ftab-intlen <=
'000030'
. lw_ftab-intlen =
'000030'
. endif.
endloop.
"建立表的動態內錶.
call method cl_alv_table_create=
>create_dynamic_table
exporting
it_fieldcatalog = lt_ftab[
] importing
ep_table = dy_table.
assign dy_table-
>
* to
. create data dy_line like line of
. assign dy_line-
>
* to
.
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 ...
ABAP 動態內錶排序
動態內錶要排序時,因為不知道內錶中的欄位名字,所以不能直接用sort table by field1 field2.可以使用下面的方法來實現 sort table by sorttable 表型別 abap sortorder tab 結構型別 abap sortorder 示例 data w it...
ABAP 內錶的建立
一.types,data,like區別 1.types與data區別 types是用來定義某種類 型 的,需 用data語句 例項化以後才可以使用,而data是用來定義資料物件 例項變 量 的,對於用data直接定義的結構體物件 不參照其它結構型別 其同時也是乙個結構型別.2.type與like區別...