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

对象存储_哪里注册域名便宜_排行榜

小七 141 0

SAP-PO服务器:7.4sp14

本文将逐步向您解释实现SOAP-to-RFC同步场景的清晰过程。

作者:Sajith P,SAP-PO顾问

本文将解释使用SAP-PI的SOAP-to-RFC通信场景。发送方使用SOAP适配器,接收方使用RFC适配器通过RFC更新sapecc中的记录。这里使用映射java类的用户定义函数(UDF)根据输入请求Id从数据库表中读取数据。如果记录在ECC中被联合,大数据入门,我们可以知道RFC发回的响应。

在本文档中,我试图从FLIGHT\u SAVE db table w.r.读取数据到输入请求id,并将此数据传递给RFC,大数据存储技术有哪些,以便在ECC中进行辛迪加。请求id值将作为输入传递到java映射UDF,它将从DB表中读取记录,并将这些数据发送到RFC。

java映射类将作为XML数据接收输入,并将其转换为object。基于此java程序将从DB表中获取数据,并将其转换为输出XML数据格式。JAXB Marshaller和Unmarshaller java类用于将XML转换为对象和将对象转换为XML。

SAP PO 7.4 SP13用于此示例。在这个场景中使用了oracledbserver11g。数据库表FLIGHT\保存,请求Id为主键,悠哉返利机器人,大数据网,其他字段包括航空公司Id、连接Id、航班日期、价格、货币、货币iso、飞机类型。SAP PO服务器中的JDBC自定义数据源连接到数据库。SAP ECC连接详细信息和RFC BAPI\ U FLIGHT\ U SAVEREPLICA

导入软件组件。在此软件组件下创建企业服务存储库对象。

创建名称空间-

创建文件夹–FLIGHT\u TEST.

导入RFC BAPI\u FLIGHT\u SAVEREPLICA

右键点击导入对象并导入RFC BAPI\u FLIGHT\u SAVEREPLICA.

请注意,RFC应在ECC中远程启用。

使用输入请求ID和Teset运行元素创建飞行请求数据类型。

请求消息类型:MT飞行请求

响应消息类型:BAPI飞行_保存副本。响应

请求报文类型:BAPI\航班\保存副本

响应报文类型:BAPI\ U航班_保存副本。响应

Java映射将执行以下任务

注意:使用JRE系统库中的jdk而不是JRE。

这将在提供的相应包下生成Java类。

请注意:由于我的NWDS 7.3 SP13不支持生成JAXB类,因此作为一种解决方法,我已经使用eclipsemars生成JAXB类,并将这些类复制粘贴到NWDS java项目文件夹

包中com.flight.mapping公司.jaxb;

导入输入流;

导入java.io.OutputStream输出流;

导入java.math.BigDecimal文件;

导入com.flight.marsheler公司.jaxb.JAXBMarshaler文件;

导入com.flight.marsheler公司.jaxb.jaxb编组程序;

进口com.flight.request请求.jaxb.FlightRequest文件;

导入com.flight.response公司.jaxb.BAPIFLIGHTSAVEREPLICA副本;

导入com.flight.response公司.jaxb.BAPISFLREP文件;

导入com.sap.aii公司.映射.api.AbstractTransformation;

导入com.sap.aii公司.mapping.api.StreamTransformationException异常;

导入com.sap.aii公司.映射.api.TransformationInput;

进口com.sap.aii公司.映射.api.TransformationOutput;

public class FlightJavaMapping extensed AbstractTransformation{

@SuppressWarnings("unchecked")

@Override

public void transform(TransformationInput TransformationInput,TransformationOutput TransformationOutput)throws StreamTransformationException{

try{

InputStream InputStream=转换输入.getInputPayload().getInputStream();

OutputStream OutputStream=转换输出.getOutputPayload().getOutputStream();

FlightRequest FlightRequest=new FlightRequest();

//从输入XML文件

jaxbunmarcherjaxbunmarcher=new jaxbunmarcher(inputstream,FlightRequest)读取输入;

飞行请求=jaxbunmarshaller.getUnmarshalledObject();

字符串需求=flightRequest.getRequestID();

字符串testRun=flightRequest.getTestRun运行();

ReadDataFromDB ReadDataFromDB=new ReadDataFromDB();

FlightSaveDto FlightSaveDto=new FlightSaveDto();

FlightSaveDto=readDataFromDB.getDataFromDB(需求ID);

//Set output XML

BAPIFLIGHTSAVEREPLICA BAPIFLIGHTSAVEREPLICA=new BAPIFLIGHTSAVEREPLICA();

BAPISFLREP BAPISFLREP=new BAPISFLREP();

bapisflrep.setAIRLINEID(flightSaveDto.getAIRLINEID());

BAPISFLEP.setCONNECTID(flightSaveDto.getCONNECTID文件());

BAPISFREP.setFLIGHTDATE文件(flightSaveDto.getFLIGHTDATE文件());

BAPISFREP.setPRICE公司(新BigDecimal(飞行保存到.getPRICE()));

BAPISFLEP.设置货币(飞行保存到.getCURR());

BAPISFLEP.setCURRISO公司(飞行保存到.getCURR\u ISO());

bapisflrep.setPLANETYPE(flightSaveDto.getPLANETYPE());

bapiflightsavereplica.setFLIGHTDATA文件(bapisflrep);

bapifrightsaveplica.setTESTRUN文件(测试运行);

JAXBMarshaler JAXBMarshaler=new JAXBMarshaler();

字符串输出xmlstring=jaxbMarshaler.marshalJAXBToXMLString(bapiflightsavereplica);

outputstream.write文件(outPutXMLString.getBytes输出());

}捕获(异常){

getTrace().addDebugMessage(异常.getMessage());

抛出新的StreamTransformationException(异常.toString());

}

}

}

导出为jar时,请检查以下内容。

导入存档ESR对象中的Java映射jar文件

选择FlightJavaMapping.class类文件

在请求中创建消息映射ESR对象

,选择映射程序类型为Java类,使用导入的存档ESR对象

在响应中使用MM\U Flight\U Request\U Res消息映射

需要创建和配置以下项目集成目录中该接口的所有ESR对象

业务组件请求端

通信通道发送方:适配器类型SOAP

接收方通信通道:适配器类型RFC

业务组件配置

接收方

发送方

集成配置

入站处理

接收方接口

出站处理

获取PI接口的WSDL链接创建

文档的下一部分将解释,如何在BPM自动化活动中实现此接口

谢谢

Sajith P

SAP PO(PI,大数据下,BPM,BRM)顾问