一个内表只需要处理几个字段,或者字段长度等不确定的情况下,可以用动态内表。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
FIELD-SYMBOLS: <lt_data> TYPE STANDARD TABLE.
DATA:
lr_line TYPE REF TO data.
"<tab_data> 可以是一个普通内表,也可以是一个指针
CREATE DATA lr_line LIKE <tab_data>.
ASSIGN lr_line->* TO <lt_data>.
"定义工作区
CREATE DATA lr_line LIKE LINE OF <lt_data>.
ASSIGN lr_line->* TO FIELD-SYMBOL(<ls_data>).
"给工作区的字段赋值,需要预先知道名称或者位置
ASSIGN COMPONENT 'SIGNEDDATA' OF STRUCTURE <ls_data> TO FIELD-SYMBOL(<fs_signeddata>).
*ASSIGN COMPONENT 2 OF STRUCTURE <ls_data> TO FIELD-SYMBOL(<fs_signeddata>).
<fs_signeddata> = 86.
"添加到内表
APPEND <ls_data> TO <lt_data>.
|
- 一个应用场景
在调用堆栈中其它程序的数据的时候,由于不想重复定义,而且为了编译通过,可以使用动态内表
1
2
3
4
|
DATA: l_text(50) TYPE c.
FIELD-SYMBOLS <fs> STANDARD TABLE.
l_text = '(ZPSR004)GT_ALV_DATA'.
ASSIGN (l_text) TO <fs>.
|