ABAP里存放数据的不是数组,而是内部表。我们从DB里把数据取出来就是放在内部表里的。然后通过对内部表的数据进行处理,最后再显示出来的。处理的时候是通过LOOP循环把内部表的数据放到工作区域。然后一个一个的时行处理。下面我们来看看内部表吧。
一,内部表的定义
1,参照工作区域,前面先定义好工作区域。
DATA IT_EKBE LIKE TABLE OF WA_EKBE.
这里的WA_EKBE是上节我们定义好的工作区域,参看工作区域,这样定义好的内部表的话,结构是跟WA_EKBE一样的,只不过WA_EKBE只能存放一个数据,而IT_EKBE可以存放无数条数据。
2,参照DB表。
比如我们上一节有这样定义工作区域的
DATA: WA_LFA1 TYPE LFA1.
那么我们就可以这样定义内部表
DATA IT_LFA1 TYPE TABLE OF LFA1.
DATA IT_LFA1 LIKE TABLE OF WA_LFA1.
上面两种定义的方法是相同的。
二,内部表的类型
1,STANDARD内部表。定义的方法如下
DATA IT_EKKO TYPE STANDARD TABLE OF EKKO (WITH NON-UNIQUE KEY EBELN.).
这个是基本型,STANDARD 一般情况下是可以省略的。查询语句查询此表时是从第一个数开始按顺序开始查的,所以其效率不是很高。可以用LOOP把所有的数据都找出来。可以在后面指定WITH NON-UNIQUE KEY EBELN
2,SORTED 内部表。定义的方法如下
DATA IT_EKPO TYPE SORTED TABLE OF EKPO WITH NON-UNIQUE KEY EBELN EBELP.
查询的时候此类表会根据KEY值排序,然后进行二分法查询,所以其效率很好。上面的NON-UNIQUE换成UNIQUE也是一样的。
3,HASHED内部表。定义的方法如下
DATA IT_MAKT TYPE HASHED TABLE OF MAKT WITH UNIQUE KEY MATNR.
查询此类表的时候会用哈希算法进行查询,所以其效率也是高的,这种表定义的时候KEY 是必须的。这种表只能被用来让READ读取,此表还有一个特征就是表内的数值为以KEY为单位进行合计。