1.场景介绍
2.准备工作
要让JDBC adapter能够正常工作,必须保证对应的JDBC Driver已经被正确的部署了,关于如何部署可以参考SDN上的一篇文章:http://www.sdn.sap.com/irj/scn/index?rid=/library/uuid/00b4a020-4ae6-2c10-5a95-fed4ad9a4b60
3.工作环境介绍
在PI安装完成后,通过PI的ABAP client的事务代码SXMB_IFR或者直接在浏览器输入http://<hostname>:5<system number>00/dir 就可以进入到下面的界面
其中我们会在SLD中完成各个系统信息,产品信息等的登记,在ESR中完成整个接口的DESIGN部分,然后在ID中完成CONFIGURATION部分,{zh1}在RWB中可以查看整个场景的工作情况。
4.{dy}步:在SLD中定义Technical system,Business System和SWCV(Software Components Version),SWCV将会用来在ESR中管理各个OBJECT,相当于ABAP中的Package的概念,而BUSINESS SYSTEM将会作为发送方或者接收方的ID.由于这一部分非常简单,所以在此略过。
在这一步的定义完成之后,登录到ESR,按照路径 新建–>Work Areas–>Software Components Version,然后选择import from SLD就可以将SLD中的信息导入到ESR,以本次SCENARIO为例,我们将会看到我们创建的三个Business System CEA_AOC,CEA_ECC,CEA_PI已经出现在了ESR中,他们分别代表发送方,接收方和PI本身:
在上图中,CEA_AOC代表Oracle系统,CEA_ECC代表SAP ECC系统,而CEA_PI代表PI本身,通常我们会按照发送方,PI,接收方建立三个系统,然后会在开发的时候分别将各自相关的OBJECT放到对应的系统下,这样会让整个SCENARIO的结构特别清晰,有时候在网上看到很多的DEMO都是将发送方,PI,接受方的OBJECT放在一起,显得特别混乱。
5.第二步:发送方的相关DESIGN. 这里会牵涉到四个对象,按照依存关系分别是Data Type–>Message Type –>Service Interface –>Action
其中在Data Types的定义中,我们需要定义一个数据结构,这个结构会对应到Oracle数据库表里面的字段,需要特别注意的是,通过JDBC从Oracle取出数据后形成的XML文件里面每一行数据是带有固定的tag<row>的,所以在这里也必须定义structure的名字为row,如下图所示。否则的话也许你已经取到数据到PI了,{zh1}却发现怎么也传不到RFC的参数里面去。这个问题曾经困扰了我很久,测试的时候JDBC取数据一切正常可是RFC就是得不到数据,{zh1}才发现有这里的一个原因。
然后我们可以基于这个data type定义一个Message Type
以这个message type为基础,再定义一个Service Interface。
{zh1}定义一个action
到此为止发送方的定义完成。
6.第三步:定义接收方的信息
由于这次的接收方是通过RFC传递消息的,所以定义会比较简单,只需要从SAP导入RFC interface然后定义一个对应的ACTION就可以了。
导入RFC
再定义一个ACTION
到此接收方定义完毕
7.第四步:定义发送方和接收方的数据在PI上的MAPPING 转换.
先来定义Message Mapping,也就是如何将发送方XML文件转换成接收方XML文件的字段级别的转换规则,这里就会用到前面定义的发送MESSAGE TYPE和接收方的RFC以及各自对应的数据结构
最下面的编辑框就是SAP自带的图形化MAPPING工具,提供了非常多的FUNCTION来做MAPPING。如果不能满足实际要求的话,也可以自己开发JAVA程序或者XSLT以及ABAP class。这里的MAPPING完成后,可以点击上面的TEST tab page进行测试,很方便。
接下来再来创建一个OPERATION MAPING,这一步会将发送方的OUTBOUND interface和接收方的INBOUND Interface做MAPPING,本例中接收方的Inbound INTERFACE就是前面导入的RFC.
接下来我们就可以把我们之前做的所有这些定义做出一个整体的integration scenario,这个scenario也会在下一步的ID配置中用到。
其中左边的START ACTION是发送方的ACTION,右边的END ACTION是接收方的ACTION,双击两个ACTION中的连线就可以看到前面定义的MAPPING。
xx所有的OBJECT(分别在每一步完成)后我们就完成了在ESR上的工作。
8.第五步:登录到ID进行配置工作
按照路径 TOOLS–>Apply Module from ES Repository并输入我们在ESR创建的integration scenario名字,我们就可以创建一个Configuration Scenario:
在这一步主要需要完成两个TASK,{dy}是创建或者选择已经选择好的Business System并分别分配到发送方和接收方,如果是新建,点击新建按钮按照提示做下去即可,前提条件是已经在SLD定义了相应的BUSINESS SYSTEM。第二个是为发送方和接收方分别创建CommunicationChannel,这一步有一个前提条件那就是需要先在ESR创建Communication Channel Template,这两步按照提示都可以轻松完成,所以这里就忽略了,这一步完成之后我们就会看到:
接下来就是两个ADAPTER的详细配置,先看JDBC sender adatper:
JDBC CONNECTION TAB
对于上面的CONNECTION 参数,其格式是jdbc:oracle:thin:@<ip address>:<port number>:<service_name>, 对于不同的数据库来说会不一样。
JDBC PROCESSING TAB
这里的话要注意的是Document Name必须使用前面我们在发送方定义的Message Type Name,否则的话会导致MAPPING无法进行,数据无法传输到RFC.
再看RFC ADAPTER的配置
这一步也就是填一些SAP系统的登录信息,也非常简单。
对于各个ADAPTER的定义和参数设置,可以参考sap help:http://help.sap.com/saphelp_nw2004s/helpdata/en/0b/9a50465ccf84479e39a6d50c90fb3f/frameset.htm
xx所有的OBJECTS, 配置就完成了。
9.第六步:登录到RWB查看Communication Channel状态:
可直接输入下面的URL进行查看: http://<host name>:5<system number>00/mdt/channelmonitorservlet
发送方COMMUNICATION CHANNEL:
接收方COMMUNICATION CHANNEL:
9.双击生成的MESSAAGE ID可以看到进一步的详细信息,同时登录到PI的ABAP client通过事务代码SXI_MONITOR也可以看到关于每个message的详细信息。
非常详细,赞!