通过例子学习ABAP(二)--内表的赋值

这是一个很有趣的例子,可以反映出带表头的内表和不带表头的内表赋值的区别。

      例子中先定义了一个结构化的字段LINE,包含了COL1和COL2两个字段。通过 APPEND line TO etab. 将值赋给ETAB之后,DEBUG看到的结果是:

   这时候再通过   MOVE etab[] TO ftab1. 语句将值赋给ITAB1中后,可以看到FTAB1表的结果是:

 

可以清楚的看到有表头的表etab和无表头的表 ftab1结果是不一样的,所以赋值和输出的方式也不同。无表头的表需要再定义一个与该内表结构相同的工作区对象供程序使用,将数据写入内表时,必须首先给工作区赋值,然后在工作区添加或者插入内表。从内表中取值时,需要用已定义的内表行内容覆盖工作区的内容,然后再从程序中使用工作区的内容。

  *&---------------------------------------------------------------------*
*& Report  ZTEST_SD1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZTEST_SD1.
* move

DATABEGIN OF line,
        col1(1TYPE c,
        col2(1TYPE c,
      END OF line.

DATA: etab LIKE TABLE OF line WITH HEADER LINE,
      ftab1 LIKE TABLE OF line.

line-col1 = 'A'line-col2 = 'B'.

APPEND line TO etab.
LOOP AT ETAB.
WRITE: / ETAB-COL1, ETAB-COL2.
ENDLOOP.

MOVE etab[] TO ftab1.
DATA wa LIKE LINE OF ftab1.

LOOP AT ftab1 INTO WA.
  WRITE : / WA-COL1 ,WA-COL2.
ENDLOOP.

LOOP AT ftab1 INTO line .
  WRITE: / line-col1, line-col2.
ENDLOOP.

SKIP.
ULINE.

 

 
posted @ 2008-10-31 11:36  elegant  阅读(5123)  评论(0编辑  收藏  举报