SAP JCO NCO 进出工作方式详解

本文详细解析了SAP RFC接口程序中server模式的实现方式,包括如何使用JCO和NCO库建立长连接,以及如何让SAP服务器主动推送数据给外围程序。此外,文章还介绍了参数文件的配置和外围程序的编写方法。

SAP官网接口库地址: service.sap.com/connectors,SAP为我们提供了JAVA平台程序的连接库SAP JCO3,由此打通所有JAVA程序同SAP服务器的数据传递:

SAP也为我们提供了.net平台程序的连接库SAP NCO,由此打通WINDOWS平台程序同SAP服务器的数据传递:

SAP用JCO和NCO的类库统一了全部的JAVA栈和.net栈。基于JCO和NCO的RFC接口程序同外围系统连接,程序实现还有一进一出两种方式。

第一种(一进): 我们常用的,SAP服务器作为服务器端server,外围接口程序作为客户端client。     client端发起请求,调用SAP服务器中的RFC函数,实现所需要的操作或查询。这种方式是由客户端发起的,源头在客户端产生,调用频率也是有客户端控制。 这种方式在本次项目中叫做“请求响应”模式。  即客户端发起请求,服务器响应。客户端程序使用该方式,需要在客户端填入登陆SAP系统的用户,密码。 然后客户端程序自动登入SAP服务器,调用RFC函数。 该方式的代码网上很多。


第二种(一出):  网上资料较少,有一些场景是SAP服务器主动发起请求,比如做一个主数据在SAP中变更后,马上需要把这个信息通知同步给外围系统。如果用第一种的方法,也可以实现,但是需要客户端不停的轮询服务器,如果轮询的次数太多,我们可能担心系统性能,如果轮询次数不多,可能又不能马上做到服务器同外围系统的主数据变更信息同步。 在这种场景,需要SAP服务器作为客户端client, 外围程序作为服务器端server.   为什么是server模式这个名称,就是因为外围程序需要一直运行,等待接受SAP服务器传入的请求 ,外围程序就像服务器那样一直在工作。 这种模式在本次项目(2014年潍柴重庆汽车项目-SAP对接IBM总线-斯欧科技的ESB产品)中也称为“订约发布”模式。

SAP基于JCO和NCO的RFC接口程序,是怎么来实现这种方式的呢?
实际上,SAP并不要求外围程序写一个正真的网络服务器,而是,首先使用client方式,长连接到SAP服务器, 然后基于这个长连接,RFC程序推数据给外围程序。让我们来看看这种方式外围程序写法的参数文件:
从参数文件中可以看到, 外围程序作为server端,首先会使用A01.JCO.CLIENT中的参数部分,去做一个同SAP服务器的长连接,这个同第一种方式一致。连接成功后,可以在SAP系统中用SMGW事务代码查看:
A01.JCO.SERVER参数部分才是SAP服务器推数据给外围程序的需要使用参数,在sm59中配置好“SAPJCO”,SAP ABAP程序中是这样使用的:
而使用前,还要建一个只有数据申明的空FUNCTION "ZMM_IF_FM016".外围服务器程序就等SAP通过这个空的FUNCTION "ZMM_IF_FM016"推数据过来。TAB1,TAB2,TAB3是SAP给外围程序的数据, 外围程序处理后,还可以通过RETURN返回SAP服务器信息。
SAP的JCO和NCO库,都可以在 Connectors 中下载到,SAP提供了详细的说明,和代码例子。

本文只是主要讲清第二种方式, 开发时理解SAP 接口中外围程序作server方式,不同于正真的网络服务器SOCKET编程,避免进入不必要的误区,博主在2002年第一次接触RFC就准备用SOCKET来连接,后来才发现完全不是一回事情。

--------以上2022.4.21更新--------------



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值