ABAP 7.4 新语法-内嵌生命和内表操作
1.内嵌声明
2.内表操作
3.opensql
*&---------------------------------------------------------------------*
1. 内嵌声明
1)声明符号: DATA(...)
再也不需要建立一堆的临时变量了
2)指针声明符:FILED-SYMBOL(…)
*&---------------------------------------------------------------------*
7.40之前-变量
DATA text TYPE string.
text = `...`.
7.40之后-变量
DATA(text) = `...`.
*&---------------------------------------------------------------------*
7.40之前-工作区
DATA wa like LINE OF itab.
LOOP AT itab INTO wa.
...
ENDLOOP.
7.40之后-工作区
LOOP AT itab INTO DATA(wa).
...
ENDLOOP.
*&---------------------------------------------------------------------*
7.40之前-返回参数
DATA xml TYPE xstring.
CALL TRANSFORMATION ... RESULT XML xml.
7.40之后-返回参数
CALL TRANSFORMATION ... RESULT XML DATA(xml).
*&---------------------------------------------------------------------*
7.40之前-传输参数
DATA a1 TYPE ... DATA a2 TYPE ... oref->meth( IMPORTING p1 = a1 IMPORTING p2 = a2 ... )
7.40之后-传输参数
oref->meth( IMPORTING p1 = DATA(a1) IMPORTING p2 = DATA(a2) ... )
*&---------------------------------------------------------------------*
7.40之前-引用声明
DATA ixml TYPE REF TO if_ixml.
DATA stream_factory TYPE REF TO if_ixml_stream_factory.
DATA document TYPE REF TO if_ixml_document. ixml = cl_ixml=>create( ).
stream_factory = ixml->create_stream_factory( ).
document = ixml->create_document( ).
7.40之后-引用声明
DATA(ixml) = cl_ixml=>create( ).
DATA(stream_factory) = ixml->create_stream_factory( ).
DATA(document) = ixml->create_document( ).
*&---------------------------------------------------------------------*
740之前-指针声明
FIELD-SYMBOL:<LFS_TAB> LIKE LINE OF ITAB. LOOP AT itab ASSIGNING <LFS_TAB>. ...
ENDLOOP.
740之后-指针声明
LOOP AT ITAB ASSIGNING FIELD-SYMBOL(<LFS_TAB>). … ENDLOOP. READ TABLE itab assigning field-symbol(<line2>) ....
2. 内表操作
- VALUE
- MOVE-CORRESPONDING
- CORRESPOING
- FOR
- REDUCE
- GROUP BY
- FILTER
VALUE语法:
结构赋值
... VALUE dtype | #( [BASE dobj] comp1 = dobj1 comp2 = dobj2 ... ) ...
内表赋值
... VALUE dtype | #( [BASE itab] ( (line1-com1 = dobj1) ( line2 ..) ... ) ...
"内表不能带表头
IT_VKORG = VALUE #( KUNNR = E_KNA1-KUNNR ( VKORG = '' )
( VKORG = '' ) ) .

DATA itab TYPE RANGE OF i.
itab = VALUE #( sign = 'I' option = 'BT' ( low = high = )
( low = high = )
( low = high = )
option = 'GE' ( low = ) ).
cl_demo_output=>DISPLAY( itab ).
MOVE-CORRESPONDING语法:

CORRESPONDING语法:

