注解

  • 系统常量
    • $session.client
    • $session.system_date
    • $session.system_language
    • $session.user
  • SAP ABAP CDS view里的注解在ABAP后台是如何被解析的?
  • CDS 视图中的 ABAP 注解:
    • ABAP 目录注解
      • @AbapCatalog.sqlViewName: '\'
      • @AbapCatalog.compiler.compareFilter: '\'
    • 访问控制注解
      • @AccessControl.authorizationCheck: '\'
    • 最终用户文本注解
      • @EndUserText.label:'\'
  • CDS 视图中的语义注解
    • 语义注释 –> 文本和 url
      • @Semantics.text: '<值>'
      • @Semantics.url: '<值>'
    • 语义注释:currencyCode 和 amount.currencyCode
      • @Semantics.currencyCode: '<值>'
      • @Semantics.amount.currencyCode: '\'
    • 语义注释–> unitOfMeasure 和quantity.unitOfMeasure
      • @Semantics.unitOfMeasure: '<值>'
      • @Semantics.quantity.unitOfMeasure: '\'
  • CDS 视图中的对象模型注解
    • ObjectModel代表Key和ObjectModel.text.element:
      • @ ObjectModel.representativeKey: '<名称键字段>'
      • @ObjectModel.text.element: '<值>'
    • ObjectModel foreignKey.association:
      • @ObjectModel.foreignKey.association: '<名称键字段>'
    • 其他ObjectModel
      • @ObjectModel.readOnly
      • @ObjectModel.association.type
    • DefaultAggregation 注释:
      • @DefaultAggregation: '<值>'
    • 消费注解:
      • @Consumption.filter: '<值>'
    • VDM 和 OData 注释:
      • @VDM.viewType: '<值>'
      • @OData.publish: ''
  • CDS 视图中的分析注释
    • 分析数据类别和查询注释
      • @Analytics.dataCategory:''
      • @Analytics.query:''
    • 分析数据提取和详细信息注释:
      • @Analytics.dataExtraction.enabled:''
      • @AnalyticsDetails.query.axis:''
  • 不知道怎么分类的注解
    • @Environment.systemField
  • 后面再慢慢更新吧

系统常量

$session.client

$session.client              SAP 客户端

$session.system_date

$session.system_date         系统时间,SY-DATUM

$session.system_language

$session.system_language         SAP语言

$session.user

$session.user                        登陆SAP的用户

SAP ABAP CDS view里的注解在ABAP后台是如何被解析的?

SAP ABAP CDS view里的注解在ABAP后台是如何被解析的?

CDS 视图中的 ABAP 注解:

有一组 SAP 注解,由 SAP 预先定义。这些包括由 ABAP 运行时环境评估的 ABAP 注解和由其他框架(如 OData、UI 和 Analytics)评估的组件注解。

注解用于向 CDS 实体添加元数据。它们由使用 CDS 实体的框架进行评估。注解指定实体的属性和语义及其在运行时访问时的行为。使用特殊 API 的消费工具也可以访问此元数据。

当 CDS 源代码中定义的对象被激活时,注解定义的元数据保存在 ABAP Dictionary 的内部数据库表中。然后可以访问这些表来评估数据。无论名称和值如何,都使用正确的语法为每个注解完成此操作。

ABAP 目录注解

以下 ABAP 目录注解可用:

@AbapCatalog.sqlViewName: ‘<SQL VIEW NAME>’

描述: ABAP 词典中 CDS 数据库视图的名称。

可能的值:最多 16 个字符的字符串。

用于注解@AbapCatalog.sqlViewName的SQL 视图名称是一个最多16 个字符的字符串,由字母数字和下划线组成,并以命名空间前缀开头。

注意
CDS 视图的每个定义都必须包含 ABAP 注解
@AbapCatalog.sqlViewName,它定义了ABAP 字典中 CDS 数据库视图的名称。

@AbapCatalog.compiler.compareFilter: ‘<VALUE>’

说明:定义CDS 视图路径表达式中过滤条件的评估。

可能的值:true或false

