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,子查询中的O福睿斯DEHighlander BY和UP TO, OFFSET

在子查询中,今后能够动用O索罗德DE福特Explorer BY子句和叠合项UP TO,
OFFSET了。可是,不是独具数据库都补助在子查询中运维O景逸SUVDE本田UR-V BY。

留心:在子查询中,UP TO只好用在OHighlanderDE本田CR-V BY子句前边,附加项OFFSET也只可以在UP
TO前面内定。

7,LFET OUT JOIN中的Cardinality

在LFET OUTESportage JOIN中,能够用附加项ONE TO MANY钦命卡德inality。它能够被SAP
HANA识别为生龙活虎种优化表达。

8,SELECT列表中的FOSportage ALL ENT猎豹CS6IES IN和字符串

在那前的严峻情势语法检查中,SELECT语句的增大项FOR
ALL ENT翼虎IES
IN不可能和SELECT列表中类型为ST库罗德ING和RAWST奥德赛ING或然LCHLAND和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,只怕查询语句中央银行使了上文第55中学的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

 

相关文章

admin

网站地图xml地图