oracle bpm 读取webservice,像调用 WebService 一样进行 SAP 的 RFC 调用

## 像调用 WebService 一样进行 SAP 的 RFC 调用

#### 信息获取

1. 获得 SAP 的连接参数

2. 获得 RFC 方法名称清单、每个方法对应的参数及其用途

#### 开始准备

1. 确保项目 .NET 版本不低于 4.0,编译模式设置为 x86

2. 从 nuget 引用 SAP.RFC 包,编译项目

3. 把 bin 文件夹复制到「能连接 SAP 服务器的电脑」上(如果本机开发环境不能直接访问 SAP 服务器的话)

4. 进入 bin 文件夹,双击运行 SAP.RFC.exe

5. 编辑 SAP.RFC.txt,第一行设置 SAP 服务器连接参数,从第二行起,每行写一个 RFC 方法名称

6. 重新运行 SAP.RFC.exe,正常情况下会在 bin 中生成 SAP.RFC.Client.dll ,将其引用到项目中

> - RFC 方法会被编译到 SAP.RFC.Client.dll 中(每个 RFC 方法会对应一个 class,例如方法 `EFLOW_001` 会编译成 `RFC_EFLOW_001` 的类)

> - 如果 SAP 中增加了新的 RFC 方法,或者原有方法的参数发生了变化, 只需要重复上面 5-6 两步即可。

> - 如果没有生成 SAP.RFC.Client.dll 或者没有包含对应的 RFC 方法,可能是 SAP 连接参数错误或者 RFC 方法名称不正确。

#### 调用 RFC 方法

1. 确保当前项目引用了 nuget 上面的 SAP.RFC 包,和上一步生成的 SAP.RFC.Client.dll

2. 在 Global.asax.cs 的 applicaiton_start 中设置 SAP 连接参数

`SAP.RFC.RFCBase.GetConnString = ()=> "SAP连接参数,参考上一步txt中的内容,推荐从 CfgHelper.xml 中获取";`

3. 直接调用 RFC 方法(静态方法) `RFC_EFLOW_001.Invoke(new RFC_EFLOW_001.Query{}, 100)`

- 第一个参数是 Query 对象,表示输入参数

- 第二个参数是数字,相当于 SQL 查询中的 top 参数。(针对包含 table 类型的结果)

- 返回值是 Result 对象,表示输出结果

#### 异常备忘

**未能加载文件或程序集'sapnco_ utils.DLL ”或它的某一个依赖项。 找不到指定的模块。**

![](https://img.kancloud.cn/c3/50/c3501e84a148243d78619a533ca9bde0_1366x736.png)

解决方案:服务器下载安装【Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)】

地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=8328

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值