ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SAP Fiori 的附件处理(Attachment handling)

2022-06-20 12:32:39  阅读:179  来源: 互联网

标签:handling 创建 附件 Fiori Attachment var SAP


以 SAP CRM Fiori 应用为例。附件处理有两个层面,即在 Fiori UI 上显示附件(读取操作),以及通过 Fiori UI 创建附件(写入操作)。

Attachment 的读取

如下图所示,点击任意 Attachment 超链接,

即自动打开浏览器下载窗口。

到该 OData 对应的实现系统,比如 AG3 后台,事物码 SEGW,打开 CRM_OPPORTUNITY OData 项目,创建一个名为 Opportunity_Attachments 的 association,指向一个名叫 OpportunityAttachment 的 Dependent Entity.

Opportunity 和 OpportunityAttachment 模型的关系是 0:n, 即一个 Opportunity 允许没有 attachment,也可以允许有多个 attachment.

Attachment 的模型字段:

我们可以在 AG3 设置断点,调试 attachment 的读取请求:

Fiori UI 把要读取的 attachment 实例信息通过 SAP UI5 代码传递给后台 ABAP:

最后调用 CL_CRM_OPPORTUNITY_DPC_EXT~GET_STREAM 方法从 AG3/001 系统上读取附件数据:

Fiori 前台即 S3.view.xml 使用的是 UploadCollection 控件来显示附件。

当 Attachment 标签页被点击时,触发 attachmentsTabSelected 方法:

在该方法里,手动调用 OData API 发起向后台读取数据的 OData 请求:

var info = this.getView().byId('info');
		var headerGuid = info.getModel('json').getData().Guid;
		var oModel = this.oModel;
		var sPath = this.sPath;
		// get the list to set the post url param
		var that = this.getView();

		oModel.read(sPath, null, [
			"$expand=Attachments"
		], true, jQuery.proxy(function(odata, response) {
			var data = {
				OpportunityAttachments: []
			};
			var length = response.data.Attachments.results.length;

Attachment 的创建

点击 + 图标,从本地选择一个文件上传:

SAP UI5 控件能显示上传的进度条:

触发后台的 CL_CRM_OPPORTUNITY_DPC_EXT~CREATE_STREAM 方法:

CREATE_STREAM 方法创建流(媒体资源)和相应的实体(媒体链接条目)。附加信息可以在Slug头中提供。创建媒体链接条目的编排是首先执行HTTP Post,其中只包含二进制数据。注意,不允许先发布条目本身,然后再发布相关的媒体资源。基于Slug头,开发人员可以向服务器传递额外的信息,例如,服务器可用于存储二进制文件(媒体资源)和创建实体(媒体链接条目)创建的框架。新创建的实体(媒体链接条目)在HTTP响应中发送回使用者,可以使用适当的数据更新该响应。更新后的条目将在HTTP Put中发送到SAP NetWeaver Gateway系统,以完成创建媒体资源/媒体链接条目的过程。

标签:handling,创建,附件,Fiori,Attachment,var,SAP
来源: https://www.cnblogs.com/sap-jerry/p/16392835.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有