(原文来源于:
http://kongxiangshuai.spaces.live.com/blog/cns!D1714DCFE79754AA!916.entry )
关于使用READ TABLE语句的几点注意事项
1.如果使用READ TABLE语句来读取内部表数据,而不是简单看返回值判断是否存在,那么在使用READ TABLE语句之前,一定要记得使用CLEAR语句清空内部表的工作区。
2.READ TABLE itab WITH KEY = v BINARY SEARCH.
使用READ TABLE语句的二分法搜索以 代替标准顺 序搜索时, 必须首先按关键字中指定的次序对内表进行排序。如果系统找到匹配指定关键字的多行,则读取索引最低的行。二分法搜索 比线性搜索要快。因此,应尽可能将内表排序并且使用二分法搜索。如果找到有匹配关键字的条目,则将系统字段 SY-SUBRC 设置为0并且 SY-TABIX 包含该行的索引。否则,将 SY-SUBRC 设置为非零。
3.WITH KEY 中的检索条件比较符不能使用‘<>’(不等于)。
如果只想取得内部表中不等于某条件的一条记录,那么请使用下面变通方法。
LOOP AT itab WHERE KEY <> ‘XX’.
此处取得第一条记录。
EXIT.
ENDLOOP.
如果在运行时 <KEY> 值为空,则 统忽略该关键字段。另外可对关键字段指定偏移量和长度。
BTW:
感谢binary search,有一次到日本做项目,有这么个课题,
内部表中的数据如下
A B C
01001 20060301
0100120060201
01001 20060101
要求取出距现在时间最近的记录。
我的做法是先排序
SORT IT_TAB BY A
B ASCENDING
C DESCENDING.
然后用二分法读取
READ IT_TAB INTO WA_TAB WITH KEY A = '01'
B = '001'
BINARY SEARCH.
应该取到01001 20060301这条记录。(也确实取得是这条记录)
这时来之日本SAP公司的检证人员就挑毛病了,说你用二分法从中间切入,怎么能保证取到20060301这条,而不是20060201?
SE接到质问让我抓图证明用二分法没错,否则改用普通READ。
我听了马上告诉SE,ABAP语法就是这样的,这是“常识”!
系统如果找到匹配指定关键字的多行,则读取索引最低的行。
经过我的特殊排序后,20060301所在行索引最低。
过后他调查了一下,一点脾气都没有,乖乖地说OK,呵呵。
分享到:
相关推荐
根据提供的文件信息,可以看出主要关注的是SQL语句的相关知识点。下面将详细介绍与SQL相关的基础知识、常见操作以及在特定场景下的应用实例。 ### SQL基础概念 SQL(Structured Query Language)是一种用于管理和...
本资源"python串口通信-04-函数的注意事项.ev4.rar"可能包含一个视频教程,讲解了Python中进行串口通信时函数使用的一些关键点。下面,我们将深入探讨串口通信和相关函数的注意事项。 1. **PySerial库**:Python中...
在本项目"QUERY控件与 Table控件的READ ONLY属性.rar"中,主要探讨了如何利用这两类控件进行数据操作,并且重点关注了“READ ONLY”属性的使用。 QUERY控件,全称SQLQuery或TSQLQuery,是用来执行SQL查询的组件。它...
SQL语句大全是关系数据库管理系统中使用的标准语言,用于管理和操作数据库中的数据。它的主要功能是存储、管理和检索数据。SQL语句大全可以分为以下几个方面:数据操作、数据概念、事务操作、程序化SQL等。 数据...
综上所述,这些知识点主要涵盖了计算机科学中基础的算法描述和编程概念,特别是赋值、输入和输出语句的使用,以及如何用伪代码和流程图来表达算法。在高中数学教学中,理解并掌握这些概念对于培养逻辑思维和问题解决...
本工具利用Druid的SqlParser模块,针对`CREATE TABLE`语句,能够自动化地生成对应的Java POJO(Plain Old Java Object)类和DAO(Data Access Object)类,极大地提高了开发效率。 首先,我们来了解Druid的Sql...
Shell 语句的基本使用 Shell 语句是 Linux 编程的基础,它提供了强大的功能来处理文本、文件、网络和系统管理等任务。下面是 Shell 语句的基本使用: 1. If 语句 If 语句用于条件判断,如果条件成立,则执行相应...
使用语句:show status like 'table_locks_immediate'; 该语句可以查看立即获得的表的锁的次数。 13. 查看不能立即获得的表的锁的次数 使用语句:show status like 'table_locks_waited'; 该语句可以查看不能...
需要注意的是,不允许使用 `READPAST`、`NOLOCK` 和 `READUNCOMMITTED` 这些提示。 - `view_name`:要更新的视图的名称。只有当视图是可更新的情况下才能使用。更新操作最多只能影响视图的 `FROM` 子句中引用的基表...
- **读取内表行**:使用READTABLE命令获取指定索引处的行数据。 - 不带表头行: ```abap READ TABLE itab INTO wa INDEX idx. ``` - 带表头行: ```abap READ TABLE itab INDEX idx. ``` - **修改内表行**...
### Vue使用注意事项详解 在进行Vue开发过程中,开发者往往会遇到各种各样的问题。这些问题有的源自于框架本身的限制,有的则是由于使用不当所导致。本文基于实际项目经验,并结合网络资源整理,旨在帮助开发者规避...
7. **输入语句与输出语句**:`Read`语句用于从用户或其他输入源获取数据,`Print`语句用于将结果输出到屏幕或其他设备。例如,`Read a, b`表示读取两个变量a和b的值,`Print a, b`则将它们打印出来。 8. **算法的...
另一种方法是使用原生SQL查询,这样可以直接控制SQL语句的生成,包括使用LIMIT和OFFSET关键字(对于MySQL等数据库)或ROW_NUMBER()函数(对于SQL Server)来实现分页。这同样可以绕过Hibernate的默认只进结果集行为...
Java 输入输出语句整理总结 Java 输入输出语句是 Java 编程语言中最基本也是最重要的部分之一。输入输出语句是指程序与外部世界交互的桥梁,通过输入输出语句,程序可以从外部世界获取数据,并将处理结果输出到外部...
本文将详细解析《MySQL语法语句大全》文档中的关键知识点,帮助你深入理解和掌握MySQL的核心功能。 一、SQL基础 SQL,全称Structured Query Language,是用于管理和操作数据库的语言。在MySQL中,SQL语句主要包括...
读取内表数据可以使用多种方式,包括使用 LOOP 语句、READ 语句和 SELECT 语句。LOOP 语句用于循环读取内表数据,READ 语句用于读取单个记录,而 SELECT 语句用于读取多个记录。 LOOP AT 内表名称 INTO 数据. READ ...
本文将详细讲解如何使用`SqlCommand`执行SQL语句,包括基本用法、参数化查询、事务处理以及错误处理。 一、SqlCommand的基本使用 `SqlCommand`对象是`SqlConnection`的实例成员,它负责执行SQL命令。首先,我们需要...
值得注意的是,`read`语句在遇到额外的数据时,可以继续读取,而`readln`则不会,因此在实际编程中,通常推荐使用`readln`以避免多余数据的影响。 输出语句则是将程序的计算结果或信息展示给用户。Pascal提供了`...
`说明文档.txt`可能包含了程序的使用方法和注意事项,而`WindowsFrom`可能是一个包含GUI窗口设计的文件,可能是用wxPython、PyQt或其他GUI库创建的。`Function`可能是一些辅助函数的集合,用于执行特定的任务,如...
在本压缩包“application-table-student-case.zip_Table”中,主要包含了一个名为“ADO[1].NET应用之学生成绩表案例.doc”的文档,这显然是一份关于使用ADO.NET技术在.NET环境中构建学生成绩管理系统的教学材料。...