ABAP 7.52 中的Open SQL新特色

S/4 HANA 1709 已经在多少个月前公布,随之而来的是ABAP 7.52。

本文翻译了履新文档中有关Open SQL的一些。

只要读者是Open SQL的新手,请不要从本文看起。更确切的教程是:A complete
guide to OpenSQL statements – Step-by-step tutorial with
screenshots

 

本文链接:http://www.cnblogs.com/hhelibeb/p/7941300.html

1,内表作为数据源

明日得以将内表钦定为查询语句的数据源。假若内表数据必要传递给数据库的话,则不得不在一部分数据库上运转。

例子:

DATA itab TYPE HASHED TABLE OF scarr
          WITH UNIQUE KEY mandt carrid.

IF NOT cl_abap_dbfeatures=>use_features(
         EXPORTING
           requested_features =
             VALUE #( ( cl_abap_dbfeatures=>itabs_in_from_clause ) ) ).
  cl_demo_output=>display(
    `System does not support internal tables as data source` ).
  RETURN.
ENDIF.

itab =  VALUE #( ( carrid = 'LH' carrname = 'L.H.' )
                 ( carrid = 'UA' carrname = 'U.A.' ) ).

SELECT scarr~carrid, scarr~carrname, spfli~connid
       FROM @itab AS scarr
         INNER JOIN spfli ON scarr~carrid = spfli~carrid
       INTO TABLE @DATA(result)
       ##db_feature_mode[itabs_in_from_clause].

cl_demo_output=>display( result ).

2,关系表明式

准则表明式现援助以下情状:

  • 能够对字符类数据类型大小比较,而且不再限制N类型。
  • 操作符BETWEEN不再限制N类型,SQL表明式今后能够在右边手使用了。
  • 现行反革命也支撑LIKE操作符。

3,转换函数

新的类型调换函数BINTOHEXHEXTOBIN这段时间得以在SQL表明式中把byte
strings调换为character strings,这种意义在CAST表明式中是不可行的。

演示程序,能够看到三种转移格局的结果是一样的:

 SELECT SINGLE id AS uuid32, hextobin( id ) AS uuid16
       FROM iwreferenc
       WHERE tcode = 'SE38'
       INTO @DATA(wa).

IF sy-subrc = 0.
  DATA uuid16 LIKE wa-uuid16.
  cl_system_uuid=>convert_uuid_c32_static(
    EXPORTING
      uuid          =     wa-uuid32
    IMPORTING
      uuid_x16      =     uuid16 ).
  ASSERT wa-uuid16 = uuid16.
ENDIF.

 

4,路线表明式

以下特征今后在门路表明式(path
expression)中可用:

  • 在传参的空白部分、属性方括号的空域部分和斜杠\前的职责,路线表明式能够分开为多个代码行。
  • 指标数据也是CDS表函数(table
    function)的时候,也得以使用Association了。
  • 参数能够在门路表达式association的后边传递。因此能够钦点带有参数的CDS
    entities作为association的数据源。
  • 在门路表达式中,未来能够钦点join表达式的cardinality和体系作为质量。
  • association的过滤条件今后得以在门路表达式中钦点。

5,访谈调控

新的首要字WITH PRIVILEGED
ACCESS
能够关闭CDS的访谈调整

6,子查询中的OLANDDESportage BY和UP TO, OFFSET

在子查询中,以往能够使用OCR-VDE君越 BY子句和叠合项UP TO,
OFFSET了。可是,不是怀有数据库都援助在子查询中运营O奇骏DEMurano BY。

瞩目:在子查询中,UP TO只可以用在O奥迪Q3DEQashqai BY子句前边,附加项OFFSET也不得不在UP
TO后边内定。

7,LFET OUT JOIN中的Cardinality

在LFET OUTETiggo JOIN中,能够用附加项ONE TO MANY钦定Cardinality。它能够被SAP
HANA识别为一种优化表明。

8,SELECT列表中的FORAV4 ALL ENTRubiconIES IN和字符串

在在此之前的凶恶情势语法检查中,SELECT语句的增大项FOR
ALL ENTLacrosseIES
IN不可能和SELECT列表中类型为ST酷威ING和RAWSTEvoqueING恐怕LCH瑞鹰和LRAW的列一同出现。未来以此范围已经被移除,语法检查只会对此提示一个警戒,实际不是不当。

9,严俊格局的语法检查

假诺您用到了地点列出的Open SQL中的任一新个性,语法检查会以严厉方式运作。

10,Client处理

在切换Client读取CDS entities时,附加项USING
CLIENT
CLIENT
SPECIFIED
会利用以下(更严酷的)法则:

  • CDS访问调控不会在跨Client访谈时职业。因而,附加项USING
    CLIENT
    CLIENT
    SPECIFIED
    只可以在CDS
    entities的访谈控制被关门的时候使用,即注脚为AccessControl.authorizationCheck.#NOT_ALLOWED,恐怕查询语句中运用了上文5中的WITH
    PRIVILEGED
    ACCESS
    时。
  • 路径表达式只好在机关Client管理张开的时候使用。不可以应用葡萄娱乐场,CLIENT
    SPECIFIED
    ,避防路线表明式中的association中的FROM子句中的目的数据是钦赐Client(Client-specific)的数据源(?),association的源数据源也不可以是钦定客户端的。

11,Open SQL中的代理服务

CL_OSQL_REPLACE能够在ABAP
Unit单元测验上将数据库访谈重定向至访问别的数据库的Open SQL。

此类只可以在测量试验类中选拔。

示范程序:DEMO_CL_OSQL_REPLACE