`
shz2008bj
  • 浏览: 488615 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

RFC Sender to JDBC receiver scenario中值得注意的三个问题

 
阅读更多
转自:http://scnblogs.techweb.com.cn/dario/archives/117.html

初看起来这个场景和之前展示过的JDBC2RFC场景差不多,刚好倒过来了,其实在配置方面有很大的不同,这里就在整个开发过程中需要特别注意的地方总结一下,但是不再对全部细节按照先后顺序进行描述,因为其他部分都比较简单,是在任何一个场景都会有的重复性操作.

整个场景是从ECC系统通过PI向ORACLE ERP数据表写数据,我觉得主要的关注点有下面三个地方:

1.配置RFC sender Communication Channel

关于这个问题网上其实有不少的内容可以找到,但是我还没有发现有一个比较全面的介绍,很多东西相信大家如果是第一次做的话也会看的云里雾里,所以还是在这里综合一下这些内容,同时也加上了自己的一些理解,下面是RFC SENDER CHANNEL的截图。






这里的Application Server(Gateway) 和Application Server Service(Gateway)一定是和PI连接的那个ECC系统的Gateway,而不是PI本身的Gateway,这两个参数值可以在ECC的事务代码SMGW里看到。在我们登录ECC系统之后,按照路径SMGW–>Goto–>Parameter–>Display, 然后找到参数gateway hostname和gateway service的值即可。

对于另外一个参数Program ID,同样也会令初学者困扰,因为如果我们在ECC上建立一个TCP/IP连接指向PI时,如果选择了Registered Server Program,并且Gateway Host和Gateway service参数填的都是PI系统的参数值的话,这个Program ID是必须要在PI J2EE Admin工具上的Jco RFC Provider那里注册的,否则就会报错。例如:





(可以通过http://<host>:5<system no>00/webdynpro/dispatcher/sap.com/tc~lm~itsam~ui~mainframe~wd/FloorPlanApp?applicationID=com.sap.itsam.cfg.java.jco&isLocal=true查看Jco RFC provider)

但是在我们这里配置这个Program ID的时候,是不需要去注册的,因为当我们在PI的Integration Builder激活这个communication channel之后,在ECC系统上使用事务代码SMGW,按照路径 Goto–> Logged on clients, 就可以看到这个Program ID 已经出现在了 TP name里面:





这里要注意的是,这个TP对应的那个LU(logical unit)就是PI系统的主机名。当这条记录出现在这里的时候,就证明PI和ECC已经建立了一个TCP/IP连接。

接下来我们就只需要在事务代码SM59中去建立一个RFC Destination指向这个连接。





注意,这个Program ID要和COMMUNICATION CHANNEL中的完全一致包括大小写,同时这里的Gateway Host仍然还是要填写E CC的,其实很简单,记住一条准则,就是所有的这些地方的Gateway Host都要填与PI相连的那个业务系统的。

最后在程序中使用这个RFC Destination:

CALL FUNCTION ‘ZTEST’
IN BACKGROUND TASK
DESTINATION ‘SAP2ORACLE_AP’
TABLES
pt_oracle_ap          = GT_TABLE[]
EXCEPTIONS
system_failure        = 1
communication_failure = 2
OTHERS = 3.


IF sy-subrc <> 0.
MESSAGE e281.
ELSE.

COMMIT WORK.  “触发RFC


ENDIF.

由于是异步的RFC发送,所以在这里应该使用backgroud task 或者background unit方式然后再用CMOOIT WORK触发,如果直接调用会报no_mapping_program_found之类的错误(但是整个场景还是会成功),同时由于这个原因我们也不能直接在SE37里直接测试,在SE37的测试页面只能测试同步的情况。

2. 如果我们在JDBC Receiver channel中的Message Protocol参数选择了“XML SQL Format”,就要求我们在设计DATA TYPE的时候必须遵循一定的格式,详细的内容分可以参考SAP帮助(http://help.sap.com/saphelp_nw2004s/helpdata/en/0b/9a50465ccf84479e39a6d50c90fb3f/frameset.htm),这里给出一个实例:

例如对于一个INSERT一条新的记录到数据库表的操作来讲,标准的格式是:

<root>

<StatementName>

<dbTableName action=”INSERT”>

<table>realDbTableName</table>

<access>

<col1>val1</col1>

<col2>val2</col2>

</access>

</dbTableName>

</StatementName>

</root>

实际中的一个例子如下图:







root和StatementName是可以赋任意的值的,这里就给了ZDT_AP_RCV_001和Oracle_AP,只是便于理解没有其他的含义。但是在CUX_SAP2AP_INTERFACE那个位置就只能填需要被更新的表名字(在这个例子中CUX_SAP2AP_INTERFACE就是表名字)。而且必须带有属性action和元素table,action在MAPPING的时候需要被赋予例如INSERT或者UPDATE之类的SQL命令,而table则需要被赋予需要更新的表名字(这里有两个地方都可以填table名字,后一个主要是为了考虑table name中如果含有XML非法字符的时候用的,不是必需的),access下面则包含了所有的表结构字段。这些格式都是固定的,不能像我们之前那样可以任意定义DATA TYPE.

3.数据库更新中的日期格式问题。

这个问题在JDBC的场景中碰到的几率一般都很高,之前的JDBC SENDER场景就需要将外部数据库的日期格式转换成SAP的格式,而这里呢也需要从SAP转换成ORACLE,DB2的格式,不过这里的问题和解决办法主要只是针对oracle。对于DB2我不是很了解,也没有测试过。

在这个场景中,最开始的几次测试中总是出现ORA-01861: literal does not match format ,ORA-01840: input value not long enough for date之类的数据格式错误,为了解决问题最后就到处搜索,然后就找到了SDN上的一个blog: DATE/TIME datatypes and Oracle Database 可以解决这个格式问题,所以在这里转载一下。

不过略微需要注意的是,SAP的数据格式到了PI上做MAPPING的时候就已经是YYYY-MM-DD了,不再是YYYYMMDD。
  • 大小: 38.9 KB
  • 大小: 59.6 KB
  • 大小: 36.8 KB
  • 大小: 52.8 KB
  • 大小: 37.8 KB
分享到:
评论

相关推荐

    SAP PI RFC-to-Web Service Scenario

    SAP PI RFC-to-Web Service Scenario 在本文档中,我们将介绍如何使用SAP PI实现RFC-to-Web Service场景的同步调用。该场景中,我们将使用自定义的RFC客户端应用程序在SAP R/3系统中调用免费的Web服务,该Web服务...

    RFC中文文档大全.zip_RFC中文文档_RFC开发文档_rfc 中文_rfc1155中文文档_rfc文档中文版

    标题中的"RFC中文文档大全.zip"表明这是一份包含了大量RFC文档中文版的压缩文件,主要面向需要理解和应用RFC标准的IT专业人士。RFC,全称为Request for Comments,是互联网工程任务组(IETF)发布的一种技术文档,...

    RFC中文文档-txt

    RFC621 “注意圣诞节的时候要把长袜挂在烟囱下面” RFC628 更深的数据语言的设计观念 RFC634 最近的网络图 RFC637 SU-DSL网络地址的更改 RFC677 双重数据库的维护 RFC692 对于IMP/HOST 协议的改动的注释 (RFCS 687 ...

    RFC中文文档全集【RFC1-3093】

    "RFC中文文档全集【RFC1-3093】" 这个标题表明我们拥有的是一系列关于RFC(Request for Comments)的中文翻译文档,覆盖了从RFC1到RFC3093的范围。RFC是互联网工程任务组(IETF)发布的一种标准文档,用于记录和分享...

    rfc 中文 rfc 中文 全

    rfc 中文 全rfc 中文 全rfc 中文 全rfc 中文 全rfc 中文 全rfc 中文 全rfc 中文 全rfc 中文 全rfc 中文 全

    RFC中文完整版

    RFC文档中文翻译计划完整打包 组织:中国互动出版网(http://www.china-pub.com/) E-mail:ouyang@china-pub.com 网页完整版: http://www.net130.com/netbass/RFCs/1to100.htm ...

    rfc中文翻译版本

    - `rfc1166.txt`、`rfc2459.txt`、`rfc2021.txt`、`rfc1131.txt`、`rfc1142.txt`、`rfc2002.txt`、`rfc2495.txt`、`rfc2078.txt`:这些都是具体的RFC文档,它们包含了各种互联网协议和技术的详细信息。 **各RFC文档...

    RFC大全--中文翻译

    RFC是互联网标准过程中的一个重要部分,用来记录和发布互联网相关的技术规范、协议、建议和信息。中文翻译使得非英语母语的读者能更容易理解和应用这些标准。 描述中提到“算是很全的RFC了”,这暗示该压缩包可能...

    RFC文档中文翻译完整版(RFC1 ~~ RFC3093)

    1. **RFC的起源与作用**:RFC始于1969年,最初用于记录ARPANET项目中的问题和解决方案,后来成为IETF发布互联网标准和草案的主要方式。每个RFC文档都记录了一种或多种技术规范,对理解和实现相关协议至关重要。 2. ...

    RFC8649 中文翻译 中文RFC RFC文档 RFC翻译 RFC中文版

    RFC8649 中文翻译 中文RFC RFC文档 RFC翻译 RFC中文版中英文对照翻译,非常方便。

    中文RFC文档_rfc1027_rfc中文_中文RFC文档_

    中文RFC文档

    RFC中文完整版 相当全~

    1. **TCP/IP协议栈**:RFC中最核心的部分之一是TCP/IP协议族,包括IP(Internet Protocol)、TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)等协议。它们定义了数据在网络中的传输方式,确保...

    中文RFC文档.zip

    RFC621 “注意圣诞节的时候要把长袜挂在烟囱下面” RFC628 更深的数据语言的设计观念 RFC634 最近的网络图 RFC637 SU-DSL网络地址的更改 RFC677 双重数据库的维护 RFC692 对于IMP/HOST 协议的改动的注释 (RFCS ...

    rfc3455.rar_IMS_RFC34_RFC3455_rfc_rfc 34

    标题中的"rfc3455.rar"是一个压缩文件,其中包含了关于IMS(IP Multimedia Subsystem,IP多媒体子系统)的文档,特别是RFC3455的中文版本。RFC(Request for Comments)是互联网工程任务组(IETF)发布的一种技术...

    中文 RFC 文档大全

    3. **故障排查**:当遇到网络问题时,查阅RFC 可以帮助找出可能的问题所在,并提供解决方案。 4. **学习新技术**:新发布的RFC 可能包含了最新的技术和趋势,了解它们可以帮助你保持技术的前瞻性。 总的来说,这个...

    rfc中文文档目录,包含部分翻译

    RFC621 “注意圣诞节的时候要把长袜挂在烟囱下面” RFC628 更深的数据语言的设计观念 RFC634 最近的网络图 RFC637 SU-DSL网络地址的更改 RFC677 双重数据库的维护 RFC692 对于IMP/HOST 协议的改动的注释 (RFCS ...

    最全RFC中文档

    RFC(Request for Comments)是互联网标准过程中的一个重要部分,由互联网工程任务组(IETF)发布,用于记录和传播互联网相关的技术规范、协议和建议。这份文档集合可能包含了从早期到最新的各种RFC文档,覆盖了...

    RFC中文完整版-china-pub-RFC文档中文翻译计划.zip

    RFC(Request for Comments)是互联网标准过程中的一个关键部分,用于记录和传播技术规范、协议、建议和方法。这个翻译计划可能是为了帮助中国或其他中文使用者更好地理解和应用这些重要文档。 **RFC文档详解** ...

    RFC官方文档中文版

    每个RFC编号代表一个具体的文档,例如"rfc1000"代表第1000号RFC文档。通过这个压缩包,用户可以获取到一系列RFC文档的中文翻译,涵盖从基础到高级的各种网络主题。 **涵盖的知识点** 1. **网络协议**: 如HTTP(超...

    6LoWPANs-RFC中文手册(RFC6282、RFC6568、 RFC4944).rar

    本压缩包包含关于6LoWPAN的三个重要RFC(Request for Comments)文档的中文手册,分别是RFC6282、RFC6568和RFC4944。 **RFC6282:IPv6 over IEEE 802.15.4网络的压缩格式** 该文档定义了如何在802.15.4无线网络上...

Global site tag (gtag.js) - Google Analytics