SAP接口程序方式说明(品尝ABAP的味道)

SAP为我们提供了JAVA平台程序的连接库SAP JCO3,由此打通所有JAVA程序同SAP服务器的数据传递:

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

SAP同外围系统连接,程序实现有两种方式。

第一种: 我们常用的,SAP服务器作为服务器端server,外围接口程序作为客户端client。     client端发起请求,调用SAP服务器中的RFC函数,实现所需要的操作或查询。

这种方式是由客户端发起的,源头在客户端产生,调用频率也是有客户端控制。 这种方式在本次项目中叫做“请求响应”模式。  即客户端发起请求,服务器响应。

客户端程序使用该方式,需要在客户端填入登陆SAP系统的用户,密码。 然后客户端程序自动登入SAP服务器,调用RFC函数。 该方式的代码网上很多。

第二种方式:  网上资料少,有一些场景是SAP服务器主动发起请求,比如做一个收货操作后,马上需要把这个信息通知外围系统。   而收货操作本身,我们不知道用户什么时

候去做这件事情。( 如果用第一种的方法,也可以实现,但是需要客户端不停的轮询服务器,如果轮询的次数太多,我们可能担心系统性能,如果轮询次数不多,可能又不能

马上做到服务器同外围系统的收货操作信息同步) 这个时候,需要SAP服务器作为客户端client, 外围程序作为服务器端server.   为什么这么说,  因为外围程序需要一直运行,

等待SAP服务器的请求 ,外围程序就像服务器那样一直工作。 这种模式在本次项目中称为“订约发布”模式。

SAP的中间件接口程序,是怎么来实现这中方式的呢?

实际上,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库,都可以在http://service.sap.com/connectors 中下载到,SAP提供了详细的说明,和代码例子。

本文只是主要讲清第二种方式, 开发时理解SAP 接口中外围程序作server方式,不同于正真的网络服务器,避免进入不必要的误区。







时间: 2024-10-19 05:53:03

SAP接口程序方式说明(品尝ABAP的味道)的相关文章

SAP接口程序方式说明

SAP为我们提供了JAVA平台程序的连接库SAP JCO3,由此打通所有JAVA程序同SAP服务器的数据传递: SAP也为我们提供了.net平台程序的连接库SAP NCO,由此打通WINDOWS平台程序同SAP服务器的数据传递: SAP同外围系统连接,程序实现有两种方式. 第一种: 我们常用的,SAP服务器作为服务器端server,外围接口程序作为客户端client. client端发起请求,调用SAP服务器中的RFC函数,实现所需要的操作或查询. 这种方式是由客户端发起的,源头在客户端产生,调

[转载]大道至简!!!从SAP HANA作为SAP加速器的方式,看ERP on HANA的春天

I AM A ABAPER! 科技的进步,一定会使一些东西变得越来越精简! 大道至简!!! 文章很好!!!!!!!!!!! -------------------------------------------------------------------------------------------------------------------------- 转自:http://blog.sina.com.cn/s/blog_9154db5301019udr.html%20 说到HANA

django 注册、登录及第三方接口程序(4):扩展邮箱注册,登录,微博登录

1.邮箱注册 这里需要扩展User,两种解决办法,1,注册时将email字段内容赋给username,这种瞒天过海型的,另一种就是扩展user,这里介绍django1.5的扩展方法. 1.setting配置 AUTH_USER_MODEL = 'manager.MyUser' # 扩展表的位置,appname.Model, MyUser是manager app下models中的用户类 AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends

以调用接口的方式将文件上传至Web服务器

前台代码: <form id="form1" action="http://www.abc.com/data/UploadFile.aspx" method="post" enctype="multipart/form-data" > <input type="file" name="F" style="width:160px;" /> <

支付宝接口程序、文档及解读(ASP.NET)

支付宝接口程序.文档及解读(ASP.NET) 最近需要为网站加入支付宝的充值接口,而目前关于支付宝接口开发的资料比较杂乱,这里就我此次开发所用到的资料进行汇总整理,希望能够帮助需要的朋友. 开发步骤: 1. 确定签约类型 支付宝的接口有多种类型,所以首先你要确定签约的合同类型,确定使用的是哪个接口,不至于走错了道道. 此步骤中,可以参考文档:支付宝接口操作教程 2. 下载开发文档 如果是即时到账的开发,请先下载并仔细阅读:标准快速付款接口文档 文档中比较详细的介绍了逻辑流程,时序图以及枚举定义等

创建线程的第二种方式------实现Runnable接口的方式

package cn.itcast.demo16.Demo07.Runnable; /** * @author newcityman * @date 2019/7/22 - 23:17 */public class RunnableImpl implements Runnable { @Override public void run() { for (int i = 0; i <20 ; i++) { System.out.println(Thread.currentThread().getN

.NET中的三种接口实现方式

摘自:http://www.cnblogs.com/zhangronghua/archive/2009/11/25/1610713.html 一般来说.NET提供了三种不同的接口实现方式,分别为隐式接口实现.显式接口实现.混合式接口实现.这三种方式各有各的特点. 首先来看隐式接口实现,这恐怕是我们使用最多的一种接口实现,因为隐匿接口实现是.NET的默认接口实现方式.下面让我们来看一个隐式接口实现的例子: using System; internal class MyClass { public

两种访问接口的方式(get和post)

跨机器.跨语言的远程访问形式一共有三种:scoket发送数据包.http发送请求.rmi远程连接: http发送请求方式:分为post和get两种方式 importjava.io.IOException; importjava.io.InputStream; import java.util.Map; importjava.util.concurrent.atomic.AtomicInteger; importorg.apache.commons.httpclient.HttpClient; i

DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表

原文:DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪费时间才写的这篇文章,高手不想的看请路过 本文内容来DevExpress XtraReports帮助文档,如看过类似的请略过. 废话少说 开始正事 在继续本示例之前,要把所有 必需的程序集 添加到项目的 引用 列表中,并且把一个按钮拖放到窗体上. 然后,以下列方式接管此按钮的