写点什么

SAP Fiori 的附件处理 (Attachment handling)

作者:Jerry Wang
  • 2022 年 7 月 17 日
  • 本文字数:1041 字

    阅读完需:约 3 分钟

SAP Fiori 的附件处理(Attachment handling)

以 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 系统,以完成创建媒体资源/媒体链接条目的过程。

发布于: 刚刚阅读数: 3
用户头像

Jerry Wang

关注

🏆InfoQ写作平台-签约作者🏆 2017.12.03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。工作中使用 ABAP, Java, JavaScript 和 TypeScript 进行开发。

评论

发布
暂无评论
SAP Fiori 的附件处理(Attachment handling)_SAP_Jerry Wang_InfoQ写作社区