目录

  • Part1 – how to test odata service generated by CDS view
  • Part2 – what objects are automatically generate after you activate one CDS view
  • Part3 – how is view source in Eclipse converted to ABAP view in the backend
  • Part4 – how does annotation @OData.publish work
  • Part5 – how to create CDS view which supports navigation in OData service
  • Part6 – consume table function in CDS view
  • Part7 – unveil the secret of @ObjectModel.readOnly
  • Part8 – my summary of different approaches for annotation declaration and generation
  • Part9 – cube view and query view
  • Part10 – this blog
  • Part11 – CDS view test double framework
  • Part12 – CDS view source code count tool
  • Part13 – CDS view authorization

There is a good blog regarding key user extensibility tool in S4 written by Thomas Schneider.

One of supported feature is customer can easily add new fields to extensible CDS view without knowing technical detail.

For example, if a given CDS view is marked as “UI Reports” extensible in extensibility registration tcode SCFD_REGISTRY,

it means this CDS view would be visible in key user extensibility tool in S4, in tab “UIs and Reports”, so that end user can simply click “Enable Usage” button to add extension field to the view. In the screenshot below, it shows my Extension field “JDK Minimum version” has already been extended to view I_PRODUCTWD.

Now, just use the single line below, and you can read all fields of this view, standard fields and extension fields:

SELECT SINGLE * INTO @DATA(ls_data) FROM i_productwd WHERE
product = 'JAVA'.

So this CDS view extensibility is really easy to use for application developer.

However, how all these whole scenario work under the hood?

When trying to search the source code of extended CDS view by fragment of extension field name JDK, nothing found. This makes sense since none of SAP extensibility tool will directly MODIFY standard object.

Hover the mouse to this small icon in CDS view and you can see lots of extension view, which holds extension fields created by key user tool.

However how could I quickly locate which extension view holds my extension field “JDK Minimum Version”?

Open the SQL view of CDS view I_PRODUCTWD, it is IPRODUCTWD in SE11.
Search by keyword JDK and I find the extension field is added to this SQL view via append ZZ1_2CC44DDD3F1C.

Double click this append, then you can find the name of CDS extension view which holds this extension field: ZZ1_PRE47GXHDI6P2ZLO3ADGY4HHFE

Now go back to ABAP studio, locate CDS extension view ZZ1_PRE47GXHDI6P2ZLO3ADGY4HHFE and open it:

Here you can see that in this automatically generated CDS extension view, my extension field are there.

The standard view I_PRODUCTWD is extended by extension view ZZ1_PRE47GXHDI6P2ZLO3ADGY4HHFE via key word “extend view”, as a result the extension field ZZ1_JDKMinimumversion_PRD in ZZ1_PRE47GXHDI6P2ZLO3ADGY4HHFE will also be visible in view ZZ1_PRE47GXHDI6P2ZLO3ADGY4HHFE.

Last question, how and when the extension view ZZ1_PRE47GXHDI6P2ZLO3ADGY4HHFE is generated?
We can simply do testing by disable the usage of my extension field on view I_PRODUCTWD by click button “Disable Usage”.

Once done, the extension field disappears from view I_PRODUCTWD,

This observation proves that the extension view will only be generated after we click “Enable Usage” and publish the change.
When we click publish button, there are totally 10 enhancements to be generated for my extension field:

The first three rows are CDS extension view to be generated. Double click each and write down detail:


And extension view ZZ1_PRE47GXHDI6P2ZLO3ADGY4HHFE will be generated to extend I_PRODUCTWD:

The left code is responsible to generate extension view which I am not intrested in. What I am curious about is how the internal table mt_enhancements of CL_CFD_ENHANCEMENT_ITERATOR is filled.
It is filled in method determine_generation_scope:

In this method, the task to generate CDS extension view for view I_PRODUCTWD is added to enhancement scope, which will be executed later.

All these ten instances will be generated, to make the whole CDS view extensibility work.

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