使用注解@AbapCatalog.compiler.compareFilter,可以定义 CDS 视图路径表达式中过滤条件的评估。当设置为 true 时,过滤条件被比较,如果它们匹配,关联的连接表达式只计算一次。设置为 false 时,将为每个过滤条件创建和评估单独的连接表达式。

访问控制注解

以下访问控制注释可用:

@AccessControl.authorizationCheck: ‘<VALUE>’

说明:定义使用 Open SQL 访问 CDS 视图时的隐式访问控制。权限检查

可能的值: #CHECK、#NOT_REQUIRED 和 #NOT_ALLOWED

注解@AccessControl.authorizationCheck允许您定义在使用 Open SQL 访问 CDS 视图时如何处理访问控制,如下所示。

CHECK:如果使用 Open SQL 访问视图,如果将 CDS 角色分配给视图,则隐式执行访问控制。如果视图没有角色,则会出现语法检查警告。

NOT_REQUIRED:与#CHECK 类似,但没有语法检查警告。

NOT_ALLOWED:不执行访问控制。这会在视图角色的 DCL 源代码中生成语法检查警告。

ABAP CDS 支持基于数据控制语言 (DCL) 的访问控制。ABAP CDS 中的访问控制进一步限制了从 ABAP CDS 中的 CDS 实体返回的数据。CDS 访问控制基于以下几点:

使用 DCL 语句 DEFINE ROLE 定义的 CDS 角色。目前,CDS 角色隐式映射到每个用户。这就是为什么它们也被称为映射角色的原因。

在 CDS 角色 CDS 实体中定义的访问条件。访问条件可以如下:

  • 将 CDS 实体的元素与文字值进行比较的文字条件。
  • 将 CDS 实体的元素与 SAP 授权概念中的授权相关联的 PFCG 条件。

