连接到 SAP
SAP 是一个用于管理广泛的组织业务流程的企业级业务套件。请使用适用于 SAP 的 ACL 连接器导入您的组织的 SAP 数据。
说明
SAP 连接器需要基本 Analytics 订阅以外的单独订阅授权。如果您没有所需的订阅授权,则无法连接到 SAP。
请联系您的客户代表,获取有关 SAP 连接器订阅的信息。
开始之前
兼容 SAP 系统
适用于 SAP 的 ACL 连接器可与下列 SAP 系统一起使用:
- S/4HANA
- 在所有受支持的数据库平台(包括 SAP HANA)上运行的下列系统的所有增强级别:
- SAP ERP 6.0 (ECC 6.0)
- SAP CRM 7.0
- SAP SRM 7.0
- SAP SCM 7.0
- SAP EWM 7.0
兼容的 SAP SPAM/SAINT 版本
要为 SAP 系统安装 SAP 插件,必需的 SAP SPAM/SAINT 版本是 0053 或更高版本。
SAP SPAM 是 Support Package Manager。SAP SAINT 是插件安装工具。
为 SAP 系统安装 SAP 插件
您的 SAP 基本管理员必须为 SAP 系统安装 SAP 插件。SAP 连接器要与 SAP 系统通信,必须使用插件。具有 SAP 连接器订阅的用户可以从启动面板 (www.highbond.com) 下载插件文件。
使用 SAP 前端安装 SAP 插件。用于安装 SAP 插件的兼容 SAP 基础发行版是 700 或更高版本。
- 从启动面板 (DABEXP_SAPCONN_AOI_100.sar) 下载 .sar 插件文件。
- 在 SAP 系统上,使用 SAINT 交易访问插件安装工具。
- 使用插件安装工具安装 SAP 插件安装包。
SAP 授权
说明
SAP 授权必须由您的 SAP 安全管理员分配。
SAP 连接器的用户需要下列 SAP 访问权限和授权,以便连接到 SAP 系统并提取数据:
- 使其可以连接到 SAP 系统的 SAP 用户 ID 和密码
- 特定 SAP 授权对象和授权,包括 SAP 表授权
SAP 授权对象
SAP 连接器的用户需要下面列出的特定 SAP 授权。
说明
有关向用户分配 SAP 授权的详细信息,请咨询您的 SAP 安全文档。
授权类别 | 授权对象 | 域 | 值 | 详情 |
---|---|---|---|---|
AAAB 跨应用程序授权对象 |
S_RFC RFC 访问的授权检查 |
ACTVT | 16(授予执行权) | 控制用户从远程位置(如台式计算机)执行 SAP 系统上的功能模块的能力。 |
RFC_NAME |
/SDF/RI_CRM CMON RFC1 SYST /DABEXP/DAB_FUGR |
|||
RFC_TYPE | FUGR(功能组) | |||
或者,从 SAP NW 7.0 EHP 2 (SAP Basis 702) 开始,可以将 RFC_TYPE 设置为 FUNC(函数模块)。 对于 FUNC,功能模块必须被直接授权,而不是通过功能组授权。 |
||||
ACTVT |
16(授予执行权) |
|||
RFC_NAME |
/SDF/CMO_GET_INSTNO CMO_GET_INSTNO RFC_GET_FUNCTION_INTERFACE RFC_GET_NAMETAB RFCPING /DABEXP/RFC_SAPCONNECTOR |
|||
RFC_TYPE | FUNC(功能模块) | |||
BC_A 基础:管理
|
S_TABU_DIS | ACTVT | 03(显示) | 控制用户访问特定 SAP 表组的权限。 |
DICBERCLS(授权组) | * | |||
S_TABU_NAM | ACTVT | 03(显示) | 控制用户访问单个 SAP 表的权限。 | |
TABLE(表名称) | * | |||
说明 SAP 连接器的用户应该被分配对于它们需要访问的那些 SAP 表的授权,以便执行他们的分析。 例如,执行总分类账审计的用户需要对于总分类账表的授权。 您的组织自己的业务流程决定哪些用户需要表授权以及他们需要哪些授权。请与您的 SAP 安全管理员协作确定您的用户需要的访问权限的适当级别。 |
SAP 端口配置
在您将使用 SAP 连接器连接到的每个 SAP 服务器上,您需要为入站和出站通信打开下列 TCP/IP 端口:
端口名称 | 端口号 | 备注 |
---|---|---|
调度程序 | 32<NN> | 由 SAP GUI 使用 |
Gateway | 33<NN> | 为 RFC 通信使用 |
消息服务器 | 36<NN> | |
说明 <NN> 是您的 SAP 系统的实例编号。因此,如果 SAP 系统编号为 10,则端口 3210、3310 和 3610 需要是打开的。 |
安装 SAP GUI for Windows
必须在您打算使用 Analytics 的 SAP 连接器的本地计算机或服务器上安装 SAP GUI for Windows 版本 7.50 或更高版本。SAP GUI 使 SAP 连接器可以远程访问您的 SAP 系统。
Analytics 用户 | SAP GUI 必须与 Analytics 安装在同一台计算机上。 |
机器人应用程序用户 | SAP GUI 必须被安装在承载机器人代理的服务器上。 |
Analytics Exchange 用户 | SAP GUI 必须被安装在承载 AX 服务器的服务器上以及任何将被用于访问您的 SAP 系统的 AX 引擎节点服务器上。 |
SAP 连接信息和凭据
通常,SAP 基本管理员维护 SAP 系统的连接信息。要求您的 SAP 基本管理员提供必要的连接信息,或者让其在 SAP 登录窗口中配置所需的连接信息。
如果您的管理员不能帮助您,您或者您的管理员应该联系您的 SAP 支持人员。
要连接到 SAP,您或者您的管理员必须收集以下信息:
- 正确的服务器类型(普通或负载平衡)
- 实例编号(对于普通服务器类型)
- 登录组和系统 ID(对于负载平衡服务器类型)
- SAP 系统的主机名或 IP 地址
- 您的 SAP 用户名和密码
- 客户端编号
- 对 SAP 系统中表的读取访问权限
创建 SAP 连接
- 从 Analytics 主菜单中选择导入 > 数据库和应用程序。
- 从新建连接选项卡中,在 ACL 连接器部分中,选择SAP。
提示
您可以通过在过滤连接框中输入搜索字符串来过滤可用连接器的列表。连接器按字母顺序排列。
- 在数据连接设置面板中,输入连接设置,然后在面板底部单击保存并连接。
您可以接受默认的连接名称,也可以输入一个新的名称。
您的连接器的连接会被保存到现有连接选项卡中。将来,您可以从已保存的连接重新连接到您的连接器。
一旦连接被建立,“数据访问”窗口将打开到暂存区域,并且您可以开始导入数据。有关从您的连接器导入数据的帮助,请参见使用数据访问窗口导入数据。
连接设置
基本设置
设置 | 描述 | 示例 |
---|---|---|
预加载 SAP 系统 可选 |
SAP 系统的名称,并且在下列 SAP GUI 配置文件之一中指定了连接设置:
SAP GUI 配置文件的默认位置: C:\Users\<用户名>\AppData\Roaming\SAP\Common 如果这两个配置文件都存在于 ..\SAP\Common 文件夹中,则 SAPUILandscape.xml 优先。 说明 如果您选择预加载的 SAP 系统,则会为您自动填充所有剩余的 SAP 连接设置,只有用户、密码和客户端例外。 |
PHR - 生产人力资源 |
服务器类型 |
您的 SAP 系统中的服务器的配置:
|
|
服务器 | SAP 系统的主机名或 IP 地址 |
|
实例编号 (服务器类型 = NORMAL) |
SAP 系统的两位数实例编号。 实例编号构成了用于 SAP 连接器和 SAP 系统之间的入站和出站通信的端口号的最后两位数字。 要了解更多信息,请参考SAP 端口配置。 |
01 |
登录组 (服务器类型 = LOAD BALANCE) |
SAP 系统中的负载平衡服务器组的名称。 | ACL 生产 |
系统 ID (服务器类型 = LOAD BALANCE) |
SAP 系统的三字符标识符。 | PHR |
客户端 |
标识 SAP 系统内的客户端的三位数代码。 客户端是 SAP 系统的一个子分区。 |
800 |
语言 | SAP 系统的语言。 | EN |
高级设置
设置 | 描述 | 示例 |
---|---|---|
可变字符串长度 可选 |
从数据类型为 STRING 或 RAWSTRING 的 SAP 域的开头导入的字符数。 有时,大量系统信息可能作为这些类型的域中的曳尾字符存在。您可以使用此设置限制所导入的字符数。 如果您省略此设置,则使用默认设置,即 256 个字符。 |
6 您知道仅 STRING 域中的前 6 个字符包含您感兴趣的信息。 |
临时工作目录 |
临时存储 SAP 数据的目录的路径。 当 SAP 连接器检索数据时,数据被临时存储在本地。如果 Analytics 项目文件夹(默认存储位置)无法容纳大型表,则这些表可能导致溢出错误。此设置使您可以指定不同的临时存储位置,以便为大型文件提供足够的空间。 如果您保留预先填充的设置默认,则数据被临时存储在 Analytics 项目文件夹中。 |
D:\SAP_temp_storage |
RFC 功能模块 |
RFC 功能模块的名称构成 SAP 连接器的基础。 请将此域保留为空白。该值被在后台自动提供。 该域的目的是防备该模块在将来被重命名,并且必须手动指定新名称。 |
搜索 SAP 表
在您创建到 SAP 系统的新连接之后,Analytics 在数据访问窗口中列出可用表列表中的 200 个公共 SAP 表。您可以浏览该列表,然后单击任何表名称以将该表添加到暂存区域。
搜索“可用表”列表
与浏览该列表相比,您可能会发现搜索表名称或表描述更方便。您可以在该列表上方的搜索表框中输入搜索字符串。搜索字符串可以包含字面量字符和通配符。
搜索操作会超越该列表,并且搜索本地表名称缓存中存储的任何未显示名称。
有关搜索可用表列表的详细信息,请参见将一个或多个表添加至暂存区域。
如果找不到我搜索的表,应该怎么办?
如果您搜索的表不在可用表列表或者表名称缓存中,您可以在 SAP 系统中搜索和检索其他表名称。
- 在搜索表框中输入搜索字符串。
如果找不到该表,则在数据库中搜索表名称按钮出现。
- 单击在数据库中搜索表名称。
SAP 系统中任何匹配搜索字符串的表名称被添加到可用表列表中。一个或多个表名称还被添加到表名称缓存中,以便在将来更便于访问。
说明
SAP 数据库中的搜索仅针对短 SAP 表名称(ANAT、BNKA 等等)。表描述不被搜索。
提示
您不能有选择地从可用表列表或表名称缓存中移除表名称。要清理表列表,请删除并重新创建 SAP 连接。该列表恢复为仅包含公共 SAP 表。
联接 SAP 表
您可以在数据访问窗口中联接暂存区域中的 SAP 表。联接 SAP 表具有下列限制:
- 可以联接两个表,而不是像其他 Analytics 连接器那样允许联接多达五个表。
- 支持内部联接和左联接。不支持外部联接和右联接。
要了解更多信息,请参考在数据访问窗口中联接表。
键域图标
键域图标标识被添加到暂存区域的 SAP 表中的键域。键域图标的用途是标识您可以用来联接 SAP 表的域。
说明
一旦您将 SAP 数据导入到 Analytics 中,键域的指定就会被丢失,键域会被和非键域一样对待。
SAP 数据类型
与添加到暂存区域的 SAP 表中的域名称一起显示的类型是 SAP 数据类型。其他 Analytics 连接器显示 Analytics 数据类型。导入后,SAP 数据类型被转换为 Analytics 数据类型。
SAP 系统的语言
在数据连接设置面板中,您可以指定您所连接到的 SAP 系统的语言。
Analytics 支持的语言
如果 SAP 系统的语言是 Analytics 所支持的语言之一,则可用表列表会用受支持的语言显示表描述。
Analytics 支持的语言:
英语 | 德语 | 西班牙语 | 法语 |
简体中文 | 日语 | 葡萄牙语 | 波兰语 |
Analytics 不支持的语言
如果 SAP 系统的语言不是 Analytics 所支持的语言之一,则可用表列表会用英语显示初始的表描述列表。您随后在 SAP 系统中搜索和检索的任何表都会以该系统的语言显示。结果是可用表列表中的表描述是英语和 SAP 系统语言的混合形式。
说明
短 SAP 表名称(ANAT、BNKA 等)在所有语言中都是标准的。
SAP 连接错误
错误编号 | 错误代码 | 描述 |
---|---|---|
0 | 未知的 | 无法完成连接到 SAP 或者导入数据的操作。发生未知错误。 |
1 | SapDriverInitializationError | 无法连接到 SAP。可能缺少必需的驱动程序配置文件。 |
2 | SapDriverLicenseInvalidError | 无法连接到 SAP。驱动程序许可证有问题。 |
3 | ConnectionPropertiesParserValueMustNotBeNullOrWhitespaceError | 无法连接到 SAP。缺少必需的连接参数。 |
4 | ConnectionPropertiesParserLibraryTypeOutOfRangeError | 库参数的值无效。有效值为:ClassicRfc、NetweaverRfc |
5 | ConnectionPropertiesParserRfcFunctionTypeOutOfRangeError | RFC 函数参数的值无效。有效值为:Standard、Extended、Three |
6 | ConnectionPropertiesParserServerDetailInfoAmbiguousError | 无法连接到 SAP。为下列一个或多个属性指定的值不正确:InstanceNumber、LogonGroup、SID。 |
7 | ConnectionPropertiesParserVariableStringLengthNotAnIntegerError | 连接参数的变量字符串长度必须是整数。 |
8 | SapConnectionInfoValidationClientIsNullOrWhitespaceError | 缺少客户端连接参数的值。 |
9 | SapConnectionInfoValidationClientLongerThanThreeCharactersError | 客户端连接参数的值不能超过 3 个字符。 |
10 | SapConnectionInfoValidationLanguageIsNullOrWhitespaceError | 缺少语言连接参数的值。 |
11 | SapConnectionInfoValidationLanguageIsLongerThanTwoCharactersError | 语言连接参数的值不能超过 2 个字符。 |
12 | SapConnectionInfoValidationUsernameIsNullOrWhitespaceError | 缺少用户名连接参数的值。 |
13 | SapConnectionInfoValidationPasswordIsNullOrWhitespaceError | 缺少密码连接参数的值。 |
14 | SapConnectionInfoValidationTestDownloadTableIsNullOrWhitespaceError | 缺少测试下载表连接参数的值。 |
15 | SapConnectionInfoValidationRfcFunctionModuleIsNullOrWhitespaceError | 缺少 RFC 函数模块连接参数的值。 |
16 | SapConnectionInfoValidationSapConnectionServerInfoIsNullError | 无法连接到 SAP。缺少 SAP 服务器属性(内部驱动程序错误)。 |
17 | SapConnectionInfoValidationVariableStringLengthMustBeGreaterZeroError | 无法连接到 SAP。变量字符串长度必须大于 0(内部驱动程序错误)。 |
18 | SapConnectionInfoValidationServerIsNullError | 缺少服务器连接参数的值。 |
19 | SapConnectionInfoValidationServerDetailsIsNullError | 无法连接到 SAP。缺少 SAP 服务器详情属性(内部驱动程序错误)。 |
20 | SapConnectionInfoValidationInstanceNumberNullOrWhitespaceError | 缺少实例编号连接参数的值。 |
21 | SapConnectionInfoValidationInstanceNumberMustHaveTwoDigitsError | 实例编号连接参数的值必须为两位数。 |
22 | SapConnectionInfoValidationLogonGroupNullOrWhitespaceError | 缺少登录组连接参数的值。 |
23 | SapConnectionInfoValidationSidNullOrWhitespaceError | 缺少 SID 连接参数的值。 |
24 | SapConnectionInfoValidationSidLongerThanThreeCharactersError | SID 连接参数的值不能超过 3 个字符。 |
25 | SapDriverErpError | 到 SAP 服务器的连接丢失。发生未知错误。 |
26 | SapDriverTableNotFoundError | 找不到该表。 |
27 | SapDriverTableStructureNotExportableError | 无法导入该表,因为它不含数据。 |
28 | SapDriverAppendStructureNotExportableError | 无法导入该表,因为它不含数据。 |
29 | SapDriverGetTablesDownloadError | 无法完成 SAP 表的下载。 |
30 | SapDriverSqlParsingError | SQL 语法很可能无效,无法执行数据导入。无法识别该错误的具体原因。 |
31 | SapDriverSqlParsingNoSqlScriptFragmentError | 必须指定 SQL 语句。 |
32 | SapDriverSqlParsingExactlyOneBatchAllowedError | 只允许 1 个 SQL 批处理。 |
33 | SapDriverSqlParsingExactlyOneSelectStatementAllowedError | 只允许 1 个 SELECT 语句。 |
34 | SapDriverSqlParsingFragmentNotAllowedError | SQL 语法的一部分不被允许,或者在其当前位置不被允许。例如,UPDATE 或 DELETE 语句不被允许。 |
36 | SapDriverSqlParsingJoinTypeNotAllowedError | 指定的 JOIN 类型不被允许。请指定 INNER JOIN 或 LEFT JOIN.。 |
37 | SapDriverSqlParsingFirstJoinValueNotATableError | JOIN 指定的第一个值不是表。 |
38 | SapDriverSqlParsingOnlyOneJoinAllowedError | 只允许 1 个 JOIN。 |
39 | SapDriverSqlParsingSecondJoinValueNotATableError | JOIN 指定的第二个值不是表。 |
40 | SapDriverSqlParsingNoJoinConditionError | JOIN 条件不得为空。 |
41 | SapDriverSqlParsingJoinConditionOringNotAllowedError | 不允许将 OR 与 JOIN 条件结合使用。 |
42 | SapDriverSqlParsingJoinConditionNotAllowedError | 指定的 JOIN 条件的类型不被允许。 |
43 | SapDriverSqlParsingJoinOperatorMustBeEqualsOnlyError | JOIN 运算符只能是 Equals。 |
44 | SapDriverSqlParsingJoinSameFieldError | 您不能将一个域与其自身 JOIN。 |
45 | SapDriverSqlParsingOnlyExplicitJoinsAllowedError | 只允许显式 JOIN。 |
46 | SapDriverSqlParsingHasNoSelectStatementError | 必须指定一个 SELECT 语句。 |
47 | SapDriverSqlParsingHasNoQuerySpecificationError | SQL 语法很可能无效。查询规范可能是必需的。 |
48 | SapDriverSqlParsingSqlFieldMustBeQualifiedWithTableError | 必须用一个表名称或表别名限定该域。 |
49 | SapDriverSqlParsingSqlSelectStarFieldMustOnlyBeQualifiedWithTableNameError | 必须用一个表名称或表别名限定 SELECT *。 |
50 | SapDriverSqlParsingSqlFieldMustOnlyBeQualifiedWithTableNameError | 只能用一个表名称或表别名限定该域。 |
51 | SapDriverSqlParsingSqlTableMustHaveExactlyOneIdentifierError | 不得限定该表名称。 |
52 | SapDriverSqlParsingSqlQueryeMustHaveAtLeastOneFieldError | SELECT 语句必须包含至少一个域。 |
53 | SapDriverSqlParsingSqlQueryeMustHaveAtLeastOneTableError | SELECT 语句必须包含至少一个表。 |
54 | SapDriverSqlParsingSqlEnhancedQuerySqlTableNotMatchingAnySapTableError | 限定域的表不与从 SAP 系统收到的任何表匹配。 |
55 | SapDriverSqlParsingSqlFieldQualifierNotMatchingAnyTableError | 限定域的表不与 SELECT 语句中指定的任何表匹配。 |
56 | SapDriverSqlParsingSqlSelectStarFieldQualifierNotMatchingAnyTableError | 限定 * 域的表不与 SELECT 语句中指定的任何表匹配。 |
57 | SapDriverSqlParsingSqlFieldNotInSapTableError | SELECT 语句中指定的域不存在于 SAP 数据中。 |
58 | SapDriverSqlParsingSqlFieldNotExportableError | 无法从 SAP 系统中导入在 SELECT 语句中指定的域。 |
59 | SapDriverSqlParsingSqlFieldNotFilterableError | 无法在 SAP 系统中过滤在 WHERE 子句中指定的域。 |
60 | SapDriverSqlParsingTopRowFilterMustHaveAbsolutValueError | SELECT TOP 语句必须指定绝对值。 |
61 | SapDriverSqlParsingTopRowFilterWithTiesNotAllowedError | 必需无牵连地使用 SELECT TOP 语句。 |
63 | SapDriverSqlParsingTopRowFilterMustHaveIntegerValueError | SELECT TOP 语句必须指定一个整数值。 |
64 | SapDriverSqlParsingTopRowFilterIntegerValueMustBeGreaterZeroError | SELECT TOP 语句必须指定一个大于零 (0) 的值。 |
68 | SapDriverSqlParsingTopRowFilterFromClauseMustHaveInnerQuerySpecificationError | SELECT TOP 语句中的 FROM 子句必须包含查询规范。 |
69 | SapDriverSqlParsingOringFilterValuesOnlyForSameFieldAndClauseError | 在一个 OR 条件中不能指定不同的域。在整个 OR 条件中必须使用相同的域,并且必须使用相同的域运算符。 |
70 | SapDriverSqlParsingFilterExpressionNotAllowedError | WHERE 子句中指定的用于过滤域的表达式不被允许。 |
71 | SapDriverSqlParsingFilterValueLiteralNotAllowedError | WHERE 子句中指定的用于过滤域的字面量不被允许。 |
72 | SapDriverSqlParsingFilterComparisonTypeNotAllowedError | WHERE 子句中指定的用于过滤域的比较运算符不被允许。 |
73 | SapDriverPackageCreationFilterTypeNotSupportedError | 过滤器类型不受支持。 |
74 | SapDriverTableCreationMaximumRecordLimitReachedError | 选定域的数量超过 SAP RFC(SAP 远程函数调用)所支持的最大数量。 |
75 | SapDriverExecuteDownloadError | 导入 SAP 表数据的过程中出现未知错误。 |
76 | SapDriverSearchTablesDownloadError | 搜索 SAP 表的过程中出现未知错误。 |
77 | SapDriverSqlParsingNoFromClauseError | SELECT 语句必须包含 FROM 子句。 |
78 | SapDriverSqlParsingNoTableReferenceInFromClauseError | SELECT 语句中的 FROM 子句必须指定一个表。 |
79 | SapDriverSqlParsingExpectedTopRowForPreviewError | 外部 SELECT 语句必须包含一个 TOP 子句。 |
80 | SapDriverSqlParsingPreviewStatmentMustNotHaveWhereClauseError | 外部 SELECT 语句不得包含 WHERE 子句。 |
81 | SapDriverSqlParsingPreviewStatmentMustHaveUnqualifiedStarQualifierOnlyError | 外部 SELECT 语句只能包含一个 * 限定符。 |
82 | SapDriverProjectPathNotFoundError | 指定的临时工作目录不存在。 |