itab[ … ]语法
… itab[ … ] …
相当于read table itab ….
如果对应没找到,会抛出CX_SY_ITAB_LINE_NOT_FOUND异常
系统变量SY-SUBRC不会记录成功与否
IF line_exists ( itab[…] )
…..
ENDIF
通过这行语法判断行是否查找到
FOR语法
加强版本的loop at语法,与REDUCE、VALUE关键字配合使用
…FOR i = ... [THEN expr] UNTIL | WHILE log_exp ...
…VALUE itab( FOR i = … [THEN expr] UNTIL | WHILE log_exp ... )
…REDUCE type( INIT FOR …. NEXT …..

REDUCE语法

GROUP BY语法



FELTER语法
可以根据指定值(一个)或者指定内表(多个)的值过滤itab并返回itab类型的结果集
FILTER type( itab [EXCEPT] [IN ftab] [USING KEY keyname ]
WHERE c1 op f1 [AND c2 op f2 [...] ] ) ...
FILTER type( itab …) 对应一个值过滤
FILTER type( itab in tab …)对应多个值过滤
EXCEPT如果不指定则表示满足条件的找出来,如果指定则表示不满足条件的找出来
WHERE对应过滤的条件,是必须要指定的
3. OPEN SQL

SELECT SINGLE @ABAP_TRUE INTO @DATA(EXISTS) FROM KNA1 WHERE KUNNR EQ @I_KNA1-KUNNR.
IF EXISTS <> ABAP_TRUE. ENDIF.
ABAP 7.4 新语法-内嵌生命和内表操作的更多相关文章
- ABAP 7.4 新语法-内嵌生命和内表操作(转)
转自:https://www.cnblogs.com/mingdashu/p/6744637.html ABAP 7.4 新语法-内嵌生命和内表操作 1.内嵌声明 2.内表操作 3.opensql ...
- 2019.11.07【每天学点SAP小知识】Day2 - ABAP 7.40新语法 - 内表
今天学习一下内表的表达式在ABAP 7.4之后的语法: SELECT * FROM mara INTO TABLE @DATA(gt_mara)UP TO 10 ROWS. DATA gt_mara_ ...
- 2019.11.06 【每天学点SAP小知识】Day1 - ABAP 7.40新语法
最近看同事使用ABAP新语法贼溜,省了好多的功夫,还在使用老语法的我眼红了. 所以就自己补一补7.40之后语法,能够让自己写代码更顺畅吧. 今天学习内联申明 inline 意思是:当编译器发现某段代码 ...
- 2019.11.10【每天学点SAP小知识】Day3 - ABAP 7.40新语法 值转化和值赋值
1.语法为 CONV dTYPE|#(...)\ # 代表任意类型 "7.40之前表达式 . DATA helper TYPE string. DATA xstr TYPE xstring. ...
- 2019.11.18【每天学点SAP小知识】Day4 - ABAP 7.40新语法 FOR
"今天学习一下FOR的语法,常用的2个语法. FOR wa|<fs> IN itab [INDEX INTO idx] [cond] "FOR i = … [THEN ...
- 微信小程序内嵌业务域名内的网页
微信小程序在2017年11月左右开放了内嵌网页的功能,即新组件<web-view>.官方文档链接:https://mp.weixin.qq.com/debug/wxadoc/dev/com ...
- Hive 基本语法操练(一):表操作
Hive 和 Mysql 的表操作语句类似,如果熟悉 Mysql,学习Hive 的表操作就非常容易了,下面对 Hive 的表操作进行深入讲解. **(1)先来创建一个表名为student的内部表** ...
- Markdown 代码块中再内嵌一个行内代码
在 jQuery 1.9 之前(不含1.9):如果传入一个空字符串. null 或 jQuery.parseJSON( jsonString ) ,该函数将返回,而不是抛出一个错误,即使它不是有效的 ...
- js通过ua标识判断h5页面是否内嵌在app内
var userAgent = navigator.userAgent.toLowerCase();//获取UA信息 if(userAgent.indexOf("ezhouxing" ...
随机推荐
- Linux下随机生成密码的命令总结
有时候经常为如何设置一个安全.符合密码复杂度的密码而绞尽脑汁,说实话,这实在是一个体力活而且浪费时间,更重要的是设置密码的时候经常纠结.终于有一天实在忍不住了,于是学习.整理了一下如何使用Linux下 ...
- commonJS的核心思想
服务器端的 Node.js 遵循 CommonJS规范,该规范的核心思想是允许模块通过 require 方法来同步加载所要依赖的其他模块,然后通过 exports 或 module.exports 来 ...
- Android之XListView下拉刷新,更新网络美女图
一.简介: 下拉刷新是一种特定的手动刷新交互,和其他的同类操作不同的地方在于它采用了更加直觉的下拉操作,所以它的交互足够清晰明显. 下拉刷新主要用在类似ListView这样的控件,设计下拉刷新有三 ...
- java学习笔记 --- 面向对象
一.对象和类 类(class):类是用于描述现实事物的,它将现实事物进行抽象化,模板化描述.将事物的特点(属性)和行为封装在其中.比如小汽车的图纸,图纸就是小汽车的模版.图纸上画着小汽车的各种特点和功 ...
- ASP.NET Core MVC 源码学习:MVC 启动流程详解
前言 在 上一篇 文章中,我们学习了 ASP.NET Core MVC 的路由模块,那么在本篇文章中,主要是对 ASP.NET Core MVC 启动流程的一个学习. ASP.NET Core 是新一 ...
- iOS性能之其他
本篇文章是个引用,因为这些技术我都只是研究过,但是并没有在项目中使用,也没有深入研究,所以只能当做一个笔记了 网络请求 现在大多数的网络请求都是使用的json格式(相信没有APP再使用XML格式了吧) ...
- 解决Highcharts 5.0.7,IE8下bar类型图表无法显示的问题
引用如上, 当图标类型为bar时,IE8无法直接显示, 官网也一样, 但通过切换图例可以显示, 所以加入以下代码解决此问题 未经允许,严禁转载!!!
- EventBus通信小能手
1.EventBus简介 EventBus 是由 greenrobot 组织开发的一个 Android 事件发布/订阅轻量级框架,特点:代码简洁,是一种发布订阅设计模式(观察者设计模式). Even ...
- 解决Appium无元素可选的如何定位
1.首先我们看看要定位的东西,我要定位的就是折让率上图自己看 写代码: AndroidElement element = driver.findElementByAndroidUIAutomato ...
- Android -- 自定义ViewGroup+贝塞尔+属性动画实现仿QQ点赞效果
1,昨天我们写了篇简单的贝塞尔曲线的应用,今天和大家一起写一个QQ名片上常用的给别人点赞的效果,实现效果图如下: 红心的图片比较丑,见谅见谅(哈哈哈哈哈哈).... 2,实现的思路和原理 从上面的效果 ...