ABAP基础知识:内表

1、创建内表

可以利用下面两种方法定义内表:

  1. 参照局部表类型创建内表
  2. 参照全局数据库表创建内表

1.1 参照局部表类型创建内表

TYPES : BEGIN OF ty_test,
       no(6)    TYPE C,
       name(10) TYPE C,
       dept(10) TYPE C,
       END OF ty_test.
DATA gt_test TYPE STANDARD TABLE OF ty_test WITH HEADER LINE."带表头行
gt_test-no = '0001'.
gt_test-name = 'GML'.
gt_test-dept = 'CST-RDC'.
APPEND gt_test.
LOOP AT gt_test.
   WRITE:gt_test-no,gt_test-name,gt_test-dept.
ENDLOOP.

也可以直接定义结构体然后参照此结构体定义内表,此时不能用type语句,需使用like语句。

DATA : BEGIN OF ty_test,
       no(6)    TYPE C,
       name(10) TYPE C,
       dept(10) TYPE C,
       END OF ty_test.
DATA : gt_test LIKE STANDARD TABLE OF ty_test, "不带表头行
       gs_test LIKE ty_test.
gs_test-no = '0001'.
gs_test-name = 'GML'.
gs_test-dept = 'CST-RDC'.
APPEND gs_test TO gt_test.
LOOP AT gt_test INTO gs_test.
   WRITE:gs_test-no,gs_test-name,gs_test-dept.
ENDLOOP.

1.2参照全局数据库表创建内表

DATA : gt_scarr TYPE SORTED TABLE OF scarr WITH UNIQUE KEY carrid,
       gs_scarr LIKE LINE OF gt_scarr.
SELECT * FROM scarr INTO gt_scarr.
LOOP AT gt_scarr INTO gs_scarr.
   WRITE : / gs_scarr-carrid,gs_scarr-carrname.
ENDLOOP.

2.内表与表头

表头也叫工作区,定义内表时追加with header line 语句会自动生成表头。

例如:

DATA itab TYPE type WITH HEADER LINE.

比较内表循环语句中带表头的内表与不带表头的内表的使用方法。使用不带表头的内表时,需通过工作区(Work area)编辑内表中的数据,而使用带表头的内表时,则可以直接使用内表名编辑内表值。

下表整理了带表头与不带表头的内表使用的相关语句:

不带表头是使用的语句 

带表头是使用的语句
所有内表(Stardard,Sorted,hashed type)
INSERT WA INTO TABLE ITAB.INSERT TABLE ITAB.
COLLECT WA INTO TABLE ITAB.COLLECT ITAB.
READ TABLE ITAB ...INTO WA.READ TABLE ITAB.
MODIFY TABLE ITAB FORM WA.MODIFY TABLE ITAB.
MODIFY ITAB FROM WA ... WHERE....MODIFY TABLE ITAB.
DELETE TABLE ITAB FORM WA.DELETE TABLE ITAB.
LOOP AT ITAB INTO WA.LOOP AT ITAB.
INDEX表(stardard,sorted type)
APPEND WA TO ITAB.APPEND ITAB.
INSERT WA INTO ITAB..INSERT ITAB..
MODIFY ITAB FROM WA..MODIFY ITAB..

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值