一个真实的 SAP 标准 UI5 应用的扩展开发项目(Extension Project)分享 - UI5 界面上新增订单创建者字段
本文回答笔者的知识星球里一个朋友提出的问题,文章内容也是笔者曾经指导 SAP CRM Fiori 客户实施过的一个项目里的真实开发案例。
先看项目需求,下图是 SAP CRM 标准的 Fiori 应用之一:My Opportunities 的 Opportunity 明细页面。
可以看到这个界面,并没有将 Opportunity 的创建者(Creator)字段放出来。
幸运的是,SAP Fiori 框架提供了端到端的扩展手段,即自上而下的每一个数据交换层,都支持通过扩展(extension)的方式进行增强,即:
(1) 底层持久层即数据库层面的增强,这种方式在笔者这篇教程里有详细介绍:
对本文的例子来说,不需要增强数据库层面,因为 Opportunity 的创建者本身就已经是数据库表的标准字段了。
(2) OData 服务模型和 ABAP 实现代码的增强。具体步骤在笔者这篇教程里有详细介绍:
(3) SAP UI5 Fiori UI 层的增强,也就是本文余下部分详细阐述的内容。
按照本文介绍的步骤,最后实现的效果是:Creator 字段成功暴露字啊 SAP UI5 开发的 Opportunity 明细页面上:
SAP UI5 XML 视图的 Extension Point 概念
做过 SAP ABAP BAdI Enhancement 开发的朋友们,对于 Extension Point(增强点) 这个概念都不会陌生。
什么是 SAP ABAP 的 Extension Point?
这是 SAP 为 ABAP 应用引入的一种增强机制,即在标准程序的某些位置,预留给客户和实施伙伴能够自由插入自己 ABAP 代码的一种机制。在这些特定位置插入的自定义代码,不属于 ABAP 标准程序的一部分,但是在 ABAP 标准程序被执行之后,这些自开发代码也会自动执行。
客户和实施伙伴修改自开发代码,并不会影响到 SAP 标准的 ABAP 应用,二者分开存储和传输。
SAP UI5 的 XML 视图里,也有类似 Extension Point 的概念。同 ABAP Extension Point 相比,SAP UI5 的 Extension Point,允许客户和合作伙伴插入的是一个个 UI5 控件,比如本文将要在 Opportunity 明细页面,所有标准字段的底部
,插入的 Creator 字段。
通过 SAP UI5 Extension Point, SAP UI5 开发人员可以在不影响原始 SAP UI5 应用程序代码的情况下,对应用程序进行个性化的扩展和定制化。
下图是 My Opportunities 明细页面的 ExtensionPoint,其命名空间为 Core
:
SAP WebIDE 里的开发
在 SAP WebIDE 里新建一个 Fiori Extension Project,然后创建一个新的 View Fragment,这个 Fragment 是我们要添加到 Opportunity 标准页面的 Creator 字段的一个容器。我们把 Creator 字段对应的控件放到 View Fragment 里,然后再把 View Fragment 放到 Opportunity 明细页面的 Extension Point 里。
将来如果除了 Creator 字段之外还有其他的字段扩展需求,我们只需要把这些额外的字段放到哦啊 View Fragment 里即可。
View Fragment 的实现文件名称:extCreatedBy.fragment.xml
.
完整的 XML 源代码:
<core:FragmentDefinition xmlns="sap.m" xmlns:core="sap.ui.core" xmlns:ui="sap.ui.layout">
<ui:form.SimpleForm id="opportunityExtension">
<ui:content>
<Label id="opportunityCreatedByLbael" text="Created By">
</Label>
<Text id="opportunityCreatedByValue" text="{json>/extCreatedBy}"></Text>
</ui:content>
</ui:form.SimpleForm>
</core:FragmentDefinition>
把之前按照下面这篇教程,通过 Redefine 方法扩展的 OData 服务的 url,配置到这个 Fiori extension 项目里来:
在这个 redefine 过后的 OData 服务实现里,/IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_ENTITY
和 /IWBEP/IF_MGW_APPL_SRV_RUNTIME~GET_EXPANDED_ENTITY
两个方法需要 redefine.
以上就是这个项目里将 Creator 扩展字段暴露到 SAP UI5 标准应用 My Opportunities 明细页面上去的关键步骤。
相关文章
- SAP UI5 应用中的 sap.ui.require 使用场景
- 关于 SAP UI5 所有控件的共同祖先 - sap.ui.base.ManagedObject
- SAP Debug 修改表中数据
- SAP UI5 sap.ui.Device.media.RANGESETS.SAP_STANDARD_EXTENDED 介绍
- SAP UI5 sap.ui.Device.media 公有方法介绍
- 通过一个实际例子,理解 SAP UI5 sap.ui.model.odata.v2.ODataModel API 中 BindingContext 绑定上下文的概念和用法试读版
- [ChatGPT 勘误] SAP UI5 的 sap.ui.base.Object
- 如何给 SAP ABAP ALV 报表的修改功能添加自定义校验逻辑试读版
- SAPGUI 里运行的老程序,如何对新的 SAP Fiori Belize Theme 进行适配?
- SAP Fiori Launchpad url 参数 sap-app-origin-hint 的含义
- 35. 如何自行查找出 SAP ABAP 标准的 OData 服务返回数据的后台数据库表和表字段名称
- SAP SE73维护字体和条形码详解编程语言
- SAP中数字计算时溢出捕获详解编程语言
- SAP ALV标准范例程序介绍详解编程语言
- (转载整理)SAP ERP常用表详解编程语言
- SAP移动平均价格与标准价格详解编程语言
- SAP MM批次管理(7)分割评估-大海详解编程语言
- SAP vs Oracle:差异点与解析(sap和oracle的区别)
- Oracle与SAP在仓储领域的联姻(仓库oracle和sap)
- Oracle与SAP权衡利弊比较之路(oracle与sap比较)
- 对比Oracle和SAP价格比较哪个是更值得投入的选择(oracle与sap价格)
- 展望未来Oracle与SAP的合作结盟前景(oracle、sap)
- 使用Oracle与SAP进行数据接口开发(oracle sap接口)