怎样实现SAPS/4HANA系统CDSview扩展原理分析

这篇文章将为大家详细讲解有关怎样实现SAP S/4HANA系统CDS view扩展原理分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

成都创新互联网站建设公司是一家服务多年做网站建设策划设计制作的公司,为广大用户提供了成都网站设计、成都网站建设,成都网站设计,一元广告,成都做网站选成都创新互联,贴合企业需求,高性价比,满足客户不同层次的需求一站式服务欢迎致电。

创建扩展字段后,我想从接口视图中检索它的数据,就像I_产品一样。也就是说,扩展字段已经在MARA中,我想通过I_产品而不是MARA使用它。

怎样实现SAP S/4HANA系统CDS view扩展原理分析

使用以下ABAP代码时,它不起作用:

```ABAP

数据:I_产品的lt_表类型表。

从I_产品中选择*INTO TABLE@lt_TABLE。

```

原因是

我_产品的SQL视图中根本没有相应的扩展字段。为什么?

只是因为I_产品未启用扩展字段。

还应在自定义字段逻辑磁贴中启用:

(1). 选择您的扩展字段。

怎样实现SAP S/4HANA系统CDS view扩展原理分析怎样实现SAP S/4HANA系统CDS view扩展原理分析

(2). 选项卡UI和报告:

怎样实现SAP S/4HANA系统CDS view扩展原理分析

(3). 单击“启用使用”按钮:

怎样实现SAP S/4HANA系统CDS view扩展原理分析

永远不要忘记发布您的更改。

一旦完成,它现在就可以工作了:

怎样实现SAP S/4HANA系统CDS view扩展原理分析怎样实现SAP S/4HANA系统CDS view扩展原理分析

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

怎样实现SAP S/4HANA系统CDS view扩展原理分析

为什么之后我们 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时是什么时候生成的?

怎样实现SAP S/4HANA系统CDS view扩展原理分析

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

怎样实现SAP S/4HANA系统CDS view扩展原理分析怎样实现SAP S/4HANA系统CDS view扩展原理分析怎样实现SAP S/4HANA系统CDS view扩展原理分析怎样实现SAP S/4HANA系统CDS view扩展原理分析

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

答案还是在registry里:

怎样实现SAP S/4HANA系统CDS view扩展原理分析

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

怎样实现SAP S/4HANA系统CDS view扩展原理分析

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

怎样实现SAP S/4HANA系统CDS view扩展原理分析

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

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

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

怎样实现SAP S/4HANA系统CDS view扩展原理分析

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

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

怎样实现SAP S/4HANA系统CDS 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。

关于怎样实现SAP S/4HANA系统CDS view扩展原理分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


网站名称:怎样实现SAPS/4HANA系统CDSview扩展原理分析
文章起源:http://myzitong.com/article/gjcicp.html