内表的目的

在ABAP/4中,主要使用表格。表格是R/3系统中的关键数据结构。长期使用的数据存储在关系数据库表格中。关于如何读取和处理数据库表格的详细信息,参见读取并处理数据库表。
除了数据库表格,还可以创建仅在程序运行时间内存在的内表。ABAP/4提供了针对内表的不同操作。例如,可以搜索、附加、插入或删除行。
内表中的行数并不固定。根据需求,系统可实时增加内表的大小。例如,如果想将某个数据库表格读入内表,不必事先知道数据库表格的大小。该特征项使得内表使用起来十分方便,同时还支持动态编程。
可以使用内表在数据库表格的子集上执行表格计算。例如,可以将数据库表格的某个部分读入内表(参见将数据读入内表)。然后可以从内表中计算总和或生成次序表。
内表的另一种用处是根据程序需要重新组织数据库表格的内容。例如,可以从一个或多个大客户表格特定的数据中将与创建电话清单有关的数据读入内表中。然后可在程序运行期间直接访问该清单,而不用每次调用时都执行耗时的数据库查询。
除了在使用来自数据库表格的数据时使用内表外,内表还是ABAP/4中用于在程序中实现许多复杂数据结构的重要特征项(参见结构化数据类型(页3-6))。

内表的结构

在ABAP/4中,可以区别内表数据类型(定义内表的结构)和内表数据对象(实际的内表而且可以用数据进行填充)。内表数据类型是数据结构(可用于将数据对象说明为内表)的抽象定义。关于数据类型和数据对象之间区别的详细信息,参见声明数据(页3-1)。
数据类型
内表是ABAP/4中两种结构化数据类型中的一种。其它结构化数据类型是字段串(参见结构化数据类型(页3-6))。内表包括任意数据类型相同的行。行的数据类型可以是基本的或结构化的。该定义打开了多种内表结构,范围从包含一个字段的行到包含字段串将内表作为组件的行。
可以用带OCCURS参数的TYPES语句将数据类型定义为内表(参见创建内表数据类型(页78))。定义数据类型时不占用内存。
数据对象
数据对象包含定义为内表的数据类型,是实际使用的内表。数据对象占用内存,可以对其行进行填充或读取。
可以使用带OCCURS参数的DATA语句,或使用TYPE或LIKE参数引用另一个内表将数据对象创建为内表(参见创建内表数据对象(页57))。

标识表格行

为了访问表格的某一行,必须指定可用于标识该行的字段或组合字段。在关系数据模型(用于在R/3系统中存储长期使用的数据)中,用于该目的的最小组合称为关键字。定义关键字的字段称为关键字段。
在关系数据模型中,每个表格至少有一个关键字(参见文档ABAP/4词典)。特殊唯一关键字段的该概念不用于内表。
但是ABAP/4提供了下列特征项以便用户访问内表行:
内表索引
索引是表格行的序列号,不是表格字段,但由系统自动创建和管理。
可以用DELETE、INSERT、MODIFY、LOOP和READ语句来使用索引。在这些语句中,可以将索引指定为文字或变量。
处理完内表的特定行后,系统字段SY-TABIX一般包含该行的索引。

内表关键字
有两种类型的内表关键字。
自定义关键字
使用READ语句从内表中读取行时,可以指定自定义关键字(参见用自定义关键字读取单行(页36))。
缺省关键字
根据定义,内表的关键字段是非数字(类型F、I和P)和非内表的字段。这些关键字段形成内表的标准关键字。
要获得带嵌套结构(包含字段串作为组件的表格行)的内表标准关键字,系统将子结构分为基本字段层次。

根据填充内表的方式不同,内表可以包含带相同标准关键字的多行。
用COLLECT、READ、SORT和SUM语句使用内表的关键字段。如果标准关键字段是内表行的第一个组件,这有助于提高这些语句的效率。创建内表时请记住这一点。

