SAP ABAP STANDARD TABLE,SORTED TABLE和HASHED TABLE简介

本文详细介绍了ABAP中三种内表类型:标准表、排序表和哈希表的特点及应用场景。对比了不同内表在查询效率上的差异,适用于ABAP初学者及开发者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ABAP里提供了三种内表,分别是:

1,  STANDARD TABLE

2,  SORTED TABLE 

3, HASHED TABLE

在不同的场合下,READ TABLE查找数据时三种内表会有不同的效率。

 

STANDARD TABLE是标准表,也是最常用的内表,特点如下:

1,  可以不指定KEY,但只能指定 NON-UNIQUE KEY

2,  可以使用INDEX和KEY来查询

注:NON-UNIQUE KEY代表内表里该字段可以重复,如果是UNIQUE KEY则代表该字段不能重复,不然程序会发生运行时错误。

举例:DATA IT_YM TYPE STANDARD TABLE OF VBAP WITH NON-UNIQUE KEY VBELN.

 

SORTED TABLE是排序表,特点如下:

1,  必须指定KEY(作为排序参考字段),可以指定UNIQUE KEY或者是NON-UNIQUE KEY

2,  可以使用INDEX和KEY来查询

3,  已经按照KEY排序,不可以再排序

 举例:DATA IT_YM TYPE SORTED TABLE OF VBAP WITH NON-UNIQUE KEY VBELN.

 

记录条数多时,SORTED TABLE查询效率明显比STANDARD TABLE高,因为对已经排序的表可以进行二分法查找。

可以对STANDARD TABLE用SORT语句先进行排序,然后再进行BINARY SEARCH(即二分法查找)的查询,效率接近SORTED TABLE。

但要注意,排序本身也是消耗时间,如果只对STANDARD TABLE进行一次查询,则没有必要先排序后进行BINARY SEARCH的查找。

另外在使用BINARY SEARCH时,数据必须完全依照BINARY SEARCH的KEY字段进行排序。

 

HASHED TABLE是哈希表,特点如下:

1,  必须指定KEY,并且是UNIQUE KEY

2, 不可以使用INDEX查询

3, 查询时间和记录数无关

 举例:DATA IT_YM TYPE HASHED TABLE OF VBAP WITH UNIQUE KEY VBELN.

SAP ABAP中,内部表是处理大量数据时非常重要的数据结构,它们允许您在程序中创建管理记录的集合。为了更好地掌握这一技巧,我建议您参考这本详尽的学习手册:《SAP ABAP/4 学习手册:从入门到精通》。手册不仅详细介绍了内部表的创建使用,还包含了丰富的实例来帮助您理解。 参考资源链接:[SAP ABAP/4 学习手册:从入门到精通](https://wenku.csdn.net/doc/3vvxj3ckcn?spm=1055.2569.3001.10343) 首先,您需要了解内部表的声明方式。在ABAP中,内部表可以是标准表(standard table)、排序表(sorted table)或哈希表(hashed table),它们在声明时分别使用关键字TABLES、SORTED TABLEHASHED TABLE。例如,声明一个标准内部表可以使用以下语法: DATA: it_customers TYPE TABLE OF customer. 在上述示例中,it_customers 是一个内部表的名称,而 customer 是一个之前定义的结构或数据库表的名称。如果结构或数据库表中包含多个记录,它们将被存储在内部表中。 一旦声明了内部表,您可以通过一系列操作来填充处理数据。例如,您可以使用APPEND语句将单个记录添加到内部表中: APPEND initial_line TO it_customers. 或者,如果需要将一个表的内容完全复制到另一个表中,可以使用INSERT...FROM...语句: INSERT it_customers FROM it_sources. 对于从内部表中提取数据,您可以使用READ TABLE语句来进行表查找: READ TABLE it_customers INTO wa_customers WITH KEY cust_id = '1234'. 在上述代码中,wa_customers 是一个工作区,用于存放从内部表中检索到的当前记录。通过使用循环语句如LOOP AT it_customers,可以遍历内部表中的所有记录。 最后,如果您希望将内部表中的数据写入屏幕,可以使用WRITE语句: LOOP AT it_customers INTO wa_customers. WRITE: / wa_customers-cust_id, wa_customers-cust_name. ENDLOOP. 这份手册《SAP ABAP/4 学习手册:从入门到精通》通过实例清晰的解释,将引导您完成从基础声明到高级操作的整个过程。掌握了内部表的使用后,您将能够更加灵活高效地处理SAP系统中的数据。为了进一步提高您的编程技能,手册中还包含了对其他高级特性的讲解,比如数据库表操作、异常处理等。 参考资源链接:[SAP ABAP/4 学习手册:从入门到精通](https://wenku.csdn.net/doc/3vvxj3ckcn?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值