zoukankan      html  css  js  c++  java
  • 【ABAP系列】SAP ABAP7.40新语法简介第二篇

    公众号:matinal
    本文作者:matinal
     

    前言部分

    大家可以关注我的公众号,公众号里的排版更好,阅读更舒适。

    正文部分

    从7.40开始,SP08可以使用在INTO之后用7.40,SP02引入的声明运算符DATA(...)来放置内联声明。

    下面举例说明比较清晰:

    DATA id TYPE scarr-carrid.
    cl_demo_input=>request( CHANGING field = id ).
    
    SELECT SINGLE carrname AS name, carrid AS id
           FROM   scarr
           WHERE  carrid = @id
           INTO @DATA(result).
    
    cl_demo_output=>display( result ).
    
    ​

    看到语法不同了吗,如果没看到,请回到你现有的系统中对比

    上面语法是INTO DATA里面的写法,下面说一下INTO TABLE里的写法

    举例说明:

    SELECT carrname AS name, carrid AS id
           FROM   scarr
           INTO TABLE @DATA(result).
    
    
    cl_demo_output=>display( result ).
    
    ​

    看到语法不同了吗

    根据SELECT列表中定义的结果集,声明基本数据对象,结构或内部表。 有关类型构造的详细信息,请参阅官方文档。

    将7.40,SP05引入SELECT列表中的SQL表达式使用7.40,SP08进行了增强,如下所示:

    1、可以在GROUP BY之后使用SQL表达式

    2、可以与聚合一起使用SQL表达式

    3、可以使用SQL表达式作为聚合的参数

    4、可以使用除简单CASE之外的已搜索CASE表达式

    对上述的描述,下面举例说明更清楚一点

    SELECT num1, num2,
    
           CASE WHEN col1 <  50 AND col2 <  50 THEN @both_l
    
                WHEN col1 >= 50 AND col2 >= 50 THEN @both_gt
    
                ELSE @others
    
           END AS group
    
           FROM demo_expressions
    
           ORDER BY group
    
           INTO TABLE @DATA(results).
    
    ​

    在SELECT列表中,可以使用语法data_source〜*从7.40,SP08开始指定数据源的所有列。 这在使用连接时很方便。

    举例说明:

    SELECT scarr~carrname, spfli~*, scarr~url
    
           FROM scarr INNER JOIN spfli ON scarr~carrid = spfli~carrid
    
           INTO TABLE @DATA(result).
    
    ​

    1、从7.40,SP08开始,INTO子句可以和应该(haha)在SELECT语句的其他子句之后使用。 那些不被视为子句的添加UP TO n ROWS,BYPASSING BUFFER和CONNECTION必须放在INTO子句之后。

    2、此更改背后的原理是,INTO子句不是标准SQL的一部分,而是定义SQL和ABAP之间的数据接口。 为了实现Open SQL的SQL部分中的未来增强, UNION,必须从SQL部分中删除INTO子句。

    一些限制已删除。 例如。 从7.40开始,SP08可以在SELECT列表中的算术表达式的运算符前面放一个减号,可以对聚合执行一个简单的CASE,在ON之后可以在连接条件中使用LIKE和IN(...) 您可以动态地在WHERE之后指定子查询。

    但是,如果您使用此处列出的任何新功能(如SP05已有的),则将以严格模式执行Open SQL的语法检查,其中应用更严格的语法规则。 例如。 您必须在主机变量前使用逗号分隔的列表和转义符号@。 通过这种方式,至少在Open SQL ABAP中以向下兼容的方式实施一个依赖于发布的deprecation概念。

  • 相关阅读:
    合并区间
    判断字符串是否是IP
    Python -- 异常处理
    python -- 双下方法
    python -- 判断函数和方法
    python -- 面向对象:反射
    Python -- 面向对象:类的成员
    Python -- 面向对象:类的约束
    Python -- 面向对象的三大特性及深入了解super()
    Python -- mro算法
  • 原文地址:https://www.cnblogs.com/SAPmatinal/p/11183576.html
Copyright © 2011-2022 走看看