今天学习一下内表的表达式在ABAP 7.4之后的语法:

SELECT * FROM mara INTO TABLE @DATA(gt_mara)
UP TO 10 ROWS.
DATA gt_mara_sort TYPE SORTED TABLE OF mara WITH UNIQUE KEY primary_key COMPONENTS matnr. "旧语法
DATA LV_MATKL TYPE MARA-MATKL.
READ TABLE GT_MARA INDEX INTO DATA(LS_MARA).
READ TABLE gt_mara_sort INTO DATA(ls_mara_sort1) INDEX 1 USING KEY primary_key.
READ TABLE gt_mara_sort INTO DATA(ls_mara_sort2) WITH KEY matnr = 'AT001'.
IF SY-SUBRC EQ 0.
  LV_MATKL = LS_MARA_SORT2-MATKL.
ENDIF.
"新语法
DATA(LS_MARA_NEW) = GT_MARA[ ].
DATA(ls_mara_sort1_new) = gt_mara_sort1[ KEY primary_key INDEX 1 ].
"若是gt_mara_sort已经按照matnr排序,则按照二分法搜索
DATA(ls_mara_sort2_new) = gt_mara_sort2[ matnr = 'AT001' ]. DATA(LV_MATKL_NEW) = GT_MARA_SORT2[ MATNR = 'AT001' ]-MATKL.

"检查是否存在某个数据
"旧语法
READ TABLE gt_mara TRANSPORTING NO FIELDS WITH KEY matnr = 'AT001'.
"新语法
CHECK line_exists( gt_mara[ matnr = 'AT001' ] ).
"得到数据在内表中的行

"旧语法
DATA lv_tabix TYPE sy-tabix.
READ TABLE gt_mara TRANSPORTING NO FIELDS WITH KEY matnr = 'AT001'.
IF sy-subrc EQ .
lv_tabix = sy-tabix.
ENDIF. "新语法
DATA(lv_tabix_new) = line_index( gt_mara[ matnr = 'AT001' ] ).

注意事项:若当GT_MARA 中不存在 matnr = 'AT001'的数据时, 直接执行

DATA(LS_MARA) = GT_MARA[ MATNR = 'AT001' ].
会使程序dump,所以一般写成如下的样子:

ASSIGN gt_mara[ matnr = 'AT001' ] TO FIELD-SYMBOL(<fs>).
IF sy-subrc EQ .
* ...
ENDIF.

- TAB 学习技术 热爱生活


2019.11.07【每天学点SAP小知识】Day2 - ABAP 7.40新语法 - 内表的更多相关文章

  1. 2019.11.18【每天学点SAP小知识】Day4 - ABAP 7.40新语法 FOR

    "今天学习一下FOR的语法,常用的2个语法. FOR wa|<fs> IN itab [INDEX INTO idx] [cond] "FOR i = … [THEN ...

  2. 2019.11.10【每天学点SAP小知识】Day3 - ABAP 7.40新语法 值转化和值赋值

    1.语法为 CONV dTYPE|#(...)\ # 代表任意类型 "7.40之前表达式 . DATA helper TYPE string. DATA xstr TYPE xstring. ...

  3. 2019.11.06 【每天学点SAP小知识】Day1 - ABAP 7.40新语法

    最近看同事使用ABAP新语法贼溜,省了好多的功夫,还在使用老语法的我眼红了. 所以就自己补一补7.40之后语法,能够让自己写代码更顺畅吧. 今天学习内联申明 inline 意思是:当编译器发现某段代码 ...

  4. 【ABAP系列】SAP ABAP7.40新语法简介第一篇

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP7.40新语法简 ...

  5. 【ABAP系列】SAP ABAP7.40新语法简介第二篇

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP7.40新语法简 ...

  6. 2019/11/12 CSP模拟赛&&考前小总结

    写在前面的总结 离联赛只有几天了,也马上就要回归文化课了. 有点舍不得,感觉自己的水平刚刚有点起色,却又要被抓回文化课教室了,真想在机房再赖几天啊. 像19/11/11那场的简单题,自己还是能敲出一些 ...

  7. 猫猫学iOS之小知识iOS启动动画_Launch Screen的运用

    猫猫分享,必须精品 原创文章.欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243? viewmode=contents 看下效果吧 比如新浪微博的 ...

  8. 每天学点Java小知识【1】

    一 Java标识符和关键字 1.标识符 作用:用来标识类名.变量名.方法名.类型名.数组名.文件名的有效字符序列. 组成规则:由字母.下划线.美元符号和数字组成,且第一个字符不能是数字字符.注意:标识 ...

  9. 猫猫学iOS之小知识之xcode6自己主动提示图片插件 KSImageNamed的安装

    猫猫分享,必须精品 原创文章,欢迎转载.转载请注明:翟乃玉的博客 地址:http://blog.csdn.net/u013357243 一:首先看效果 KSImageNamed是让XCode能预览项目 ...

随机推荐

  1. 线上MYSQL同步报错故障处理总结(转)

    前言 在发生故障切换后,经常遇到的问题就是同步报错,数据库很小的时候,dump完再导入很简单就处理好了,但线上的数据库都150G-200G,如果用单纯的这种方法,成本太高,故经过一段时间的摸索,总结了 ...

  2. Python学习 第一天(一)初始python

    1.python的前世今生 想要充分的了解一个人,无外乎首先充分了解他的过去和现在:咱们学习语言也是一样的套路 1.1 python的历史 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈp ...

  3. TCP的ACK原理和延迟确认机制

    某天晚上睡觉前突然想到 tcp的ACK确认是单独发的还是和报文一起发的,下面看一下别人的解答 一.ACK定义TCP协议中,接收方成功接收到数据后,会回复一个ACK数据包,表示已经确认接收到ACK确认号 ...

  4. 一道经典JS面试题

    超过80%的候选人对下面这道JS面试题的回答情况连及格都达不到.这究竟是怎样神奇的一道JS面试题?他考察了候选人的哪些能力?对正在读本文的你有什么启示? 不起眼的开始 招聘前端工程师,尤其是中高级前端 ...

  5. 精选30道Java多线程面试题

    1.线程和进程的区别 进程是应用程序的执行实例.比如说,当你双击的Microsoft Word的图标,你就开始运行的Word的进程.线程是执行进程中的路径.另外,一个过程可以包含多个线程.启动Word ...

  6. 《Python基础教程》第三章:使用字符串

    find方法可以在一个较长的字符串中查找子字符串.它返回子串所在位置的最左端索引.如果没有找到则返回-1 join方法用来在队列中添加元素,需要添加的队列元素都必须是字符串 >>> ...

  7. linux weblogic的sh文件

      setDomainEnv.sh   JAVA_HOME和各种jvm参数,CLASSPATH都在这里配置 #!/bin/sh   # WARNING: This file is created by ...

  8. 重装maven

    重装原因:换旧版本! 一.直接删除maven文件夹 二.直接删除本地仓库文件 三.删除之前相关的项目(不是必须) 四.下载一个新的,网址 https://maven.apache.org/downlo ...

  9. 一款强大的Visual Studio插件!CodeRush v19.1.9全新来袭

    CodeRush是一个强大的Visual Studio® .NET 插件,它利用整合技术,通过促进开发者和团队效率来提升开发者体验.CodeRush能帮助你以极高的效率创建和维护源代码.Consume ...

  10. Hibernate的CRUD配置及简单使用

    参考博客:https://blog.csdn.net/qq_38977097/article/details/81326503 1.首先是jar包,可以在官网下载. 或者点击下面链接下载 链接:htt ...