SAP CDS view自学教程之十:SAP CDS view扩展性(Extensibility)实现原理相关推荐

  1. SAP CDS view自学教程之九:cube view和query view的实现原理

    In previous eight steps all we focus on is transactional stuff. This time let's touch some analytics ...

  2. SAP UI5 应用开发教程之六十 - SAP UI5 地图控件的一些高级用法试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  3. SAP UI5 应用开发教程之三十 - SAP UI5 的路由过程中进行参数传递试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  4. Oracle(11g)数据库教程之十:Oracle操作题 (复习课)

    Oracle(11g)数据库教程之十:Oracle操作题 (复习课) 操作题 Sutdent表的定义 字段名 字段描述 数据类型 主键 非空 Id 学号 INT(10) 是 是 Name 姓名 VAR ...

  5. SAP CDS view自学教程之八:SAP Fiori Elements里不同类型的annotation

    Part1 – how to test odata service generated by CDS view Part2 – what objects are automatically gener ...

  6. SAP UI5 初学者教程之二十 - SAP UI5 的表达式绑定用法讲解

    # 一套适合 SAP UI5 初学者循序渐进的学习教程 ## 教程目录 * SAP UI5 本地开发环境的搭建 * SAP UI5 初学者教程之一:Hello World * SAP UI5 初学者教 ...

  7. 推荐系统系列教程之十:协同过滤中的相似度计算方法有哪些?

    编者按:之前推出了<推荐系统系列教程>,反响不错,前面已经推出了九期,今天按约推出第十期:协同过滤中的相似度计量方法有哪些?希望朋友们多点"在看",多多转发,我会在&q ...

  8. SAP系统和微信集成的系列教程之十:如何在SAP C4C系统里直接回复消息给微信用户

    本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发环境的搭建 (2) 如何通过微信公众号消费API (3) 微信用户关注公众号之后,自 ...

  9. sap系统搭建教程_SAP系统和微信集成的系列教程之十:如何在SAP C4C系统里直接回复消息给微信用户...

    本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上: https://blogs.sap.com/2017/12/10/wechat-development-ser ...

最新文章

  1. php400错误的请求,Wordpress中的Ajax返回400错误请求,但不确定如何进一步调试 - WordPress - srcmini...
  2. Nginx 真实的 IP
  3. mysql很简单,Mysql入门很简单
  4. java判断是否是doc文件_java判断文件类型
  5. 当你看完这篇朴素贝叶斯(NB)算法后,是否会有怦然心动的感觉
  6. ubantu Wine QQ
  7. 如何连接到远程SQL Server
  8. Linux基础——Linux 基本指令 mkdir, rmdir 和 rm
  9. BZOJ 1801 中国象棋(DP)
  10. 安卓rom制作教程_【教程】给ROM制作一个卡刷补丁包
  11. Enzo Life Sciences/艾美捷丨线粒体/胞浆分离试剂盒
  12. 基于php的地铁查询系统,动手构建地铁关系网,实现最短路径查询
  13. 台式计算机蓝牙在哪,台式电脑蓝牙在哪里打开(台式电脑连接蓝牙教程分享)...
  14. Gaussian .fchk .chk 文件转化错误解决方法
  15. Win2008:在 Win2008R2 中安装 PowerShell 4.0 (旧作)
  16. 基于单片机住宅家庭防盗报警系统设计-毕设课设资料
  17. 编程训练1-每天吃鸡蛋花费最少问题
  18. vs编译 error C2001: 常量中有换行符
  19. 线程安全(thread safe)是什么?
  20. 谭八爷系统模式的探讨

热门文章

  1. 基于bboss开发平台eclipse开发工程生成工具介绍
  2. Docker简单的使用命令
  3. Deep Learning 论文笔记 (2): Neural network regularization via robust weight factorization
  4. strstr,strrchr,strpos,strrpos的区别http://blog.qit...
  5. oracle中directory的使用
  6. 漫谈C#编程中的多态与new关键字
  7. 适合小白了解学习的DevOps实践
  8. PHP语言 -- 文件上传
  9. 程序设计课程技巧小总结
  10. libevent源码深度剖析十