内表:
1:ABAP中有三种类型的内表:
Index Tables
Hashed Table
Table Type
STANDARD TABLE
SORTED TABLE
HASHED TABLE
通过索引访问
√
√
通过键访问
√
√
√
KEY 唯一性
键不唯一
可唯一或不唯一
键必须唯一
相同值关键字行
可从复
可从复或不可从复
不可从复
通常访问方式
主要通过索引
主要通过关键字
只能通过关键字
STANDARD TABLE:
DATAITAB_STANDARDTYPESTANDARDTABLEOFMARA.
SORTED TABLE:DATAITAB_SORTEDTYPESORTEDTABLEOFMARAWITHNON-UNIQUEKEYTABLE_LINE.
WITHUNIQUE
KEY
或WITHNON-UNIQUE KEY 都可以。
HASHED TABLE:DATAITAB_HASHEDTYPEHASHEDTABLEOFMARAWITHUNIQUEDEFAULTKEY.
只能为WITHUNIQUE
KEY。
l
SORTED TABLE和HASHED TABLE 必须制定KEY字段的名称如果只是这样写报错:
×DATAITAB_HASHEDTYPEHASHEDTABLEOFMARAWITHUNIQUEKEY.
×DATAITAB_SORTEDTYPESORTEDTABLEOFMARAWITHNON-UNIQUEKEY.
2:表关键字
1….WITH
[UNIQUE|NON-UNIQUE] KEY COMP1……COMPn
2….WITH
[UNIQUE|NON-UNIQUE] KEY TABLE LINE
如果内表整行都是由基本字段组成的,则可以吧内表整行指定为表关键字。
3….WITH
[UNIQUE|NON-UNIQUE] KEY DEFAULT KEY
如果不指定任何关键字,则可以使用默认的标准关键字。
3:OCCURS N 的含义
DATA:BEGINOFITABOCCURS10,
NAME(20)TYPEC,
ADDRESSESTYPEADDRESS,ENDOFITAB.
该语句声明了一个标准内表,OCCURS10
代表分配初使内存大小为10行
4:内表的初始大小设定
DATAITABTYPESTANDARDTABLEOFMARAWITHNON-UNIQUEDEFAULTKEYINITIALSIZE n
l
INITIALSIZE
n声明内表的初始大小
WITHHEADERLINE.
先定义工作区与内表:
DATAIT_MARATYPESTANDARDTABLEOFMARA.DATAIS_MARATYPEMARA.
IS_MARA-MANDT = SY-MANDT.
IS_MARA-MATNR ='000000000000000059'.
IS_MARA-ERSDA = SY-DATUM.
IS_MARA-ERNAM ='44444'.
5:INSERT语句
1
通过索引插入单行:
INSERT工作区INTO内表INDEXN.
INSERTIS_MARAINTOIT_MARAINDEX2.
2
一般性插入单行的语法:
INSERT工作区INTOTABLE内表.
INSERTIS_MARAINTOTABLEIT_MARA.