ABAP内表

1、内表

ABAP中的内表相当于其他程序设计语言中的二维数组,存储多行结构相同的数据。不同于二维数组,内表在创建后,列结构于列数是固定不变的,而行数是动态增长的。内表支持循环对每行数据进行操作,也支持整体操作。内行是具有行和列的结构,不同于数据库表,内表仅在程序运行期间在内存中存储数据。ABAP中有三种内表类型:标准表、哈希表、排序表。

2、可以使用的内表数据类型:structure、数据库表、用户自定义数据类型。

3、创建内表

        DATA语句用于声明一个内部表。 程序必须告知表的开始和结束位置。 所以使用BEGIN OF语句,然后声明表名。 之后,使用OCCURS添加,后跟一个数字,这里为0. OCCURS告诉SAP正在创建一个内部表,0表示它最初不包含任何记录。 它将随着它填充数据而扩展。

DATA: BEGIN OF <internal_tab> Occurs 0,

            name LIKE ZCUSTOMERS1-name,

            dob LIKE ZCUSTOMERS1-dob,

END OF itab01.

4、LIKE LINE OF和LIKE TABLE OF 的区别

LIKE LINE OF后面接一个内表,表示一个DATA参数具有和内表一样的结构(structure),例如有一个TABLES:Z_USER,Z_USER有两个字段,一个ID,一个NAME,那么

DATA:WA LIKE LINE OF Z_USER 表示WA和Z_USER的STRUCTURE一样,可以吧WA当做Z_USER的WORK AREA来用。

LIKE TABLE OF 后面接一个STRUCTURE,表示一个DATA参数是一个内表,这个内表的结构和后面接的那个结构一样,例:

DATA:BEGIN OF WA,

       ID TYPE I,

       NAME(10) TYPE C,

END OF WA.

DATA: ITAB LIKE TABLE OF WA.

这里的ITAB直接就是一个内表了,WA是它的WORK AREA。

5、APPEND语句用于向现有内部表添加单个行或行。 此语句从工作区复制单个行,并将其插入内部表中的最后一个现有行之后。 工作区可以是标题行或与内部表的行具有相同结构的任何其他字段字符串。要将部分或 全部内表附 加到另一个 内表中,请 使用 APPEND 语句,用法 如下

APPEND MAN TO MAN1."将MAN附加到MAN1中.

INSERT语句用于将单个行或一组行插入内部表。

insert man into table man1.

6、move....to... 直接把源的值附到目标MOVE语句,将数据从一个表的字段移动到另一个表的字段

MOVE MAN1[] TO MAN2.       将MAN1的值附加到MAN2.

7.带标题行的内表

REPORT YTEST001.

DATA: BEGIN OF MAN,

NAME(20) TYPE C,

HIGH TYPE P DECIMALS 2,

WEIGHT TYPE P DECIMALS 2,

END OF MAN.

DATA: MAN1 LIKE TABLE OF MAN WITH HEADER LINE,

MAN2 LIKE TABLE OF MAN.

MAN-NAME = '张参'.

MAN-HIGH = '1.68'.

MAN-WEIGHT = 120.

APPEND MAN TO MAN1.

MAN-NAME = '刘志'.

MAN-HIGH = '1.78'.

MAN-WEIGHT = 160.

APPEND MAN TO MAN1.

MOVE MAN1[] TO MAN2.

LOOP AT MAN2 INTO MAN.

WRITE: / MAN-NAME,MAN-HIGH, MAN-WEIGHT.

ENDLOOP.

LOOP AT MAN1.

WRITE: / MAN1-NAME,MAN1-HIGH,MAN1-WEIGHT.

ENDLOOP.

 

8、内表排序(按体重升序排列)

sort man1 descending by high ascending.

9、修改内表数据

modify table MAN1 from MAN.

10.删除内表数据

DELETE MAN1 WHERE NAME = '张参'.

11、使用索引插入内表行

insert man into man1 index 2.

12、格式化输出

select * into wa from sofli.

通过under定位输出位置。

 

 

 

 

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值