Microsoft .NET Data Provider for mySAP Business Suite

更新日期: 2006 年 4 月 14 日

SQL Server 2005 支持使用 Microsoft .NET Data Provider for mySAP Business Suite 来访问 SAP 数据。此提供程序允许您创建可以连接到 mySAP Business Suite 解决方案的包,然后在服务器上执行命令。还可以针对 SAP 服务器创建 Reporting Services 报表。Microsoft .NET Data Provider for mySAP Business Suite 在 SAP R/3 版本 4.6C 和更高版本中进行测试。不支持 SAP R/3 的早期版本。

可以在 SQL Server 导入和导出向导、脚本任务、DataReader 源、Integration Services 所提供的脚本转换以及 Reporting Services 中的数据处理扩展插件中使用 Microsoft .NET Data Provider for mySAP Business Suite。

SQL Server 2005 中不包括 Microsoft .NET Data Provider for mySAP Business Suite,您必须从 https://msdn.microsoft.com/downloads/ 处下载。

必备组件

必须先安装以下资源,然后才能使用 Microsoft .NET Data Provider for mySAP Business Suite:

  • SAP DLL librfc32.dll。通过运行可执行文件 SAPgui 来安装 SAP DLL。SAP DLL 必须与 Microsoft .NET Data Provider for mySAP Business Suite 和 Integration Services 或 Reporting Services 安装在同一台计算机上。
  • 必须在 SAP 服务器上安装两个自定义远程函数调用 (RFC)。先将 RFC 安装到 SAP DLL 所在的计算机上,然后由 SAP 管理员将它们传输到 SAP 服务器。

若要了解有关安装 Microsoft .NET Data Provider for mySAP Business Suite 的详细信息,请参阅从 https://msdn.microsoft.com/downloads/ 下载访问接口时下载的自述文件。

功能

The Microsoft .NET Provider for SAP 支持两种命令类型:执行 RFC/BAPI 和对 SAP 表的 SELECT 查询。

执行 RFC/BAPI

可以针对 Microsoft .NET Provider for SAP 指定一个命令,以执行远程函数调用 (RFC),或针对 SAP 业务应用程序编程接口 (BAPI) 执行调用。

语法

EXEC 命令支持的语法是:

EXEC rfc_name
[{value | @variable [OUTPUT]}][,...n]
[@parameter = {value | @variable [OUTPUT]}][,...n] [;]

下表列出了各个语法元素。

元素 说明

rfc_name

指定函数的名称,它可以为 RFC 或 BAPI。

@parameter

指定函数接口定义中参数的名称。

Value

指定参数值。该值可为字符串、整数或 XML 常量。

@variable

指定包含参数值的变量。

OUTPUT

指示 RFC 参数是 OUTPUT 还是 INPUT/OUTPUT。

示例

以下示例显示 EXEC 语句的语法。

以下 EXEC 语句执行没有输入参数的 BAPI。

EXEC BAPI_COMPANYCODE_GETLIST

以下 EXEC 语句执行具有一个输入参数的 RFC。该参数指定一个名称和一个值。

EXEC RFC_CUSTOMER_GET @NAME1='Contoso'

以下 EXEC 语句执行具有一个输入参数的 RFC。没有指定任何名称,只使用一个值。

EXEC RFC_CUSTOMER_GET '1001'

以下 EXEC 语句执行具有一个在变量中指定的输入参数的 RFC。

若要执行此语句,必须创建名为 @varSAPParameter 对象,将其值设置为 1001,然后将其添加到与查询对应的 SAPCommand 对象。该变量的值必须为 1001,因为 RFCRFC_CUSTOMER_GET 的第一个参数与 KUNNR 相对应。

EXEC RFC_CUSTOMER_GET @var

以下 EXEC 语句执行使用两个参数的 RFC。第一个参数 KUNNR 的值设置为 *,它指示所有的客户编号,第二个参数 NAME1 设置为变量 @var1 的值。

若要执行此语句,必须创建名为 @var1SAPParameter 对象,指定其值,然后将该新对象添加到与查询相对应的 SAPCommand 对象。SAPParameter 对象的方向必须为 input

RFC_CUSTOMER_GET @KUNNR='*',@NAME1=@var1

以下 EXEC 语句执行返回公司名称和每个公司相关信息的 BAPI。

