今天是2020年2月1日鼠年大年初八,这是Jerry鼠年的第8篇文章,也是汪子熙公众号总共第207篇原创文章。
Jerry的前一篇文章 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @ObjectModel.readOnly工作原理解析,给大家分享了@ObjectModel.readOnly这个注解对应的Fiori UI和ABAP后台的工作原理。
今天我们继续研究另一个注解@OData.publish.
在SAP官网的ABAP Programming Model for SAP Fiori的帮助文档里,在OData Annotations目录下有对这个注解的介绍:
一旦加上了这个注解的CDS view激活时,会自动生成一个OData服务。
这个OData服务是如何自动生成的?这就是本文所要分享的内容。
假设我们对加了这个注解的CDS view激活后自动生成的OData服务的明细一无所知,从何处开始入手进行研究呢?
我创建了一个名为zjerrytest20160311的view,然后加上这个注解,激活。根据我的经验,按照SAP惯例,自动生成的OData服务的名称应该也会包含0311这个字符串。
激活之后,我试着用0311作为关键字在OData服务的注册事务码/IWFND/MAINT_SERVICE里搜索,果然搜到了对应生成的OData服务:
在Jerry之前的文章 [ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX这些东东是什么鬼](ABAP CCDEF, CCIMP, CCMAC, CCAU, CMXXX这些东东是什么鬼) 曾经提到ABAP Netweaver的注册表TADIR,按照0311进行查询,发现CDS view激活之后,除了OData服务本身,还自动生成了下列这些对象:
- IWMO: SAP Gateway Business Suite Enablement对应的模型
- IWSV: SAP Gateway Business Suite Enablement对应的服务
- CLAS: OData服务的实现类ZCL_ZJERRYTEST20160311
做个实验,当我把OData.publish的值设置为false,再次激活,发现类型为IWMO和IWSV的对象从注册表TADIR中消失了,这再次印证了二者是注解OData.publish设置为true之后激活CDS view生成的。
那么如何研究CDS view激活时,这两个对象的自动生成逻辑呢?
使用Jerry文章(SAP错误消息调试之七种武器:让所有的错误消息都能被定位) 里介绍的第六种武器,离别钩之ST05.
打开ST05跟踪模式,激活CDS view,在数据库跟踪结果里果然发现了将自动生成的对象名称插入到注册表TADIR的OPEN SQL语句。
《神雕侠侣》天竺僧去绝情谷给杨过找情花毒解药时,说过一句话:毒蛇出没之处,七步之内必有解药。
同样,在ABAP里,在插入数据库表的OPEN SQL语句之前,必定有待插入数据的生成逻辑。
点击ST05里蓝色的眼镜图标,自动跳转到OPEN SQL语句里。设置断点,激活CDS view,断点触发:
从当前的调用栈往外追溯,发现在第21个调用栈帧,正是自动生成OData服务的地方:
CL_WB_DDLS_SECOBJ_HNDLR_SINGLE->IF_DDIC_WB_DDLS_SECOBJ_HANDLER~ON_ACTIVATION
这个方法首先根据delta_state判断出需要删除,新增或者更新的对象清单,分别存储在下图12到14行三个输出参数里。
举个例子,当我在一个已经激活过后的CDS view源代码里添加@OData.publish:true的注解,然后激活,此时该注解对于的EDIT_STATE为N(New), 而其他的注解因为没有任何变化,被标记为U(Unchanged).
此处会根据EDIT_STATE的值,进入对应的分支。
EDIT_STATE值为N的分支,则执行OData服务的创建,通过CL_SADL_GTK_ODATA_SERVICE_GEN完成,后缀GEN代表Generation.
从调试器里能看出,名称为ZJERRYTEST20160311的OData服务通过create_via_exposure方法被创建。
完整的调用栈:
本文其实也是另一个具体的例子,在不了解一段逻辑(无论框架层面或者应用层面)的情况下,如何使用ST05这个工具来找到设置断点的代码位置,从而找到问题分析的突破口。
感谢阅读。
更多阅读
- Jerry的通过CDS view + Smart Template 开发Fiori应用的blog合集
- SAP Fiori应用的三种部署方式
- Jerry的Fiori原创文章合集
- SAP成都C4C小李探花:浅谈Fiori Design Guidelines
- SAP Fiori + Vue = ?
- Fiori Fundamentals和SAP UI5 Web Components
- 30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用
- SAP Fiori应用索引大全
- 介绍一种Fiori标准应用的增强方式
- 揭开SAP Fiori编程模型规范里注解的神秘面纱 - @ObjectModel.readOnly工作原理解析
- 为什么SAP GUI里的传统事务码能通过Fiori Launchpad启动并运行在浏览器里
- 一步步把SAP GUI的事务码配置到SAP Fiori Launchpad里
相关推荐
SAP Fiori配置手册 本配置手册旨在指导用户完成SAP Fiori的设置和配置,从而实现SAP Fiori Launchpad的激活。下面是该手册中所涉及到的知识点: 1. 创建管理员账号和测试账号 在SAP Fiori的配置中,需要创建管理...
SAP Fiori 是 SAP 软件和应用程序的新用户体验(UX),提供了一组应用程序,用于常规业务功能,如工作批准,金融应用程序,计算应用程序和各种自助服务应用程序。SAP Fiori 提供了 300 多个基于角色的应用程序,如...
sap press doc 解压密码:abap_developer
SAP Fiori是SAP公司推出的一套应用程序和设计原则的集合,旨在为用户提供直观、简洁的用户体验。它打破了传统ERP系统的复杂界面,转而提供更加现代化且易用的界面,通过角色为基础的应用程序来支持各类业务流程。SAP...
SAP Fiori 是 SAP 软件和应用程序的新用户体验(UX),提供了一组应用程序,用于常规业务功能,如工作批准,金融应用程序,计算应用程序和各种自助服务应用程序。SAP Fiori 提供 300 多个基于角色的应用程序,如人力...
### SAP Fiori OData 实施步骤详解 #### 一、OData与SAP Fiori的关系 在SAP Fiori环境中,OData(Open Data Protocol)扮演着至关重要的角色。它是一种用于定义构建和消费RESTful API的最佳实践的标准协议。通过...
SAP Fiori 是 SAP 对传统用户界面的一次重大革新,通过简化复杂的业务流程和提供个性化体验,极大地提升了用户的满意度和工作效率。随着 SAP HANA 的普及和技术的发展,SAP Fiori 的应用范围和功能也将不断扩展,...
在本压缩包"SASP-FIORI-Blog-连篇.zip"中,我们有望找到一系列关于SAP Fiori安装、配置和使用的详细指南。 首先,安装SAP Fiori的前提条件是至关重要的。这通常包括但不限于以下几点: 1. **系统平台**:确保你的...
- **编写符合 SAP Fiori 2.0 规范的应用程序**: 开发者需要遵循一套新的设计准则来确保应用程序的一致性和可访问性。 ##### 2. **使用 SAP Fiori 元素开发 SAP Fiori 应用** - **列表报告视图 (List Report View)...
SAP Fiori 是 SAP 公司推出的一种全新的用户体验(UX)设计,旨在提供更加直观、高效和个性化的企业级应用程序。这个快速指南将带你了解 SAP Fiori 的基本概念、设计原则以及不同类型的 SAP Fiori 应用程序。 首先...
### SAP Fiori APP 应用快速实施解决办法 #### 一、引言 SAP Fiori 是一种全新的用户界面设计原则和技术框架,旨在为用户提供直观、简洁和一致的体验。本文档将详细介绍如何通过手动配置步骤或使用预定义任务列表...
- SAP Fiori-like应用程序UI - SAP Fiori-like应用程序架构 - 练习0:入门 - 练习1:资源模型 - 练习2:对象控制 - 练习3:格式化器 - 练习4:搜索功能 - 练习5:Split App & Shell - 练习6:额外的设备适配 - 练习7...
SAP fiori的简易开发过程指南,从开发者角度出发,分后面ODATA开发环境和前端SAP UI5环境搭建,以及发布进行了讲解
基本Vue描述基本Vue库是使用SAP Fiori基本知识构建的一组Vue.js组件。 SAP Fiori基础知识l基本Vue描述基本vue库是使用SAP Fiori基础知识构建的一组Vue.js组件。 SAP Fiori基础知识库是一个设计系统和HTML / CSS组件...
在SAP NetWeaver Gateway中,你需要创建一个符合OData标准的服务,该服务包括了工作流相关的数据模型和业务逻辑。这一步骤需要对SAP NetWeaver Gateway的开发工具有深刻理解,包括如何在Eclipse开发环境中创建服务,...
另外,本文还涉及到了启停SAP NetWeaver网关,以及激活支持SAP Fiori启动板的OData服务和SICF服务的具体路径与步骤。在最后阶段,则讲述了管理员角色向用户角色授权的操作方法,确保用户能获得进入和利用SAP Fiori...
内容概要:该文件详细介绍了用于支持SAP Fiori应用开发的ABAP编程模型的关键要素及其应用场景。这涵盖了如何利用核心数据服务(CDS)定义丰富的语义模型以及OData协议的应用方法。主要内容包括如何将不同组件集成到...
Take a deep dive into SAP Fiori and discover Fiori architecture, Fiori landscape installation, Fiori standard applications, Fiori Launchpad configuration, tools for developing Fiori applications and ...