C# 连接SAP,并调用RFC函数

55 篇文章 30 订阅 ¥19.90 ¥99.00
4 篇文章 0 订阅
这篇博客介绍了如何使用C#通过Com组件连接到SAP系统,并详细步骤演示了调用RFC函数`RFC_READ_TABLE`的过程,包括设置连接参数、登录、添加函数、设置参数和调用函数读取数据。同时,文章也提及了SAP的ABAP函数模块、BAPI规范和远程函数调用的相关概念。
摘要由CSDN通过智能技术生成

C# 连接SAP,并调用RFC函数 
(基于Com组件)


非原创,见到好文,收藏。

C# 连接SAP,并调用RFC函数 
(基于Com组件) 收藏 
1) 新建工程后,首先添加3个Com组建的引用,分别为 SAPFunctionsOCX,SAPLogonCtrl,SAPTableFactoryCtrl;
2) 项目添加引用
using SAPFunctionsOCX;
using SAPLogonCtrl;
using SAPTableFactoryCtrl;
3) 连接并调用RFC
SAPLogonControlClass connctl = new SAPLogonControlClass();
//下面的参数值根据实际情况赋值
connctl.Client = "200";
connctl.Language = "EN";
connctl.ApplicationServer = "xxx.xxx.xxx.xxx";//Application server 
IP
connctl.SystemNumber = 00;
connctl.User = "XXXX";
connctl.Password = "XXXXXXX";

Connection conn = (Connection)connctl.NewConnection();
//登陆
if (conn.Logon(null,true))
{
MessageBox.Show("Successful");
}

SAPFunctionsClass functions = new SAPFunctionsClass();
functions.Connection = conn;
//这里就可以传入Function Name
Function fucntion = (Function)functions.Add("RFC_READ_TABLE");。
//这里是传入值参数
Parameter parameter1 = 
(Parameter)fucntion.get_Exports("QUERY_TABLE");
parameter1.Value = "VEKP";
Parameter parameter2 = (Parameter)fucntion.get_Exports("DELIMITER");
parameter2.Value = ";";
//这里是传入表的参数,这里有两个表OPTIONS和FIELDS
Tables Tables1 = (Tables)fucntion.Tables;
Table table0 = (Table)Tables1.get_Item("OPTIONS");
table0.AppendGridData(1, 1, 1, "EXIDV = '00000000001000000022'");
Table talble1 = (Table)Tables1.get_Item("FIELDS");
talble1.AppendGridData(1, 1, 1, "VENUM");
talble1.AppendGridData(2, 1, 1, "VPOBJKEY");
talble1.AppendGridData(3, 1, 1, "VSTEL");
//调用函数,并读取数据
if (fucntion.Call())
{
Tables1 = (Tables)fucntion.Tables;
Table talbe2 = (Table)Tables1.get_Item("DATA");
MessageBox.Show(talbe2.get_Cell(1, 1).ToString());
}
//退出登陆
conn.Logoff();

=========

所有ABAP 函数模块在SAP函数制作器(事务码SE37)中管理。其中一定数量的是能够远程函数调用的。这些允许远程调用的函数模块被称为RFM。RFM 遵守一定的附加规则, 例如,不允许使用修改参数。RFM 接口由输入、输出和表参数和定义的异常组成。输入和输出参数通常是基于字典定义的简单字段(例如,KNA1-KUNNR)或者由字段组成的结构。所有输出参数都是可选的,输入和表参数可以是必要的。简单字段也被描述为标量参数。可选的标量输入参数可以包含一个默认值,在调用者没有使用该参数时使用。在函数制作器中,可以通过双击相应区域跳转到所有参数的相关字典定义。这里最重要的属性是数据类型、长度、可能使用的转换例程和允许的值集合。BAPI 和工具概览BAPI是RFM 的子集。必须根据BAPI 编程指南中定义的方针来开发BAPI,并且必须在业务对象资源库(BOR)中定义它们为对象类型的方法。下面是最重要的BAPI 规范的清单:已发布的BAPI 是同步访问SAP 的标准接口。客户可以开发子集的BAPI。把BAPI 附加到子类,而不要修改SAP 对象类型。BAPI 通常向上兼容并且编写了完善的文档。 可以通过编写对相应函数的CALL FUNCTION 来在ABAP 中调用BAPI。 BAPI 通常没有异常。 BOR 对象类型通常带有用来访问相关表的的键字段。如果具有实例依赖的BAPI,键字段做为重要输入参数出现在RFC 级别。实例无关的BAPI 不使用键字段。BAPI 在BOR 中可以具有不同于函数制作器的参数名称。表参数也可以在BOR 中标记为输入、输出或输入/输出。这对调用BAPI 没有影响。从4.0 版以后,执行数据库修改的BAPI 不再包含COMMIT WORK 语句。应用必须使用Bapi.Service.TransactionCommit 来实现外部提交。 BAPI 主要使用内部数据表示法。GUI 转换例程不会被自动调用。SAP 提供转换BAPI,这样应用可以在内部和外部格式之间转换。 特殊的帮助之对象类型的BAPI 用来解释键(例如,国家键)和为输入字段提供值集合。

在Android Studio中远程调用SAP RFC函数,可以通过以下步骤实现: 1. 首先,确保你的Android Studio项目中已经添加了相应的SAP Java Connector(SAP JCo)库。你可以在项目的build.gradle文件中添加依赖项,例如: ```java dependencies { implementation 'com.sap.conn.jco:jco3:3.1.2' } ``` 2. 创建一个SAP连接: 在你的代码中,实例化一个`JCoDestination`对象,并设置连接所需的属性,如SAP服务器的地址、用户名、密码等。例如: ```java JCoDestination destination = JCoDestinationManager.getDestination("MY_DESTINATION"); destination.getRepository(); // 设置连接属性 destination.getProperties().setProperty(DestinationDataProvider.JCO_ASHOST, "SAP服务器地址"); destination.getProperties().setProperty(DestinationDataProvider.JCO_SYSNR, "系统编号"); destination.getProperties().setProperty(DestinationDataProvider.JCO_CLIENT, "客户端"); destination.getProperties().setProperty(DestinationDataProvider.JCO_USER, "用户名"); destination.getProperties().setProperty(DestinationDataProvider.JCO_PASSWD, "密码"); ``` 3. 调用RFC函数: 使用SAP连接后,可以从SAP系统的函数库中获取function module,然后通过函数的`execute()`方法调用RFC函数并传递参数。例如: ```java JCoFunction function = destination.getRepository().getFunction("RFC_FUNCTION_NAME"); if (function == null) { throw new RuntimeException("Function not found"); } // 设置RFC函数的输入参数 function.getImportParameterList().setValue("parameterName", parameterValue); function.execute(destination); // 获取RFC函数的输出参数 String result = function.getExportParameterList().getString("outputParamName"); ``` 4. 处理RFC函数的返回结果: 根据你的需求,可以根据RFC函数的返回结果进行一系列的操作,例如显示在界面上、保存到本地等。 以上就是在Android Studio中远程调用SAP RFC函数的基本步骤。请注意,在实际应用中,你可能还需要处理连接的异常、异常情况下的处理等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值