以SAPCRMFiori应用为例。附件处理有两个级别,在FioriUI上显示附件(读取操作),以及通过FioriUI创建附件(写入操作)。附件的读取如下图所示。单击任何附件超链接可自动打开浏览器下载窗口。进入OData对应的实现系统,如AG3后台,交易代码SEGW,打开CRM_OPPORTUNITYOData项目,创建一个名为Opportunity_Attachments的关联,指向一个名为OpportunityAttachment的DependentEntity。Opportunity和OpportunityAttachment模型之间的关系是0:n,即一个Opportunity不允许attachment,或者允许多个attachment。Attachment模型字段:我们可以在AG3中设置一个断点来调试附件的读取请求:FioriUIpassingtheattachment通过SAPUI5代码读取实例信息到后台ABAP:最后调用CL_CRM_OPPORTUNITY_DPC_EXT~GET_STREAM方法从AG3/001系统读取附件数据:Fiori前台即S3.view.xml,使用UploadCollection控件显示附件。当点击Attachment选项卡时,会触发attachmentsTabSelected方法:该方法中手动调用ODataAPI发起OData请求,从后台读取数据:varinfo=this.getView().byId('info');varheaderGuid=info.getModel('json').getData().Guid;varoModel=this.oModel;varsPath=this.sPath;//获取列表以设置帖子url参数varthat=this.getView();oModel.read(sPath,null,["$expand=Attachments"],true,jQuery.proxy(function(odata,response){vardata={OpportunityAttachments:[]};varlength=response.data.Attachments.results复制代码.length;附件创建点击+图标从本地选择文件上传:SAPUI5控件可以显示上传的进度条:后台触发CL_CRM_OPPORTUNITY_DPC_EXT~CREATE_STREAM方法:CREATE_STREAM方法创建流(媒体资源)和相应的实体(medialinkentry)。附加信息可以在Slugheader中提供。创建medialinkentry的编排是首先执行HTTPPost,它只包含二进制数据。注意,不允许首先发布条目本身,然后是相关的媒体资源。基于Slug标头,开发人员可以将附加信息传递给服务器,例如,服务器可用于存储二进制文件(媒体资源)和创建的框架由创建实体(媒体链接条目)。新创建的实体(媒体链接条目)在HTTP响应中发回使用或者,可以使用适当的数据更新响应。更新的条目将以HTTPPut的形式发送到SAPNetWeaverGateway系统,以完成创建媒体资源/媒体链接条目的过程。