若要执行此语句,必须创建名为 @tableVarSAPParameter,并指定其值,然后将该 SAPParameter 添加到与查询相对应的 SAPCommand 对象。创建的 SAPParameter 对象的方向必须为 inputoutput

EXEC BAPI_COMPANYCODE_GETLIST @COMPANYCODE_LIST=@tableVar OUTPUT

对 SAP 表的 Select 查询

可以对 Microsoft .NET Provider for SAP 指定对 SAP 表(包括透明表、簇表和池表)执行有限语法的 SELECT 查询的命令。

ms141761.note(zh-cn,SQL.90).gif注意:
该查询语法不是标准的 Transact-SQL。它是一种有限语法,只能应用于单个表。

语法

SELECT 语句支持的命令如下:

SELECT [TOP n] {ColumnName [AS Alias] | TableName.* | *}[1,..n]
[INTO FILE FileName [DELIMITED]]
FROM TableName [AS Alias]
[WHERE search_conditions] [OPTION 'no_conversion'] [;]

下表列出了 SELECT 语法支持的子句。

子句 说明

SELECT select_list

结果集的列。select_list 是逗号分隔的表达式列表。列名可以是完全限定的。可以给每个列分配一个别名。通配符 * 指示所有列。

INTO FILE FileName

指定当在查询中使用平面文件模式时将所提取数据写入其中的文件的名称。

FROM TableName

从中检索数据的表。

WHERE search_conditions

定义条件的筛选器,源表中的每一行必须满足这些条件才符合 SELECT 语句的要求。

OPTION

应用于从 SAP 表中提取的数据的宏。如果将此选项设置为“no_conversion”,则不应用任何宏。

若要了解有关 SELECT 子句的详细信息,请参阅 SELECT 语句的各部分

下表列出了 SELECT 语法支持的逻辑运算符和比较运算符。

运算符 Transact-SQL 主题

AND

AND (Transact-SQL)

OR

OR (Transact-SQL)

NOT

NOT (Transact-SQL)

()

运算符优先级 (Transact-SQL)

BETWEEN

BETWEEN (Transact-SQL)

LIKE

LIKE (Transact-SQL)

TOP

TOP (Transact-SQL)

=

=(等于)(Transact-SQL)

!=

!=(不等于)(Transact-SQL)

>

!>(不大于)(Transact-SQL)

>=

>=(大于或等于)(Transact-SQL)

!>

!>(不大于)(Transact-SQL)

<

<(小于)(Transact-SQL)

<=

<=(小于或等于)(Transact-SQL)

!<

!<(不小于)(Transact-SQL)

示例

以下示例显示 SELECT 语句的语法。

以下 SELECT 语句将返回 SPFLI 表中的所有列。

SELECT * FROM SPFLI

以下 SELECT 语句将 SPFLI 表中的数据写入文件 flight.txt,该文件位于 SAPSERVER 计算机上的 Extracts 文件夹中。

SELECT * INTO FILE '\\SAPServer\Extracts\flight.txt' FROM SPFLI

以下 SELECT 语句返回 SPFLI 表中航班为从纽约飞往旧金山的所有列。

SELECT* FROM SPFLI WHERE cityfrom='NEW YORK?AND cityto=’SAN FRANCISCO?

以下 SELECT 将语句返回 SPFLI 表中航班为从纽约起飞,并且标识符介于 1000 到 5000 的所有列。

SELECT * FROM SPFLI where cityfrom=’NEW YORK' AND (connid BETWEEN 1000 and 5000)

您可以使用以下语句返回相同结果集。

SELECT * FROM SPFLI where cityfrom='NEW YORK' AND (connid>1000 AND connid<5000)

以下 SELECT 语句返回 SPFLI 表中航班为从纽约起飞,要到达的城市由变量值指定的所有列。

若要执行此语句,必须创建名为 @variableSAPParameter,指定其值,然后将该 SAPParameter 添加到与查询相对应的 SAPCommand 对象。

SELECT * FROM SPFLI WHERE cityfrom='NEW YORK' AND cityto=@variable

请参阅

其他资源

将 Reporting Services 配置为使用 Microsoft .NET Data Provider for mySAP Business Suite
Integration Services 连接

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2005 年 12 月 5 日

已更改的内容:
  • 删除了有关 Reporting Services 的部分。添加了指向 Reporting Services 主题的“请参阅”链接。