要逐行填充 内表,可以 使用 APPEND、 COLLECT 或 INSERT 语句。 _ 要将内表 仅用于存储 数据,出于 性能方面的 考虑,建议 使用 APPEND。 用 APPEND 也可以创建 序列清单。 _ 要计算数 字字段之和 或要确保内 表中没有出 现重复条目 ,请使用 COLLECT 语句,它根 据标准关键 字处理行。 _ 要在内表 现有行之前 插入新行, 请使用 INSERT 语句。 要将内表内 容复制到另 一个内表中 ,请使用 APPEND、 INSERT 或 MOVE 语句的变式 。 _ 要将内表 行附加到另 一个内表中 ,请使用 APPEND 语句的变式 。 _ 要将内表 行插入另一 个内表中, 请使用 INSERT 语句的变式 。 _ 要将内表 条目内容复 制到另一个 内表中,并 且覆盖该目 标表格,请 使用 MOVE 语句。 关于如何使 用 SELECT 语句用数据 库表格中的 数据填充内 表的详细信 息,参见 将数据读入内表。 附加行 要将行附加 到内表中, 请使用 APPEND 语句,用法 如下: 语法 APPEND [<wa> TO|INITIAL LINE TO] <itab>. 该语句将新 行附加到内 表 <itab> 中。 通过使用 <wa> TO 选项,指定 要附加的源 区域 <wa>。 对于带表头 行的表格, 可以忽略 TO 选项。这样 ,表格工作 区域就成了 源区域。 可以使用 INITIAL LINE TO 选项替代 <wa> TO,将用 其类型的正 确值初始化 的行添加到 表格中。 APPEND 不考虑是否 存在标准关 键字相同的 行(参见标识表格行) 。这样,可 能会出现相 同条目。 系统字段 SY-TABIX 在每个 APPEND 语句之后包 含附加行的 索引。 DATA: BEGIN OF ITAB OCCURS 10, COL1 TYPE C, COL2 TYPE I, END OF ITAB. DO 3 TIMES. APPEND INITIAL LINE TO ITAB. ITAB-COL1 = SY-INDEX. ITAB-COL2 = SY-INDEX ** 2. APPEND ITAB. ENDDO. LOOP AT ITAB. WRITE: / ITAB-COL1, ITAB-COL2. ENDLOOP. 本示例创建 带表头行和 两列的内表 ITAB。 表格用 DO 循环填充。 每次通过循 环时附加初 始化行,然 后用循环索 引填充表格 工作区域并 且附加循环 索引的平方 根。其输出 为: 0 1 1 0 2 4 0 3 9 DATA: BEGIN OF LINE1, COL1(3) TYPE C, COL2(2) TYPE N, COL3 TYPE I, END OF LINE1. DATA TAB1 LIKE LINE1 OCCURS 10. DATA: BEGIN OF LINE2, FIELD1(1) TYPE C, FIELD2 LIKE TAB1, END OF LINE2. DATA TAB2 LIKE LINE2 OCCURS 1. LINE1-COL1 = 'abc'. LINE1-COL2 = '12'. LINE1-COL3 = 3. APPEND LINE1 TO TAB1. LINE1-COL1 = 'def'. LINE1-COL2 = '34'. LINE1-COL3 = 5. APPEND LINE1 TO TAB1. LINE2-FIELD1 = 'A'. LINE2-FIELD2 = TAB1. APPEND LINE2 TO TAB2. REFRESH TAB1. LINE1-COL1 = 'ghi'. LINE1-COL2 = '56'. LINE1-COL3 = 7. APPEND LINE1 TO TAB1. LINE1-COL1 = 'jkl'. LINE1-COL2 = '78'. LINE1-COL3 = 9. APPEND LINE1 TO TAB1. LINE2-FIELD1 = 'B'. LINE2-FIELD2 = TAB1. APPEND LINE2 TO TAB2. LOOP AT TAB2 INTO LINE2. WRITE: / LINE2-FIELD1. LOOP AT LINE2-FIELD2 INTO LINE1. WRITE: / LINE1-COL1, LINE1-COL2, LINE1-COL3. ENDLOOP. ENDLOOP. 其输出为: A abc 12 3 def 34 5 B ghi 56 7 jkl 78 9 本示例创建 两个不带表 格工作区域 的内表(TAB1 和 TAB2) 。TAB2 有深层结构 ,因为 LINE2 的第二个组 件包含内表 TAB1 的结构。LINE1 被填充并附 加到 TAB1。 然后,将 LINE2 填充并附加 到 TAB2。 用 REFRESH 语句清除 TAB1 之后(参见 初始化内表 ),再重复 相同步骤。 请注意, TAB2 中的行数仅 在 OCCURS 参数中指定 为1。TAB2 的内容输出 。 |