rfc方式的集成 sap_关于SAP与其它系统集成SM59设置目标系统的问题

转自:http://forums.sdn.sap.com/thread.jspa?threadID=1843497&tstart=0安全

问:网络

目前在作SAP与SIEBEL的集成. SIEBEL自己提供了一些标准的集成方案,它的connector文档中给出了建立逻辑系统,建立合做伙伴参数等等步骤.

在SM59建立目标系统时遇到了问题.SM59建立TCP/IP链接时,Actived type建议选择Registered server program, 而后输入已经注册好的program id. 关于如何注册PROGRAM ID的问题,资料上语焉不详.费了N多力气查询,终于找到rfcexec这个命令.请BASIS协助进行注册后进行验证测试.使用BD10向目标系统也就 是SIEBEL系统发送物料.起初每发送一次,RFCEXEC命令启动的进程(这儿我不特别明白是否是进程)就会被杀死一次.后来在SIEBEL端设置了 SAP的CODEPAGE,终于再也不每次发送物料都死了,但每过一段时间(半天或者一天)仍然会死掉,SM59测试链接就会失败,提示PROGRAM ID未注册之类的.

由于常常断掉链接,如今我就以为这种方式不够安全,稳定.请问咱们采起的这种方式正确吗?有没有更好的方式?架构

答:jsp

你的问题很好,我想不少作BASIS的人对SM59里PROGRAM ID都有理解上的疑问。你刚挖出来的五六

年的老帖子说的状况和你问的问题不同,他说的是SAP如何调用外部程序,而你在作SIEBEL集成

时用的是“Registered Server Program”。若是你选择的方法是SIEBEL与SAP集成的文档里要求

的,我能够把我对这个问题的理解与你探讨,想来对全部作BASIS的人都有好处。

看这个问题,首先要有清晰的Client/Server概念。

先别拍砖,不少人自觉得知道这基本的计算机概念,但和我讨论完以后,90%的人都说本身原来的

理解浅了。个人理解里每一个概念都有几个关键的要素:

Client = 一个程序,到远程主机上的一个TCP端口调用一个服务

要素 = (1)程序,(2)本地主机IP地址,(3)远程主机IP地址,(4)端口号,或服务名

Server = 一个程序,在本地主机的一个TCP端口提供一种服务

要素 = (1)程序,(2)本地主机IP地址,(3)正在运行,(4)监听某端口来提供服务

Client是源,Server是目标,链接的方向是Client --> Server

有了这些概念,还须要有对应用程序的理解,以及对查找进程(ps command in UNIX),查找网络

链接(netstat -a)等工具的使用,来找齐这些要素,那么你就能够解决绝大多数在应用程序层的

系统互连的问题,好比如何开防火墙等。

在你的SAP与SIEBLE系统集成中(对不起,我不知道具体怎么作SIEBEL的集成,但SAP与其余不少

东西的集成我都作过,基本原理类似),有两个方向的链接需求,一个是SIEBEL->SAP,另外一个是

SAP->SIEBEL。

SIEBEL->SAP的链接,是属于进入SAP的链接,与用户登陆过程类似。在这一案例中,SAP的

Dispatcher是Server程序,它在SAP主机上的32xx端口提供sapdp??的服务。而SIEBEL端的Client

程序是什么就很差说了,一般状况下SIEBEL,SAS等SAP外部程序使用SAP提供的RFCSDK或JCO来SAP

主机链接,链接时须要知道SAP主机的主机名或IP地址,以及端口号。这些都是要在Client端做为

输入参数或设定参数来提供的。若是试图调用SAP Message Server来实现Load Balance,那么在

client端一般还要在etc/service文件中设sapmsSID,不然Client程序不知道到SAP主机上找什么

端口来登陆SAP。与下面要解释的相比,SAP用户登陆的过程是相对简单的。

SAP->SIEBEL的链接,是SAP主动往外去的链接,在Client/Server架构里,如今SAP是扮演Client

的角色,SM59是负责记录这种Outbound设定的。SM59里有不少不一样的链接类型,好比类型3,是连

接远程SAP系统的,那么就须要你提供做为SAP Client调用系统时的各类参数。好比类型H,是连

接外部HTTP服务的,那么就须要URL。另外就是类型T,是经过TCP层面调用外部服务。

类型T里又有不一样类型的Program设定,我如今只说什么是Registered Program:

当SAP须要调用外部服务时,按Client/Server的概念,也应该知道远程服务所在的主机,TCP端

口,以及登陆信息等。但由于外部服务千姿百态,SAP一般不使用Client/Server的方法,而使用

CPIC的方法,这就是Registered Server Program的由来。具体的链接过程是:(以我假想的

SIEBEL为例)

1. SIEBEL使用SAP提供的RFCSDK,或JCO(Java Connector),编写了一个链接SAP的程序/程序包。

这个程序/程序包不只能够扮演Client的角色来链接远程的SAP系统,同时也扮演Server的角色对

SAP提供SIEBEL的调用服务。在不少非SAP的软件包中,管这程序/程序包叫RFC Server。

2. SIEBEL经过该程序登陆远程SAP系统(须要提供SAP主机名,系统号来找端口,以及用户名,密

码等)。登陆成功后在SAP的Gateway服务表里就有了这么一个链接,能够经过SMGW来查看。

3. 而后SIEBEL进来的这个RFC会调用SAP的系统功能来创建一个“Registered Server Program

ID”,这ID如何命名,一般是调用者在提供SAP用户名,密码等参数时同时提供的。SAP的系统功

能,会把这一ID做为标签贴在Gateway服务表里的这一链接上,那么SIEBEL来的这一TCP的通道就

在SAP里有了个名字。

4. SM59里定义一个RFC Destination,咱们姑且把它叫SIEBEL-System,就须要你按你楼上描述的

方法,把这PROGRAM_ID放进去。若是你的SAP系统有多个App Server,在SM59里的Gateway Host就

不能空了,由于SIEBEL登陆进来时只会链接一个App Server,那么全部SAP App Server上须要调

用SIEBEL服务的程序,都会使用这一SIEBEL-System的链接。若是你的Gateway Host为空,他们就

会在本地Gateway找,就常常会找不到。

5. 如今SAP的程序就能够经过CALL Function At Destination SIEBEL-System的方式来调用

SIEBEL的服务了。但这里BASIS常常忽略的事情是,若是SIEBEL端的RFC Server程序停掉了,这一

TCP的通道也就断了,那么用SM59的这个RFC Destination也就不能链接了。若是你须要再链接,

则要到SIEBEL那么从新启动RFC Server,登陆到SAP里来。

在这一过程当中,我见到大多数人的错误是不理解Client端设定的重要性,也就是SIEBEL端的RFC

Server的设定。其实在SIEBEL那边的设定对否,程序是否运行,决定了SAP与SIEBEL的链接是否可

行/可靠。

但愿这对你有帮助。这一SAP Outbound connection的模型,一样适用于SAP ABAP系统与Java系统

的链接,适用于SAP XI/PI,BI Java,Portal,BusinessObject等SAP内部的链接。你们是一个道

理,若是你能真正吃透它,那就是SAP系统互连的大师了,固然我这里指BASIS层面,不是指SAP应

用层面,好比CRM中间件,SCM CIF,BI Extractor等。工具

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值