首页 > 其他分享 >[ABAP] ABAP 三类内表

[ABAP] ABAP 三类内表

时间:2023-09-26 15:56:11浏览次数:36  
标签:三类 UNIQUE 内表 关键字 ABAP KEY TABLE 排序

原文链接:https://www.cnblogs.com/wh-cnblogs/p/15988275.html

介绍(一)

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

1,  STANDARD TABLE       与TYPE TABLE OF 效果一样,都是标准表

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.


 

介绍(二)

三种内表

   标准表的每一行对应一个逻辑索引-SY-TABIX,填充内表的时候,可以将数据附加在现有行

之后,也可以插入到指定的位置,程序对内表行的寻址操作可通过关键字或索引进行。在对表

进行插入删除等操作时,各数据行在内存中的位置不变,系统仅重新排列各数据行的索引值。

   排序表也有逻辑索引,不同的是排序表总是按其表关键字升序排列后再进行存储,也就是在

内存中的位置发生改变。

   哈希表没有索引,只有关键字。

行访问方式

                                 标准表                    排序表                       哈希表

索引访问                    允许                       允许                          不允许

关键字访问                允许                       允许                           允许

相同值关键字行       可重复                   可重复或不可重复       不可重复 

推荐访问方式       主要通过索引               主要通过关键字        只能通过关键字  

 

具体到使用什么类型的内表     

    对于一个小于100行的内表,且很少使用关键字操作,则使用标准表没有效率问题;数据量

比较巨大,切不存在重复行,只需使用关键字访问的内表应定义为哈希表;排序表适用于运行

期内必须以某种排序形式出现的内表。

标签:三类,UNIQUE,内表,关键字,ABAP,KEY,TABLE,排序
From: https://www.cnblogs.com/seven1314pp/p/17730290.html

相关文章

  • ABAP AS91 创建历史资产主数据批导
    1*&---------------------------------------------------------------------*2*&ReportZFICZ0113*&---------------------------------------------------------------------*4*&5*&---------------------------------------------......
  • ABAP:QA32(检验批信息增强) BADI:INSPECTIONLOT_UPDATE
     METHODif_ex_inspectionlot_update~set_ud_at_save.*IFsy-tcode='QA32'ORsy-tcode='QA11'.*IFnew_insplot-herkunft='01'ANDnew_insplot-lmenge07>0.**ENDIF.*ENDIF.DATA:resultTYPEcLE......
  • SAP Abap三种方法进行SAP ODATA数据服务发布(DDICRFCCDS)
    SAPAbap三种方法进行SAPODATA数据服务发布(DDICRFCCDS)Posted 2023-04-04 X档案库tags:篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SAPAbap三种方法进行SAPODATA数据服务发布(DDICRFCCDS)相关的知识,希望对你有一定的参考价值。 三种方法进行SAPODATA数据......
  • ABAP-AES加密解密
    1REPORTytestdzp.23FORMb.45DATA:lv_encryptTYPEstring."加密前的string类型6DATA:lv_encrypt_xTYPExstring."加密前的xstring类型78DATA:lv_encrypt_afterTYPEstring."加密后的string类型9DATA:lv_encrypt_afte......
  • ABAP-知识文件下载
    AES加密解密类https://files.cnblogs.com/files/blogs/720530/AES-master.zip?t=1661221651&download=true接口日志程序https://files.cnblogs.com/files/blogs/720530/ZABAP_FM_LOGGER_20220712_235637.zip?t=1661221659&download=truecodesoft打印插件https://files......
  • ABAP-直接取表获取特性值
    1SELECTausp~objek,2cabn~atnam,3cabn~atfor,"数据类型4cabn~msehi,"单位5cabn~atint,"间隔值6ausp~atwrt,"char特性值7ausp~atflv,"num特性值从8ausp~atflb"num间隔特性值......
  • ABAP-ITS声音配置
    1.系统有标准的声音,可以直接复制 2.创建HTML文件1`if((~messageline!="")&&(~itsmobilemsgsound=="1")||(~currdynpro.messagesound!=""))2if(~messagetype=="S"||~currdynpro.messagesound==&quo......
  • ABAP进度条
    *进度条例子1:DATA:perctypei,cntTYPEi.DATA:stxtTYPEstring.DATA:sperc(3)TYPEc.perc=0.cnt=1000.DOcntTIMES.stxt=''.perc=sy-index*100/cnt.sperc=perc.CONCATENATE'已经完成:'sperc'%......
  • ABAP 跨Client 拷贝表数据
    REPORTztest_client_copy.TYPE-POOLS:abap.TABLES:dd02l.SELECT-OPTIONS:s_nameFORdd02l-tabnameNOINTERVALS.PARAMETERSp_mandt1TYPEmandtDEFAULT'600'.PARAMETERSp_mandt2TYPEmandtDEFAULT'700'.TYPES:BEG......
  • ABAP中的F4帮助怎么用?
    当我们在sap的界面上,焦点放到一个字段上的时候,按F4,会出现选择或者搜索的界面,这就是abap中的f4帮助。 有多种实现f4帮助的方法,现在就把我指导的一点点说出来: 1, 固定值。 我们在Domain中可以定义valuerange,在valuerange中定义的值,就可以出现在f4帮助中。这是最简单的实......