CDSVIEW获取当前系统的日期、用户名、客户端、语言等


@AbapCatalog.sqlViewName: 'DEMO_CDS_SESSVAR' 
@AccessControl.authorizationCheck: #NOT_ALLOWED 
define view demo_cds_session_variables 
  as select from 
    demo_expressions  
    { 
      id, 
      $session.user            as system_user,    -- 当前用户
      $session.client          as system_client,   
      $session.system_language as system_language, 
      $session.system_date     as system_date 
    } 

$session.user      当前用户
$session.client    当前客户端
$session.system_language 语言
 $session.system_date 当前日期

官方注解

userABAP系统字段syuname的标称值
client默认值是ABAP系统字段命令的标称值。在使用ABAP SQL语句读取(添加USING CLIENT)和从ABAP调用AMDP方法(在其声明中指定了添加AMDP OPTIONS CDS SESSION CLIENT)时,此处指定的值
date当前内部会话的文本环境语言,ABAP系统字段sy语言的标称值
languageAS ABAP的当前系统日期,ABAP系统字段sy数据的标称值
### 关于 CDS View 的概述 CDS(Core Data Services)视图是一种用于定义数据模型的工具,在 SAP HANA 和其他数据库环境中被广泛使用。它允许开发者通过声明式语法来创建虚拟表结构,从而简化复杂查询逻辑并提高性能[^1]。 #### 在 SAP HANA 中的应用 SAP HANA 支持基于 ABAP 或者 SQLScript 创建 CDS Views。这些视图可以用来暴露业务对象的数据给前端应用或者作为 OData 服务的一部分对外发布。例如: ```sql @AbapCatalog.sqlViewName: 'ZMY_CDS_VIEW' define view Z_MY_CDS_VIEW as select from BUSINESS_OBJECT { key BUSINESS_OBJECT.ID, BUSINESS_OBJECT.NAME, sum(BUSINESS_OBJECT.AMOUNT) as TOTAL_AMOUNT } group by BUSINESS_OBJECT.ID, BUSINESS_OBJECT.NAME; ``` 上述代码片段展示了如何利用 CDS 定义一个简单的聚合视图,并标注其元属性以便进一步处理或调优[^2]。 #### 使用标准 SQL 调用 CDS View 即使是在非-SAP 数据库上也可以模拟类似的模式设计思路。虽然具体实现可能有所差异,但核心理念保持一致——即构建抽象层减少重复编码工作量的同时增强可维护性。下面是一个通用SQL例子展示怎样从已存在的表格生成类似功能的结果集: ```sql CREATE VIEW my_cds_view AS SELECT id, name, SUM(amount) OVER (PARTITION BY category ORDER BY date_column ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_total FROM transactions_table; ``` 这里我们创建了一个窗口函数计算每类交易随时间累积总额的情况[^3]。 ### 性能考量与最佳实践 当部署大量复杂的 CDS views 到生产环境之前应该考虑以下几个方面: - **索引优化**: 确保底层物理表有适当索引来支持频繁访问路径. - **避免过度嵌套子查询**: 这可能导致难以预测执行计划以及潜在低效资源消耗. - **测试真实负载条件下的表现**: 不同规模输入数据可能会显著影响最终输出速度.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值