内表的定义及使用

内表的定义

Types

TYPES自定义的类型来定义内表

  1. 第一种方法:

    TYPES:BEGIN OF <TY_ITAB>
    ...
    END OF <TY_ITAB>.
    DATA <ITAB> TYPE TABLE OF <TY_ITAB>.
    
    

    例子:

    *自定义类型的内表
    TYPES:BEGIN OF ty_itab1,  "结构类型
    	field1 TYPE char10,
    	field2 TYPE int2,
    	END OF ty_itab1.
    
    DATA:itab1 TYPE TABLE OF ty_itab1.  "内表
    
  2. 第二种方法:

    TYPES:<T_ITAB> TYPE <TY_ITAB> OCCURS 0.
    DATA <ITAB> TYPE <T_ITAB>.
    

    例子:

    TYPES:t_itab1 TYPE ty_itab1 OCCURS 0. "表类型
    
    DATA:itab2 TYPE t_itab1.  "内表
    
  3. 第三种方法:

    TYPES:<T_ITAB> TYPE TABLE OF <TY_ITAB>.
    DATA<ITAB> TYPE <T_ITAB>.
    

    例子:

    TYPES:t_itab1 TYPE TABLE OF ty_itab1. "表类型
    
    DATA:itab3 TYPE t_itab2,  "内表
    	itab4 LIKE itab3.  "使用LIKE定义内表,和itab3类型一样
    

断点:BREAK-POINT.

例子:

TYPES:BENGIN OF LINE,  "定义数组类型
	COL1 TYPE I,
	COL2 TYPE I,
	END OF LINE.
TYPES:ITABT TYPE LINE OCCURS 0.  "定义表类型
TYPES:ITABT1 TYPE TABLE OF LINE.
DATA:MYITAB1 TYPE ITABT,
	MYITAB2 TYPE ITABT1 WITH HEADER LINE. "定义带工作区的内表,工作区名称与内表名称相同
	

Data

DATA直接定义内表:

DATA:BEGIN OF <ITAB> OCCURS <N>
...
END OF <ITAB>.

例子:

DATA:BEGIN OF itab5 OCCURS 0,  "自带工作区的内表,工作区名称与内表名称相同
	field1 TYPE char10,
	field2 TYPE int2,
	END OF itab5.

参考定义

参照已定义的内表来定义内表

DATA <ITAB> LIKE <内表>.

参照数据字典里的结构或者数据库来定义内表

DATA <ITAB> TYPE TABLE OF
<structure/table>.

使用INCLUDE STRUCTURE包括已存在的结构体的所有字段

DATA:BEGIN OF <ITAB> OCCURS 0.
INCLUDE STRUCTUE <STRUCTURE>.
DATA:<field> TYPE <type>.
...
DATA:END OF <ITAB>.

例子:

DATA:ITAB LIKE SPFLI OCCURS 0 WITH HEADER LINE.
DATA:BEGIN OF ITAB OCCURS 0. "自带同名工作区,ITAB是自定义的内表
	INCLUDE STRUCTURE SPFLI. "ZTABLE1是参照的数据库表
	DATA:NAME(20) TYPE C,
		AGE TYPE I.
DATA:END OF ITAB.

例子:

DATA itab4 LIKE itab1.  "参考已定义的内表"
DATA itab6 TYPE TABLE OF sflight. "参考数据库表定义内表
DATA itab7 TYPE TABLE OF zschange. "参考结构定义内表
*itab7也可以使用STANDARD定义
DATA itab7 TYPE STANDARD TABLE OF zschange. "参考结构定义内表

排序表,哈希表

DATA itab8 TYPE SORTED TABLE OF sflight WITH UNIQUE KEY carrid.  "SORTED用来定义排序表

DATA itab9 TYPE HASHED TABLE OF sflight WITH UNIQUE KEY carrid.  "HASHED用来定义哈希表

查看内表属性

通过DESCRIBE获得内表的行

DESCRIBE TABLE <itab> LINES n.

例子:

TABLES:usr21.
DATA:n1 TYPE i,
	n2 TYPE i,
	k TYPE c.
DATA:BEGIN OF emp OCCURS 10,
	name LIKE usr21-bname,
	telnum LIKE usr21-persnumber,
	END OF emp.
	
DESCRIBE TABLE[] emp LIKES n1.  "表中无数据,回执为0
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值