云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

谷歌云_卸载mysql数据库_超低折扣

小七 141 0

概述

在业务场景中,一组用户向一个mail-id发送附件,每个邮件可以发送多个附件。因此,在这里,我们需要找到一种方法,从邮件中提取所有带有原始名称的附件,并将其存储在某个文件夹中。

使用发件人邮件适配器,我们读取带有附件的邮件。

将附件存储到特定的sap应用程序目录,大数据平台,我们使用接收器文件适配器和一个自定义java适配器模块。

注意:接收器文件适配器只能存储第一个附件,所以,我们为此频道创建一个自定义适配器模块,该模块将存储多个附件到文件夹。

发送方/接收方通信频道可从以下链接查阅:

SAP PI邮件附件到文件

前提条件:

创建自定义java适配器模块的前提条件表格SAP PI 7.11如下:

SAP NetWeaver Developer Studio 7.1Java运行时环境1.6(Jre 1.6)模块开发所需的SAP库(或jar)文件sap.aii.af公司.库mod.jar:/分机/com.sap.aii公司.af.lib/库com~tc~登录~java~impl.jar文件:/系统sap.aii.af公司.svc公司_api.jar文件:/服务/com.sap.aii公司.af.svc/库sap.aii.af公司.cpa.svc\u api.jar:/服务/com.sap.aii公司.af.cpa.svc/库sap.aii.af公司.ifc/U api女士.ja r:/接口/com.sap.aii公司.af.ms.ifc/库通过以下步骤将上述jar文件包括在SAP Netweaver Developer Studio 7.1的库类路径中:导航到Windows→Preference→展开"Java"→选择"Build Path"→选择"Classpath Variables"→单击"New"创建"New Variable Entry"→输入"Name"作为"PI\u AF\u LIBS"→选择"Path"(jar位置上方)NwceTool公司这将有助于将EAR文件转换为SDA文件它使用JRE 1.6

Java适配器模块代码:

下面编写Java适配器模块代码,用外部模块输入变量'SapDirPath'获取SAP目录路径,并将原始文件名的数据文件保存到路径中:/****/包裹com.sap.adapter模块;导入java.rmi.RemoteException异常;导入javax.ejb.EJBException;导入javax.ejb.SessionBean;导入javax.ejb.SessionContext;导入javax.ejb.TimedObject;导入javax.ejb.Timer文件;导入com.sap.aii公司.af.lib.mp文件.模块.ModuleContext;导入com.sap.aii公司.af.lib.mp文件.模块.ModuleData;导入com.sap.aii公司.af.lib.mp文件.module.ModuleException模块异常;导入com.sap.aii公司.af.service.auditlog审计日志.审计;导入com.sap.engine.接口.messaging.api。消息;导入com.sap.engine.接口.messaging.api.MessageKey;导入com.sap.engine.接口.messaging.api.有效载荷;导入com.sap.engine.接口.messaging.api.auditlog.AuditLogStatus文件;导入java.io.File文件;导入java.io.FileOutputStream文件;导入java.util.Iterator;/***@作者用户**/公共类MAttachToDirBean实现SessionBean、TimedObject{/*(非Javadoc)*@见javax.ejb.SessionBean#ejbActivate()*/public void ejbActivate()引发EJBException,RemoteException{//TODO自动生成的方法存根}/*(非Javadoc)*@见javax.ejb.SessionBean#ejbPassivate()*/public void ejbPassivate()引发EJBException,RemoteException{//TODO自动生成的方法存根}/*(非Javadoc)*@见javax.ejb.SessionBean#ejbRemove()*/public void ejbRemove()引发EJBException,RemoteException{//TODO自动生成的方法存根}/*(非Javadoc)*@见javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)*/public void setSessionContext(SessionContext arg0)引发EJBException,远程异常{//TODO自动生成的方法存根}/*(非Javadoc)*@见javax.ejb.TimedObject#ejbTimeout(javax.ejb.Timer文件)*/public void ejbTimeout(计时器arg0){//TODO自动生成的方法存根}public void ejbCreate()抛出javax.ejb.CreateException异常{}私人会话上下文myContext;MessageKey amk=null;公共ModuleData进程(ModuleContext ModuleContext,ModuleData inputModuleData)抛出ModuleException{Object obj=null;消息消息=null;String SapDirPath=null;尝试{目标=inputModuleData.getPrincipalData输入模块数据();msg=(消息)对象;amk=新消息密钥(消息.getMessageId(),消息.获取消息方向());Audit.addAuditLogEntry(amk公司,AuditLogStatus.SUCCESS成功,"JAM MAttachToDir |自定义Java适配器模块(localejbs/MAttachToDir),用于将多个附件存储到目录");//获取用户输入作为"模块.键"来自通信信道的参数//输入-1:'SapDirPath'获取存储附件的文件夹路径SapDirPath=(字符串)moduleContext.getContextData("SapDirPath");Audit.addAuditLogEntry(amk公司,AuditLogStatus.SUCCESS成功,"JAM MAttachToDir |目录路径输入(SapDirPath)="+SapDirPath);//从源消息获取输入附件)迭代器itr=msg.getAttachmentator消息();而(itr.hasNext公司()){//手柄附件有效载荷=(有效载荷)itr.下一步();//获取附件名称字符串长度=有效负载.getContentType();//输出类似"application/octet stream;name=""fnam1.csv"扭矩=atchnm.replaceAll公司("\","");//将所有引号(即")替换为空白积分i1=最后索引("=") + 1;字符串atchmntNm=atchnm.子字符串(一),淘客返利app,4纳米长度());Audit.addAuditLogEntry(amk公司,AuditLogStatus.SUCCESS成功,"JAM MAttachToDir |附件为"+atchmntNm);//将文件写入目录字节[]inpbyt=有效负载.getContent();文件路径=新文件(SapDirPath+"/"+atchmntNm);FileOutputStream fos=新的FileOutputStream(路径);fos.写入(inpbyt公司);fos.冲洗();fos.关闭();Audit.addAuditLogEntry(amk公司,新零售企业应用中心,AuditLogStatus.SUCCESS成功,"JAM MAttachToDir |"+atchmntNm+"复制到文件夹"+SapDirPath);}}catch(异常e){ModuleException me=新的ModuleException(e);把我扔出去;}返回inputModuleData;}}

创建Java适配器模块的步骤:

使用NWCE工具将EAR文件转换为SDA文件的步骤: