`
JerryWang_SAP
  • 浏览: 1083960 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论
阅读更多

After extension field is created, I would like to retrieve its data from interface view, like I_PRODUCT. That is, the extension field is already in MARA, I want to consume it via I_PRODUCT instead of MARA.

When using the following ABAP code, it does not work:

data: lt_table TYPE TABLE OF I_Product.

SELECT * INTO TABLE @lt_table FROM I_Product.

The reason is corresponding extension field does not appear in SQL view of I_PRODUCT at all. Why?

Simply because the extension field is not enabled for I_PRODUCT.

The enablement should also be done in custom field logic tile:

(1) select your extension field.

(2) tab UIs and Reports:

(3) Click "Enable Usage" button:

Never forget to publish your change.

Once done, it works now:

我来解答这两天我们讨论的问题。Key user 点了enable usage之后,如下图这个例子,

为什么之后我们 SELECT * FROM I_PRPODUCTWD 就能把extension field一起select出来,这些extension field不是做在E_PRODUCT上吗? E_PRODUCT 是通过association和I_PRODUCTWD连接起来的,为什么select * 能够把association view里的field一起读出来?

首先,上述红色的说法就是错误的,extension field并不是通过association从E_PRODUCT里读的. 我们要明确我们点enable usage的出发点是某个具体的extension field, 而不是从CDS view出发。选择了具体的extension field之后,再选择要extend的CDS view,点击publish,此时将会自动创建一个带有当前extension field的extension view,对选中的CDS extensible view进行扩展。这样造成的结果是,从SE11里观察SQL view能发现extension field会通过append的方式直接成为extensible view的一部分,这之后和E_PRODUCT再无任何关系。

比如这个extension view 在点publish时是什么时候生成的?

你可以自己debug,在这个方法里设个断点,然后点publish,你会发现publish时,有10个object会自动生成,其中第三个就是上面图里的extension view.

那框架咋知道我这个extension field在publish时要生成这10个东西?

答案还是在registry里:

如果想研究具体框架的generation实现,看这个class,里面每个sub class负责一种特定的repository generation实现,

其中CL_CFD_ENH_CDS_ENH_ABSTRACT又包含了所有CDS view相关的generation逻辑,里面又分了三种不同的类型。

所有这些协同工作,最后确保从application developer的眼里,看到extension field在design time时即出现在extensible view本身。

额外补充一点哈。

E_PRODUCT一个最主要的目的就是为了register使用,同时在创建custom field时点publish时,能够自动生成一个E_Product的extension view。

如下图。当然在此之前需要先去自动扩展Product table的这个字段,这也是在点publish时自动完成的。

然后当你需要把这个custom field暴露在上层的view时,比如I_ProductWD,这时去Jerry提到的点击Enable时就会生成I_ProductWD的extension view。

其实你如果点击对应的字段,你会发现其实就是从上面的E_Product的extension view里去读取的。

总结一下,I_ProductWD里定义的E_PRODUCT的association更多是用于design time(register),之后在enable时知道如何创建extension view。然后有了extension view时,就跟E_Product没有直接关系了,因为extension view:ZZ1_PRE47GXHDI6P2ZLO3ADGY4HHFE里的内容是自动暴露为hosting view:I_PRODUCTWD的interface的。这也是为什么select *能自动出来,并不需要通过association。

0
0
分享到:
评论

相关推荐

    S4HANA分析与BW集成场景简介.pdf

    - 使用S/4HANA内置的标准CDS View(例如I_GLAccountLineItemCube)进行分析。 - 通过S/4HANA的分析工具AO访问这些CDS View。 - 可以直接通过SQL View(例如IFIGLLITMCUBE)访问数据,无需额外的中间层或转换。 #...

    HANA-CDS view 教程

    7. **智能业务应用程序**:讨论如何利用CDS视图支持S/4HANA中的智能业务场景,如嵌入式分析和智能预测。 8. **实践项目**:通过实际操作练习,巩固所学知识,包括创建和测试CDS视图,以及解决可能出现的问题。 请...

    SAP ABAP 通过Eclipse扩展MSEG字段教程.pdf

    上述步骤结合了SAP ABAP的开发规范和Eclipse开发工具的使用,展现了如何在SAP的S/4HANA版本下进行开发和字段扩展。通过实践操作,可以加深对SAP ABAP开发的理解,进一步掌握如何使用第三方工具进行高效开发。

    SAP HANA跟我学HANA系列之日期函数总结

    ### SAP HANA跟我学HANA系列之日期函数总结 #### 1. ADD_DAYS函数 **功能**: 计算指定日期加上指定天数后的日期。 **语法**: `ADD_DAYS(, )` - `<datetime>`: 可以是`DATE`、`TIMESTAMP`或`SECONDDATE`类型的...

    SAP-CDSView-Eclipse安装及创建步骤.doc

    SAP CDS (Core Data Services) 视图是SAP HANA数据库中的一种高级数据建模工具,它允许开发者创建高性能的数据模型,尤其在处理多表关联查询时能显著提升性能。CDS 视图使用声明式语言定义,并且可以直接在数据库...

    new abap 74 for sap hana end to end development

    关于新版本SAP ABAP 7.4在SAP HANA数据库上的端到端开发,该文件提供了一系列开发指导和步骤,涵盖了从环境准备、CDS视图构建、数据库过程管理到服务端和前端应用的开发。接下来将详细介绍各个部分的知识点。 首先...

    ZS4HCDS Complete_210611.pdf

    HANA CDS:由于HANA需要直接在数据库内开发应用,使用标准SQL语言比如CREATE TABLE和CREATE VIEW等,已不能满足需要定义带有语义属性(比如Annotation)的数据库表、视图、类型等,因此HANA CDS应运而生。 ABAP CDS:...

Global site tag (gtag.js) - Google Analytics