关于使用readtable语句的几点注意事项

paulcao paulcao     2022-08-18     281

关键词:

原文地址   http://www.dlsap.com/thread-34-1-1.html

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
01  001 20060301
01  001  20060201
01  001 20060101

要求取出距现在时间最近的记录。
我的做法是先排序
SORT IT_TAB BY A
                         B ASCENDING
                         C DESCENDING.
然后用二分法读取
READ IT_TAB INTO WA_TAB WITH KEY A = ‘01‘
                                                         B = ‘001‘
                                                         BINARY SEARCH.
应该取到01  001 20060301这条记录。(也确实取得是这条记录)
这时来之日本SAP公司的检证人员就挑毛病了,说你用二分法从中间切入,怎么能保证取到20060301这条,而不是20060201?
SE接到质问让我抓图证明用二分法没错,否则改用普通READ。
我听了马上告诉SE,ABAP语法就是这样的,这是“常识”!
系统如果找到匹配指定关键字的多行,则读取索引最低的行。
经过我的特殊排序后,20060301所在行索引最低。

关于intentfilter的几点注意事项:

http://blog.csdn.net/cnnumen/article/details/8464786IntentFilter就是用于描述intent的各种属性, 比如action, category等一些属性设置的例子:<action android:name="com.example.project.SHOW_CURRENT" />< 查看详情

关于极光推送需要注意的几点

  先说原理:推送是建立在所有苹果设备在联网状态下都会跟苹果服务器进行一个长连接的,长连接的概念是相对于短连接的,长连接可以向客户端发送消息,保证了数据的及时性。借助苹果设备与苹果的APNS服务器之间的长连... 查看详情

学好正则表达式需要注意的几点

关于preg_match和preg_match_all函数结果的说明php代码为:<?php $str="sdh111-757-111fkjhgjkiu888-060-888ygndfhdsuifyiud"; $reg=‘/(d)12-(d)d2-13/i‘;//preg_match($reg,$str,$res); preg_match_all($reg,$str,$r 查看详情

关于各专业部门停止使用盗版工具软件的几点意见

(转载,原文不公开)关于各专业部门停止使用盗版工具软件的几点意见XX部、XXXX部、XX部、XXXX部、XX部:   近段时间,XX集团不断接到PTC公司等多个公司关于XX集团工作场所内研发、工程人员使用盗版专业设计软件的... 查看详情

readtable的用法

1. 如果使用READTABLE语句来读取内部表数据,而不是简单看返回值判断是否存在,   那么在使用READTABLE语句之前,一定要记得使用CLEAR语句清空内部表的工作区。   2. READTABLEitabWITHKEY=vBINARYSEARCH. 使... 查看详情

关于sql优化的几点说明(代码片段)

1.ORACLEDBA是如何进行SQL优化的作为一个Oracle数据库管理员(DBA),SQL优化是他们的日常工作之一,主要目标是优化查询性能,减少查询时间,并提高数据库的整体性能。以下是OracleDBA如何进行SQL优化的一般流程:... 查看详情

关于java中使用数组的几点理解笔记

1.数组元素就是变量;2.在已有数据类型之后加方括号[],就会产生一个新的数组类型;分两类:1)基本数据类型,如:int[],string[];  2)引用数据类型,如:Person[](类);3.main方法声明的变量都是局部变量,保存在栈中;4.数组元... 查看详情

关于springmvc映射模型视图的几点小事

一.SpringMVC概述SpringMVC为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一。SpringMVC通过一套MVC注解,让POJO成为处理请求的控制器,而无需实现任何接口。支持RESTFUL风格的URL。采用了松散耦合可插拔组件... 查看详情

struts2基础——需要注意的几点

struts是流行和成熟的基于MVC设计模式的web应用程序框架,使用struts可以帮助我们减少运用MVC设计模型来开发web应用的时间。目录:一、struts2的工作原理及文件结构二、三种访问ServletAPI的方式三、struts接收参数的三种方式四、自... 查看详情

关于threadlocal你需要知道的几点(代码片段)

一、ThreadLocal是什么?一个类对象类型,提供属线程本地变量,也就是同一个变量对不同线程保存了不同的值,但是和线程自身定义的自属变量不同。通常以私有静态类型定义,用以保存特定线程特定状态属性。线程存活期间保... 查看详情

text关于反应状态提升的几点思考(代码片段)

查看详情

servlet学习应该注意的几点

一、Servlet生命周期(即运行过程)(1)初始阶段,调用init()方法(2)响应客户请求阶段,调用service()方法。由service()方法根据提交方式不同执行doGet()或doPost()方法,其中service()方法判断了到底执行doGet()还是doPost()方法。(3)... 查看详情

手机网站的几点注意

对于手机网站建设,总结了如下几点注意:1、安卓浏览器看背景图片,有些设备会模糊。用同等比例的图片在PC机上很清楚,但是手机上很模糊,原因是什么呢?经过研究,是devicePixelRatio作怪,因为手机分辨率太小,如果按照... 查看详情

关于平台的几点思考

如何进行平台优化?  1、管理层面:资源统一管理、复用,制定规范(代码规范、文档规范、SOP操作规范),业务解耦,完善监控,职责分明,问题追踪,定期会议总结,机房冗余  2、业务层面:技术解决性能问... 查看详情

关于风险应对的几点笔记

1、感知风险第一刻就要积极探寻规避或者降低风险影响的途径和方法2、风险本身大多属于客观情况outofcontrol,所以在探求降低风险的途径时,要偏向于寻找主观可控度高且易执行的方法。3、尽快对方法途径的有效性做出评估和... 查看详情

游戏数值策划属性篇:关于属性设计的几点思考

...个游戏设计中笔者围绕着这个问题展开思考.....  一、关于属性设计思想的几点思考  1)定位  定位(Attributes)包括“角色”、“装备”、“坐骑”属性等,衍生属性多以“角 查看详情

关于:nth-children的几点总结

1、这是w3school上的解释:  2、自己的jq编程例子中      在24行中是$("div:nth-child(1)").addClass("c4");,运行效果:  所以在此处可以理解为$("div:nth-child(1)").addClass("c4");是:  选取div,然后给它下面的“所有的... 查看详情

关于数据库内“表”的几点

数据库内包含许许多多的表。表里包含着许许多多的字段。表的创建命令如下:CREATETABLE表名(指令尽量大写,表名小写)。正确的格式为:CREATETABLE表名(字段一       各种修饰词,字段二   ... 查看详情