如果为 CDS 实体定义了 CDS 角色,则每次使用 Open SQL 或使用服务适配描述语言 (SADL) 查询访问对象时都会隐式评估访问条件(除非使用值 #NOT_ALLOWED 禁用访问控制)注解@AccessControl.authorizationCheck)。如果启用访问控制,则只读取满足访问条件的数据。

注:
SADL(Service Adaptation Description Language)是一种ABAP技术,基于模型驱动的方式,可以在具有共同开发体验的各种场景下,实现类实体关系的ABAP数据模型的消费。因此,SADL 可以使用查询下推实现对基于 SAP HANA 的移动和桌面应用程序场景的数据的快速读取访问。

最终用户文本注解

以下 EndUserText 注释可用:

@EndUserText.label:’<String>’

描述: CDS 视图的可翻译短文本,用户看到的文本

可能的值:最多 40 个字符的字符串

引入了ABAP 注释@EndUserText.label来定义 CDS 对象的可翻译语义文本。像这样的注释的值保存在具有语言键且可翻译的特殊表中。源代码中指定的值应由 CDS 源代码原始语言的文本组成,并被翻译成所需的语言。

CDS 视图中的语义注解

对于数据处理、分析和数据消费,核心引擎需要正确解释投影列表中使用的列。语义注解通知客户端有关数据类型的信息。

语义注解用于通知客户端哪些元素包含电话号码、姓名或地址的一部分,或与日历事件相关的内容,等等。例如,它们不得绑定到专用消费渠道。它们需要可用于通过 OData、(S)QL 等使用。

语义注解补充了语义数据类型的概念,而语义数据类型总是在提供者/核心基础设施中引入特定行为(通过专用操作或转换函数)。语义标注允许对仅对消费端有影响的语义(如电话号码、邮件地址、城市等)进行标准化。

语义注释 –> 文本和 url

以下文本和 URL 语义注解可用:

@Semantics.text: ‘<值>’

描述:此注释标识一个人类可读的文本,它不一定依赖于语言。

可能的值:true或false

使用@Semantics.text注释,该字段被识别为人类可读的文本字段。该领域不需要依赖于语言。

@Semantics.url: ‘<值>’

说明:此注释字段包含一个 URL,其 MIME 类型包含在引用的第二个字段中。

可能的值: URL

语义注释:currencyCode 和 amount.currencyCode

以下currencyCode 和amount.currencyCode 语义注释可用:

@Semantics.currencyCode: ‘<值>’

描述:此注释标记包含货币代码的字段。

可能的值:true或false

the currency field is connected to the FlightPrice and CurrentBookingsTotalAmount .

@Semantics.amount.currencyCode: ‘<VALUE>’

说明:此注释包含货币金额,引用字段中包含相应的货币代码。

可能的值: [ELEMENT, PARAMETER]

使用注释 Semantics.currencyCode,该字段被标记为包含货币代码。这可以是 ISO 代码或 SAP 货币代码(数据类型 CUKY)。

注释@Semantics.amount.currencyCode将字段标识为包含货币金额,并且相应的货币代码包含在引用的字段中。

the currency field is connected to the FlightPrice and CurrentBookingsTotalAmount .

语义注释–> unitOfMeasure 和quantity.unitOfMeasure

以下unitOfMeasure 和quantity.unitOfMeasure 语义注释可用:

@Semantics.unitOfMeasure: ‘<值>’

说明:此注释将字段标记为包含度量单位。

可能的值:true或false

@Semantics.quantity.unitOfMeasure: ‘<Value>’

说明:注释字段的值指定与测量数量相关的测量单位。

可能的值: [ELEMENT, PARAMETER]

使用@Semantics.unitOfMeasure注释,该字段被标记为包含度量单位。

注:
目前似乎没有国际公认的可用计量单位标准清单。

注释@Semantics.quantity.unitOfMeasure将字段标识为包含与测量数量相关的测量单位。

CDS 视图中的对象模型注解

ObjectModel代表Key和ObjectModel.text.element:

以下ObjectModel注释可用:

@ ObjectModel.representativeKey: ‘<名称键字段>’

说明:将最特殊的元件,表示该视图是基于实体的主键(由关键字KEY表示)的(FI场或管理协会)。

可能的值: <名称键连接的场>

加上注解@ObjectModel.representativeKey,代表键对应的外键字段代表实体。因此,它可以称为具有代表性的外键元素。外键关联是在代表性外键元素上定义的。代表键的名称通常等于视图所代表的实体的名称。对于非文本视图,它是视图用作值列表/检查表的关键元素。

@ObjectModel.text.element: ‘<值>’

描述:建立一个领域与其描述性语言无关的文本的联系。

可能的值:元素

使用注释@ObjectModel.text.element,注释数组中列出的第一个文本字段将在 OData 暴露场景中作为注释字段的描述性文本进行处理。

ObjectModel foreignKey.association:

以下 ObjectModel 注释可用:

@ObjectModel.foreignKey.association: ‘<名称键字段>’

说明:定义与视图的关联,该视图表示带注释的字段的值列表/检查表。

可能的值: <元素>

使用注解@ObjectModel.foreignKey.association,注解字段的值必须等于目标视图的注解代表键字段。关联的最大目标基数必须为 1。

In the view Z00_I_FlightConnection, three associations are created.
The first association created a relationship between carrier id (LH) and the carrier name (Lufthansa).
The last two associations set up the relationship between the airport id (FRA) and the airport name (Frankfurt). Two associations were made because there are two airport columns: AirportFrom and AirportTo.


In the body of the CDS view Z00_I_FlightConnection, three foreign key associations are created.

其他ObjectModel

@ObjectModel.readOnly

该CDS只读

@ObjectModel.association.type

@ObjectModel.association.type: [#TO_COMPOSITION_ROOT, #TO_COMPOSITION_PARENT]

能够从该view的页面跳转到 COMPOSITION_ROOT, COMPOSITION_PARENT 页面(浏览器页面)

@ObjectModel.association.type: [#TO_COMPOSITION_CHILD]

能够跳转到 child页面

DefaultAggregation 注释:

以下 DefaultAggregation 注释可用:

@DefaultAggregation: ‘<值>’

说明:当为元素指定了 DefaultAggregation 注释时,相应的元素将用作所谓的度量。

可能的值: SUM、MAX、MIN、AVG、COUNT、COUNT_DISTINCT、FORMULA 和 NONE

通过为元素指定@DefaultAggregationannotation,相应的元素在标准 CDS QL 场景和分析场景中都用作度量(可以聚合的元素)。

值 SUM、MAX、MIN、AVG、COUNT、COUNT_DISTINCT 确定度量的默认聚合。

FORMULA 值表示该元素是一个公式,必须在通过聚合或计算确定操作数后进行计算。它永远不应该被聚合。例如:保证金:=(收入/成本)。

值 NONE 表示该元素不是度量。通常这些元素用于过滤器和 GROUP BY 语句中。

The Distance field is defined as a unit of measure and the aggregation type is #SUM.
The DistanceUnit field (KM or Miles) is related to the Distance field.

消费注解:

以下消费注释可用:

@Consumption.filter: ‘<值>’

描述:这个注解可以过滤底层视图的元素。在对视图执行查询之前应指定过滤器。

可能的值:—

使用@Consumption.filter 注释,可以启用对底层视图元素的过滤。该注释将由分析经理解释。

通常过滤器值由用户在 UI(过滤器弹出窗口)上手动输入,以便在底层视图的元素上设置过滤器。核心 CDS 层并不明确知道过滤器,而只有像 Data Preview、MDX、Advanced Analysis for Office、BO Explorer 或 OData 这样的客户端才知道。在访问数据时,将用户输入转换为 WHERE 条件是消费(框架)的任务。

VDM 和 OData 注释:

以下 VDM 和 OData 注释可用:

@VDM.viewType: ‘<值>’

说明:定义VDM 视图的类型。

可能的值: BASIC、COMPOSITE 或 CONSUMPTION。

使用@VDM.viewType注释,VDM 视图类型被分类。此分类仅用于 SAP 内部结构化和 CDS 视图的解释。为客户和合作伙伴发布 CDS 视图由视图的附加内部分类控制。

  • BASIC – 构成核心数据基础的视图,没有数据冗余。
  • COMPOSITE – 提供从 BASIC 视图派生和/或组合的数据的视图。
  • CONSUMPTION – 用于特定应用目的的视图,可以根据公共接口(例如,BASIC 和 COMPOSITE)视图进行定义。

@OData.publish: ‘’

说明:在打算生成 OData 服务时设置此注释。

可能的值:true或false

当注释@ OData.publish被设置和CDS视图被激活时,自动生成OData服务。随后,OData服务还需要在事务被激活/ IWFND / MAINT_SERVICE手动。

CDS 视图中的分析注释

为了能够在 SAP S/4 HANA 系统中的核心数据服务之上构建分析查询,您需要了解分析管理器如何使用分析查询,以及如何使用分析注释。

为分析消费启用 CDS 数据模型

分析注释使分析管理器能够进行多维数据消费、执行数据聚合以及对数据进行切片和切块。Design Studio 和 Analysis Office 等 BI 前端可以通过分析管理器使用数据。

CDS 中分析模型的创建基于分析 CDS 注释。它们是 CDS 特定领域注释的一部分。对于某些部分,例如层次结构,应用了一些核心 CDS 注释。

分析数据类别和查询注释

以下 Analytics dataCategory 和 Query Annotations 可用:

@Analytics.dataCategory:’’

描述:通过指定数据类别,开发人员可以向分析经理提供有关如何解释单个实体的指令和提示。

可能的值: #DIMENSION、#FACT、#CUBE 或 #AGGREGATIONLEVEL

分析管理器需要一个星型模式(多维)和一个查询来使用数据。大多数用于在不同 CDS 视图中定义星型模式的注释都在 ObjectModel 注释中指定。分析注释还指定了事实(星型模式的中心)、将数据复制到其他系统的提取能力以及分析查询
属性。

使用@Analytics.dataCategory注释,您可以指定以下内容:

#DIMENSION:代表主数据的视图。

#FACT:表示没有冗余的事务数据(星型模式中心)的视图。通常它包含措施。通常,这些视图是复制所必需的,因此不应将它们与主数据视图合并。

#CUBE:#CUBE 值也代表事实数据,但#CUBE 不必没有冗余。这意味着可以连接主数据。查询通常建立在#CUBE 之上,其中数据是从事实中复制的。

#AGGREGATIONLEVEL:这个值表示一个投影。对于这种视图,分析管理器提供回写功能(计划功能)。

@Analytics.query:’’

说明:指定将向分析管理器公开哪些视图。这些视图不得使用@Analytics.dataCategory = #NONE 进行注释。

可能的值:真或假

分析数据提取和详细信息注释:

以下 Analytics dataExtraction 和 Details 注释可用:

@Analytics.dataExtraction.enabled:’’

描述:通过此注释,您可以标记适合数据复制的视图。

可能的值:真或假

应用程序开发人员可以使用注解@Analytics.dataExtraction.enabled 来标记适合数据复制的视图。这些视图必须使用 Analytics.dataCategory 进行注释(值 AGGREGATIONLEVEL 除外)。设置为
true表示该视图适合数据复制,否则设置为false。

@AnalyticsDetails.query.axis:’’

描述:在特定轴上定位视图的元素。

可能的值: FREE、ROWS 或 COLUMNS。

使用@AnalyticsDetails.query.axis 注释,视图的元素可以定位在多个轴上。元素可以直接用它们的轴进行注释。所有度量(可以聚合的元素)都需要在同一轴上。因此,第一个度量的注释将用于查询的所有度量。如果未找到 AnalyticsDetails.query.axis,系统将在列上定位度量。

非度量元素的默认值是自由轴。请注意,属于查询中同一字段的投影列表中的元素将被分组在一起。

不知道怎么分类的注解

@Environment.systemField

@Environment.systemField: #SYSTEM_LANGUAGE P_Language : syLangu
@Environment.systemField: #USER p_uname : syst_uname

https://www.cnblogs.com/sap-jerry/p/8468983.html
隐式参数
会话变量是访问其中包含的信息的便捷方式 - 全局变量。我们知道全局变量的不要轻易使用。将AS ABAP中的信息传递给CDS视图和CDS表函数的适当参数。为了方便我们使用ABAP 7.50 为CDS视图和函数参数引入了新的ABAP注释@ Environment.systemField 我们来看一下:

1、#CLIENT
2、#SYSTEM_DATE
3、#SYSTEM_TIME
4、#SYSTEM_LANGUAGE
5、#USER

如果我们在Open SQL中使用带注释的参数访问CDS视图或CDS表函数,则可以(对于#CLIENT)放弃显式参数传递。Open SQL隐式传递相应系统字段的内容。

我来举个栗子:

@AbapCatalog.sqlViewName: ‘DEMO_CDS_SYST’ @AccessControl.authorizationCheck: #NOT_REQUIREDdefine view demo_cds_system_fieldswith parameters@Environment.systemField : #CLIENTp_mandt : syst_mandt,@Environment.systemField : #SYSTEM_DATEp_datum : syst_datum,@Environment.systemField : #SYSTEM_TIMEp_uzeit : syst_uzeit,@Environment.systemField : #SYSTEM_LANGUAGEp_langu : syst_langu  @Environment.systemField : #USERp_uname : syst_uname  as select from demo_expressions          { :p_mandt as client,:p_datum as datum,:p_uzeit as uzeit,:p_langu as langu,:p_uname as uname  }where id = ‘1’;

使用OPEN SQL访问,我也举个栗子:

SELECT *FROM demo_cds_system_fields(  )INTO TABLE @DATA(result).

可见参数是隐式传递的

SELECT *FROM demo_cds_system_fields( p_datum  = @sy-datum,p_uzeit  = @sy-uzeit,p_langu  = @sy-langu,p_uname  = @sy-uname )INTO TABLE @DATA(result).

p_mandt的值不能再显式传递。

隐式参数传递是为了方便起见,仅在Open SQL中可用。如果在CDS实体中使用带参数的CDS实体,则必须再次显式传递参数。我们可以传递上面提到的会话变量。

后面再慢慢更新吧

ABAP CDS注解详解相关推荐

  1. 26.SpringBoot事务注解详解

    转自:https://www.cnblogs.com/kesimin/p/9546225.html @Transactional spring 事务注解 1.简单开启事务管理 @EnableTrans ...

  2. mybatis注解详解

    mybatis注解详解 首 先当然得下载mybatis-3.0.5.jar和mybatis-spring-1.0.1.jar两个JAR包,并放在WEB-INF的lib目录下 (如果你使用maven,则 ...

  3. 开启注解缓存_Spring Boot 2.x基础教程:进程内缓存的使用与Cache注解详解

    随着时间的积累,应用的使用用户不断增加,数据规模也越来越大,往往数据库查询操作会成为影响用户使用体验的瓶颈,此时使用缓存往往是解决这一问题非常好的手段之一.Spring 3开始提供了强大的基于注解的缓 ...

  4. spring-boot注解详解(一)

    spring-boot注解详解(一) @SpringBootApplication @SpringBootApplication = (默认属性)@Configuration + @EnableAut ...

  5. Spring零配置之@Configuration注解详解

    转载自 Spring零配置之@Configuration注解详解 @Configuration介绍 Spring3.0之前要使用Spring必须要有一个xml配置文件,这也是Spring的核心文件,而 ...

  6. Spring Boot注解详解

    文章目录 使用注解的优势 注解详解(配备了完善的释义) 注解列表如下 JPA注解 springMVC相关注解 全局异常处理 项目中具体配置解析和使用环境 使用注解的优势 采用纯java代码,不在需要配 ...

  7. 【SpringBoot 】SpringBoot注解详解

    [SpringBoot ]SpringBoot注解详解 一.注解(annotations)列表  @SpringBootApplication:包含了@ComponentScan.@Configura ...

  8. java method 注解_JAVA 注解详解及简单实例

    JAVA 注解详解及简单实例 何为注解 注解(Annotation)又称为元数据,在JDK1.5后引入,它的作用是: 生成文档  这是注解的原始用途,可以通过注解生成JavaDoc文档 跟踪代码的依赖 ...

  9. Java基础13:反射与注解详解

    Java基础13:反射与注解详解 什么是反射? 反射(Reflection)是Java 程序开发语言的特征之一,它允许运行中的 Java 程序获取自身的信息,并且可以操作类或对象的内部属性. Orac ...

最新文章

  1. 低代码、无代码?深度解读硅谷新趋势(上)
  2. 【OpenCV3】图像翻转——cv::flip()详解
  3. AI理论知识整理(3)-正定矩阵
  4. c语言pop逆置单链表,C语言实现单链表
  5. 30万手表推荐_今年六十岁生日,儿子说要送只30万的手表,请问有哪些推荐?...
  6. 【Spring】Spring Access to DialectResolutionInfo cannot be null when ‘hibernate.dialect‘ not set
  7. kafka使用_Kafka生产者的使用和原理
  8. 浅谈Eclipse dropins插件安装的坑(附m2e的各个版本插件下载)
  9. Altium Designer安装教程
  10. 《大数据处理技术Spark》--林子雨
  11. 前端html——图片插入
  12. 无旋Treap(fhq)
  13. 泛型的基础概念,T和?的使用方法和区别
  14. 获取图像的Hu不变矩
  15. 某计算机系统的内存储器由cache,计算机组成原理习题课1讲解
  16. 如何用大数据进行甜品店选址要素分析
  17. 关于使用mysqlworkbench实现远程连接数据库
  18. 《牛奶可乐经济学》---成本效益原则
  19. ExtJs之数据和ComboBox控件
  20. 在Mac上使用“系统偏好设置”的 12大提示和技巧

热门文章

  1. 移动应用开发相关法律法规
  2. 计算机课教学日志,教师教学日志例文
  3. 翻译考试用计算机作答,法语考试:全国翻译专业资格(水平)考试(CATTI)介绍
  4. R提示ERROR: dependencies ‘caret’ are not available for package ‘XXX’ 和MethylCIBERSORT的R包安装
  5. 怀念到哭泣、再美也伤
  6. 免屏实现精准较时设定,WT588F02B-8S(C006_03)电子语音药盒解决方案
  7. python opencv 通过hsv阈值法扣取药盒 并矫正
  8. JavaScript常用正则判断(待续...)
  9. mysql数据库练习作业
  10. WWDC 2016 | Siri 新技能 Get!帮你发微信、叫滴滴、支付宝转账