`

ABAP 筑基宝典

阅读更多
ABAP 筑基宝典(5) -- 关于使用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
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所在行索引最低。
过后他调查了一下,一点脾气都没有,乖乖地说OK,呵呵。
分享到:
评论

相关推荐

    ABAP4编程宝典中文版(word完整版)

    ABAP4编程宝典中文版,是一份详细深入的教程,涵盖了ABAP/4语言的基础到高级应用,旨在帮助开发者全面掌握ABAP编程技术。ABAP(Advanced Business Application Programming)是SAP公司的一种编程语言,主要用于开发...

    ABAP/4开发宝典中文版

    ABAP/4开发宝典中文版是关于ABAP/4编程语言的手册。其目的在于: · 向新的ABAP/4程序员提供从基本语言组件到复杂报表和事务编码的全面指导 · 向资深ABAP/4程序员提供解决特殊问题的参考方案 为满足这些需求,特...

    abap/4 开发宝典中文版

    这个“ABAP/4 开发宝典中文版”是一个面向初学者的入门教程,尽管较老,但ABAP语言的核心特性变化不大,因此仍然具有很高的参考价值。 ABAP,全称为Advanced Business Application Programming,是一种过程驱动的...

    abap4开发宝典中文版

    ABAP/4开发宝典中文版是关于ABAP/4编程语言的手册。其目的在于: · 向新的ABAP/4程序员提供从基本语言组件到复杂报表和事务编码的全面指导 · 向资深ABAP/4程序员提供解决特殊问题的参考方案 为满足这些需求,特...

    ABAP4编程宝典中文版

    ABAP4编程宝典中文版

    ABAP4编程宝典中文版 abap魔鬼教程

    ABAP4编程宝典中文版,也被称为ABAP魔鬼教程,是学习SAP ABAP语言的重要参考资料。ABAP,全称为Advanced Business Application Programming,是一种专为SAP系统设计的编程语言,广泛应用于企业级应用软件的开发。在...

    ABAP∕4 开发宝典中文版.rar

    本压缩包文件《ABAP/4开发宝典中文版》提供了全面的ABAP/4学习资料,旨在帮助开发者深入理解和掌握这种强大的编程工具。 ABAP/4(Advanced Business Application Programming)起源于20世纪70年代,随着SAP系统的...

    ERP信息化专业资料:ABAP4编程宝典中文版(完整版)2.docx

    ### ABAP/4编程宝典知识点总结 #### 一、ABAP/4语言概览 **ABAP/4**(高级商业应用编程)是SAP公司为其内部开发而设计的一种编程语言,经过多年的完善和发展,已成为SAP系统的核心语言之一。它不仅用于SAP内部的...

    ABAP∕4 开发宝典中文版

    ABAP/4开发宝典中文版是关于ABAP/4编程语言的手册。其目的在于: · 向新的ABAP/4程序员提供从基本语言组件到复杂报表和事务编码的全面指导 · 向资深ABAP/4程序员提供解决特殊问题的参考方案 为满足这些需求,特...

    ABAP学习4宝典 入门学习的精品

    这个“ABAP学习4宝典”显然是一份针对初学者的资源集合,旨在帮助新接触ABAP的人快速入门并掌握核心概念。下面我们将深入探讨ABAP的一些关键知识点。 1. **基础语法**:ABAP的基础包括数据类型(如I、N、D、F等)、...

Global site tag (gtag.js) - Google Analytics