说明:几种内表的定义方法。
REPORT ZTESTLP_1206.
DATA: BEGIN OF itab_test OCCURS 0, " 定义了一个有表头的内表
matnr(04) TYPE C,
ebeln TYPE I,
END OF itab_test.
TYPES: BEGIN OF itab_c,
aaa TYPE I,
bbb(20) TYPE C,
END OF itab_c.
DATA: ITAB1 LIKE RANGE OF MARA-MATNR. " 定义一个表,结构为ranges ,有上下限
RANGES: s_bwart FOR mseg-bwart.
" data like
DATA tlike LIKE itab_test. " 定义一个结构
DATA tlike_occurs0 LIKE itab_test OCCURS 0. " 定义一个无表头的内表
DATA tlike_occurs0_withhead LIKE itab_test OCCURS 0 WITH HEADER LINE. " 定义一个有表头的内表
" data like line of
DATA: like_line_of LIKE LINE OF itab_test, " 定义一个结构
like_line_of_occurs0 LIKE line of itab_test OCCURS 0, " 定义一个无表头的内表
like_line_of_occurs0_nohead LIKE LINE OF itab_test OCCURS 0 WITH HEADER LINE. " 定义一个有表头的内表
" data like table of 只能跟内表,不能跟结构、工作区
DATA lt LIKE TABLE OF itab_test . " 定义了一个参照有表头内表的内表,但不带工作区
*DATA lt_occurs0 LIKE TABLE OF itab_test OCCURS 0. 错误定义,不可带OCCURS 0。
DATA lt_withhead LIKE TABLE OF itab_test WITH HEADER LINE. " 定义一个有表头的内表。
*DATA lt_orc LIKE LINE OF itab_c. " 错误定义 不能跟结构itab_C.
" 另外定义lt的工作区。
DATA: BEGIN OF wa_lt,
matnr(04) TYPE C,
ebeln TYPE I,
END OF wa_lt. itab_test-matnr = '0014'. itab_test-ebeln = 12133.
APPEND itab_test.
itab_test-matnr = 'BT02'. itab_test-ebeln = 23433.
APPEND itab_test.
wa_lt-matnr = 'KKKK'. wa_lt-ebeln = 8888.
APPEND wa_lt to lt.
wa_lt-matnr = 'KKKG'. wa_lt-ebeln = 99999.
APPEND wa_lt to lt.
WRITE : 'itab_test内表原始数据:'.
CLEAR itab_test.
LOOP AT itab_test.
WRITE: / itab_test-matnr, itab_test-ebeln.
ENDLOOP.
LOOP AT lt INTO wa_lt.
WRITE: / wa_lt-matnr, wa_lt-ebeln.
ENDLOOP.
clear itab_test.
SKIP 2.
WRITE : 'itab_test内表清空测试:'.
if itab_test is INITIAL.
WRITE :/ '表头清空'.
ENDIF.
CLEAR itab_test[].
if itab_test[] is INITIAL.
WRITE: / 'itab_test表体清空'.
endif.
CLEAR lt.
if itab_test[] is INITIAL.
WRITE: / 'lt表体清空'.
endif.