对内表的定义,我只说下有没occurs的区别。 * *DATA: BEGIN OF itab OCCURS 0, * matnr LIKE mara-matnr, * maktx LIKE makt-maktx, * END OF itab. * *SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE itab . * *LOOP AT itab. * WRITE:/ * itab-matnr, * itab-maktx. *ENDLOOP. DATA: BEGIN OF itab, matnr LIKE mara-matnr, maktx LIKE makt-maktx, END OF itab. DATA it_itab LIKE TABLE OF itab. SELECT * FROM makt INTO CORRESPONDING FIELDS OF TABLE it_itab . LOOP AT it_itab INTO itab. WRITE:/ itab-matnr, itab-maktx. ENDLOOP. 这是我写的1点特别简单的很基础的代码。 简单的看出了,带有OCCURS的这个关键字的内表,有表存储还有表输出。就是说,它可以不用再次的写like table of 内表。这样做的目的,就是它有存储功能。如果没有occurs,就只有输出显示的功能,只是1个结构。有occurs,就是可以存储了。
指定内存。<n> 是指定行(ex:10)的初始号。当第一行写入内表后,就为指定行保留了内存。如果添加到内表中的行比 <n> 指定的要多 ,则自动扩展保留的内存。
这是老写法了,应该直接 "type standard table of ...." or "type table of ...."
举例:
TYPES: BEGIN OF gtt_matnr,
matnr TYPE mara-matnr,
maktx TYPE makt-maktx,
END OF gtt_matnr.
DATA: gt_matnr TYPE TABLE OF gtt_matnr with header line.