@TOC本文回答了笔者知识星球上朋友提出的一个问题。已实施项目中的真实开发案例。先看项目需求,下图是SAPCRM标准Fiori应用之一:MyOpportunities的Opportunity详情页。可以看到这个界面并没有显示Opportunity的Creator字段。幸运的是,SAPFiori框架提供了端到端的扩展方式,即自上而下的每个数据交换层都支持通过扩展来增强,即:(1)底层持久层是数据库层这种方式有详细说明在作者教程中:73.如何通过增强的方法手动向SAPABAP数据库表中添加新字段。对于本文的例子,不需要提升数据库级别,因为OpportunityThecreator本身已经是数据库表的标准字段。(2)OData服务模型和ABAP实现代码增强。具体步骤在笔者的教程中有详细说明:30.如何使用SEGW的redefine功能扩展SAP标准OData服务(3)SAPUI5FioriUI层的增强,这是后面详述的内容这篇文章的。按照本文介绍的步骤,最终效果为:Creator字段暴露成功。SAPUI5开发的Opportunity详情页上:SAPUI5XML视图的ExtensionPoint概念。开发过SAPABAPBAdIEnhancement的朋友,对于ExtensionPoint(增强点)这个概念并不陌生。什么是SAPABAP扩展点?这是SAP为ABAP应用引入的一种增强机制,即为客户和实施伙伴保留的一种机制,可以在标准流程的某些位置自由插入自己的ABAP代码。这些特定位置插入的自定义代码不属于ABAP标准程序的一部分,但ABAP标准程序执行后,这些自研代码也会自动执行。客户和实施伙伴修改自研代码,不会影响SAP标准ABAP应用,两者分开存储和传输。在SAPUI5的XML视图中,也有类似ExtensionPoint的概念。与ABAPExtensionPoint相比,SAPUI5ExtensionPoint允许客户和合作伙伴逐一插入UI5控件。例如,本文将在Opportunity详情页面的所有标准字段底部插入Creator字段。通过SAPUI5ExtensionPoint,SAPUI5开发者可以在不影响原有SAPUI5应用代码的情况下,对应用进行个性化的扩展和定制。下图是MyOpportunities详情页的ExtensionPoint,其命名空间为Core:DevelopmentinSAPWebIDE在SAPWebIDE中新建一个FioriExtensionProject,然后新建一个ViewFragment,我们要添加到Opportunity标准中页面Creator字段的容器。我们将Creator字段对应的控件放入ViewFragment中,然后将ViewFragment放入Opportunity详情页的ExtensionPoint中。以后如果除了Creator字段还有其他字段扩展需求,我们只需要将这些额外的字段放在ViewFragment中即可。ViewFragment的实现文件名:extCreatedBy.fragment.xml。完整的XML源代码:>