sap 内表的更多相关文章

  1. SAP内表转XML文件

    今天有个兄弟问如何实现以XML的方式输出内表的内容,这个问题我以前好像没有写过.倒不是不会写,而是写的方法太多了,有极其简单的,也有很复杂的,而且网上资料也很多. 找到以前写的一个程序,稍微修改了一下 ...

  2. SAP内表查询速度优化实例-OPEN SQL

    一.FOR ALL ENTRIES IN 案例 今天碰到工单报工统计分析表查询速度特别慢 经查看源代码: SELECT afpo~dwerk afko~aufnr afpo~matnr AS plnb ...

  3. SAP内表类型及其数据读取效率评估

    内表大概分3种: 1.标准表standard tables:如果不指定BINARY SEARCH附加选项,则默认为线性查找(linear search),既一条一条的查找. 2.排序表(sorted ...

  4. ABAP 内表与XML转换

    1需求说明 在系统交互中需要将SAP内表转换为XML文件,发送给其他系统,并且将其他系统返回的XML文件转换为SAP内表. 2创建转换编辑器 事务代码:STRANS 选择简单转换 以图形方式编辑 右键 ...

  5. [SAP ABAP开发技术总结]内表操作

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  6. [SAP ABAP开发技术总结]反射,动态创建内表、结构、变量

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  7. [SAP ABAP开发技术总结]CLEAR、REFRESH、FREE内表清理区别

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  8. 【ABAP系列】SAP ABAP 取两个内表的交集 比较两个内表的不同

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP 取两个内表的交 ...

  9. 七十一、SAP中内表的修改,改一行数据,或一行的某个字段

    一.SAP中内表的修改,只能通过工作区来修改,代码如下 二.效果如下

随机推荐

  1. 报表打印错误:Forcing NLS_NUMERIC_CHARACTERS to: '.,' for XDO processing

    HDSP0004 module: HDSP: 凭证打印 +----------------------------------------------------------------------- ...

  2. LeetCode之“链表”:Reorder List

    题目链接 题目要求: Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… You ...

  3. HADOOP中的CRC数据校验文件

    Hadoop系统为了保证数据的一致性,会对文件生成相应的校验文件(.crc文件),并在读写的时候进行校验,确保数据的准确性.在本地find -name *.crc -print 看 比如我们遇到的这个 ...

  4. 怎样重建一个损坏的调用堆栈(callstack)

    原文作者:Aaron Ballman原文时间:2011年07月04日原文地址:http://blog.aaronballman.com/2011/07/reconstructing-a-corrupt ...

  5. 【LaTeX排版】LaTeX论文排版<四>

    1.表格的插入     一般的表格插入的代码如下: \begin{table}[H] \centering \begin{tabular}{|c|c|c|} \hline 感知方法&优点&am ...

  6. AndroidUI之绘图机制和原理 最完整的文章

    转载请标明出处:http://blog.csdn.net/sk719887916/article/details/39961171,作者:skay  导读: 熟悉javaGUI的朋友对java绘图必定 ...

  7. objective-c 2.0的字面量Literals

    obj-c 2.0增加了许多核心对象字面量的简单语法,向ruby学习吗? 直接上代码: #import <Foundation/Foundation.h> int main(void){ ...

  8. linux内核中访问共享资源

    访问共享资源的代码区域称为临界区,临时以某种互斥机制加以保护.中断屏蔽.原子操作 自旋锁和信号量是Linux设备驱动中可采用的互斥途径. 在单CPU范围内避免竞态的一种简单方法是在进入临界区之前屏蔽系 ...

  9. Java反编译工具(Java Decompiler)

    Java Decompiler是一种非常实用的JAVA反编译工具,可以对整个jar包进行反编译,也可以将其集成到eclipse上,非常方便的根据class文件的源码.,官网地址http://jd.be ...

  10. VueJs(5)---V-bind指令

    V-bind指令 一.概述 v-bind  主要用于属性绑定,比方你的class属性,style属性,value属性,href属性等等,只要是属性,就可以用v-bind指令进行绑定. 示例: < ...