转自:https://www.cnblogs.com/mingdashu/p/6744637.html

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 = '3000' )
( VKORG = '6008' ) ) .

DATA itab TYPE RANGE OF i.
itab = VALUE #( sign = 'I' option = 'BT' ( low = 1 high = 10 )
( low = 21 high = 30 )
( low = 41 high = 50 )
option = 'GE' ( low = 61 ) ).
cl_demo_output=>DISPLAY( itab ).

MOVE-CORRESPONDING语法:

CORRESPONDING语法:

itab[ … ]语法

… itab[ … ] …

相当于read table itab ….

u缺点

如果对应没找到,会抛出CX_SY_ITAB_LINE_NOT_FOUND异常

系统变量SY-SUBRC不会记录成功与否

u改进

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 新语法-内嵌生命和内表操作(转)的更多相关文章

  1. ABAP 7.4 新语法-内嵌生命和内表操作

    1.内嵌声明 2.内表操作 3.opensql ************************************************************************ 1. ...

  2. 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_ ...

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

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

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

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

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

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

  6. 微信小程序内嵌业务域名内的网页

    微信小程序在2017年11月左右开放了内嵌网页的功能,即新组件<web-view>.官方文档链接:https://mp.weixin.qq.com/debug/wxadoc/dev/com ...

  7. Hive 基本语法操练(一):表操作

    Hive 和 Mysql 的表操作语句类似,如果熟悉 Mysql,学习Hive 的表操作就非常容易了,下面对 Hive 的表操作进行深入讲解. **(1)先来创建一个表名为student的内部表** ...

  8. Markdown 代码块中再内嵌一个行内代码

    在 jQuery 1.9 之前(不含1.9):如果传入一个空字符串. null 或 jQuery.parseJSON( jsonString ) ,该函数将返回,而不是抛出一个错误,即使它不是有效的  ...

  9. js通过ua标识判断h5页面是否内嵌在app内

    var userAgent = navigator.userAgent.toLowerCase();//获取UA信息 if(userAgent.indexOf("ezhouxing" ...

随机推荐

  1. 在mysql中如何写注释

    MySql--三种注释写法 #这是注释/*注释内容*/ --  注释   (--与注释内容之间必须加空格)

  2. swoole是多进程还是多线程

    由于PHP语言不支持多线程,因此Swoole使用多进程模式.在多进程模式下存在进程内存隔离,在工作进程内修改global全局变量和超全局变量时,在其他进程是无效的. 进程隔离 $fds 虽然是全局变量 ...

  3. Element-ui 下拉列表 选项过多时通过自定义搜索来解决卡顿问题

    当使用Select选择器时,如果下拉列表的数据量太多,会有一个明显的卡顿体验,例如: <!DOCTYPE html> <html lang="en"> &l ...

  4. ETCD:基于角色的访问控制

    原文地址:Role-based access control 总览 身份验证已添加到etcd 2.1中. etcd v3 API略微修改了身份验证功能的API和用户界面,以更好地适应新的数据模型.本指 ...

  5. (转)简单移动平均线(Simple Moving Average,SMA) 定义及使用

    原文链接:https://blog.csdn.net/Enjolras_fuu/article/details/88602309   扩展:https://www.investopedia.com/t ...

  6. 使用laravel-amdin调用文件上传阿里oss注意点

    开发者工作中,项目代码开发提高效率,往往会使用一些github上面的一些扩展类,这里举例说明一下遇到的情况. 一.使用laravel-admin框架开发管理后台文件或者图片上传 情景:运营或者产品通过 ...

  7. The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone.

    介绍 再使用spring操作mysql数据库报错 @Test public void test() { try { //创建连接池,先使用spring框架内置的连接池 DriverManagerDat ...

  8. Add a Simple Action添加简单按钮

    In this lesson, you will learn how to create a Simple Action. For this purpose, a new View Controlle ...

  9. 使用elementUI的日期选择框,两选择框关联时间限值

    elementui 本身也提供了在一个输入框内关联选择时间的组件,非常好使,但无奈项目需要用两个输入框去关联的选择: <el-date-picker class="datepicker ...

  10. Web 安全总结

    同源策略 如果两个 URL 的协议.域名和端口都相同,我们就称这两个 URL 同源. 同源策略限制了来自不同源的 JavaScript 脚本对当前 DOM 对象读和写的操作. 同源策略限制了不同源的站 ...