SAP 表批处理来源

本页面介绍了如何配置从 SAP 应用数据批量提取。

借助 SAP Table Batch Source 插件(SAP Table 插件),您可以从 SAP 标准表和自定义表或视图中读取数据。支持从 SAP 批量数据注入 导入至 BigQuery 或任何其他受支持的目标系统, Cloud Data Fusion。该插件具有以下主要功能:

  • 使用 SAP ECC、SAP S4/HANA 或 SAP BW 作为源系统
  • 不使用 SAP CDC(变更数据捕获) 跟踪和提取数据源中的新数据和增量数据
  • 使用批量提取模式
  • 支持 SAP 表和 ABAP CDS 视图作为数据源
  • 通过应用层访问 SAP 数据

您可以从以下位置读取数据:

  • 透明表
  • 聚簇表
  • 台球桌
  • ABAP CDS 观看次数
  • SAP BW ADSO 对象

支持的软件版本

软件 版本
SAP S4/HANA SAP S4/HANA 1909 及更高版本
SAP ECC SAP ERP6 NW 7.31 SP16 及更高版本
SAP JCo SAP JCo 3.0.20 版及更高版本
Cloud Data Fusion 6.3 及更高版本

如需详细了解 Google Cloud 上的 SAP,请参阅 Google Cloud 上的 SAP 概览

准备工作

设置 SAP Table 插件使用的以下系统和服务:

  1. 配置 SAP ERP 系统。 此过程包括以下步骤:
    • 安装 SAP 传输文件。
    • 设置所需的 SAP 授权和角色。
    • 设置 SAP Java Connector。
  2. 在 Cloud Data Fusion 中部署该插件

    • 重要提示:请选择与 Cloud Data Fusion 版本。
    • 如果您升级 Cloud Data Fusion 的版本 实例或插件时,评估更改对 流水线的功能范围和性能
  3. 在 Cloud Data Fusion 和 SAP 之间建立 RFC 连接

    • 确保在 Cloud Data Fusion 实例和 SAP 服务器相关联。
    • 对于专用实例,请设置 VPC 网络对等互连
    • SAP 系统和 Cloud Data Fusion 实例都必须 位于同一项目中。

配置插件

  1. 转到 Cloud Data Fusion 网页界面 然后点击 Studio
  2. 检查是否选择了 Data Pipeline - Batch(而非 Realtime)。
  3. 来源菜单中,点击 Sap Table。SAP 表节点 。
  4. 如需配置来源,请转到 SAP 表节点,然后点击 属性
  5. 输入以下属性。有关完整列表,请参阅 属性

    1. 输入 SAP 表节点的标签 示例 SAP tables
    2. 输入连接详情。您可以设置新的一次性连接 或可重复使用的现有连接。

      新增关联项

      如需添加到 SAP 的一次性连接,请按照以下说明操作 步骤:

      1. 使用连接保持关闭状态。
      2. Connection 部分中,输入以下信息 从 SAP 账号中填入以下字段:

        1. 参考名称字段中,输入 识别此沿袭来源的连接。
        2. SAP 客户端字段中,输入 特定实例或环境SAP 管理员可以提供客户端名称。
        3. SAP 语言字段中,输入 SAP 登录语言。 默认值为 EN(英语)。
        4. 选择下列连接类型之一。

          • 直接(通过 SAP Application Server)。如果您选择 此默认类型,请在下方输入信息 字段:SAP 应用服务器主机SAP 系统 编号SAP Router
          • 负载均衡(通过 SAP Message Server)。如果您选择 请在以下字段中输入信息: SAP Message Server 主机SAP Message Server 服务 或端口号、SAP 系统 ID (SID) 和 SAP 登录 群组名称
        5. SAP 表/视图名称字段中,输入 创建表或视图

        6. 提供 SAP 凭据:请向您的 SAP 管理员索要 SAP 登录用户名密码

        7. JCo Library Cloud Storage 路径字段中,输入 SAP Java Connector (SAP JCo) 路径, 包含您上传的 SAP JCo 库文件。

        8. 根据从 SAP 映射的元数据生成架构 从 SAP 数据类型映射到相应的 Cloud Data Fusion 数据 请点击获取架构。有关详情,请参阅数据 类型映射

        9. 可选:如需优化从 SAP 的注入负载,请输入 信息:

          1. 使用过滤条件选项,您可以根据以下条件提取记录: 选择条件,例如具有已定义的集合的列, 值。在 WHERE 子句。例如,以下查询会返回所有行 从 Roster 表中 “SchoolID”列包含的值 SchoolID > 52:

            SELECT * FROM Roster WHERE SchoolID > 52;
            

            如需了解详情,请参阅支持的过滤条件

          2. 要提取的行数字段中,您可以限制 通过提供一个正整数来提取数据 行,共 行。

          3. 拆分数量字段中,您可以创建 分区来并行提取数据记录, 提高性能。拆分数量可能会影响 SAP 工作流程,因此必须谨慎选择。

          4. 软件包大小字段中,指定 要在单个 SAP 网络调用中提取的记录。通过 软件包大小会影响性能和可用资源 因此必须谨慎选择

      可重复使用的连接

      如需重复使用现有连接,请按以下步骤操作:

      1. 开启使用网络连接
      2. 点击浏览连接
      3. 点击连接名称。

      如果连接不存在,如需创建可重复使用的连接,请按照下列步骤操作: 具体步骤:

      1. 点击添加连接 > SapTable
      2. 在打开的创建 SapTable 连接页面上,输入 连接名称和说明。
      3. SAP 客户端字段中,输入 特定实例或环境SAP 管理员可以提供客户端名称。
      4. SAP 语言字段中,输入 SAP 登录语言。 默认值为 EN(英语)。
      5. 选择下列连接类型之一。

        • 直接(通过 SAP Application Server)。如果您选择 此默认类型,请在下方输入信息 字段:SAP 应用服务器主机SAP 系统 编号SAP Router
        • 负载均衡(通过 SAP Message Server)。如果您选择 请在以下字段中输入信息: SAP Message Server 主机SAP Message Server 服务 或端口号、SAP 系统 ID (SID) 和 SAP 登录 群组名称
      6. 提供 SAP 凭据:请向您的 SAP 管理员索要 SAP 登录用户名密码值。

      7. JCo Library Cloud Storage 路径字段中,输入 SAP Java Connector (SAP JCo) 路径, 包含您上传的 SAP JCo 库文件。

      8. 可选:在其他 SAP 连接属性 字段,输入必须替换 SAP JCo 的键值对 默认值。

      9. 点击创建

属性

属性 宏已启用 必需属性 说明
标签 数据流水线中节点的名称。
使用连接 使用可重复使用的连接。如果使用了连接,则无需 提供凭据如需了解详情,请参阅 管理关联
参考名称 如果使用连接未开启,系统会显示此字段。 要用于沿袭的连接的名称。
名称 如果使用关联处于开启状态,系统会显示此字段。通过 可重复使用的连接的名称。
SAP 客户端 SAP 系统中的实例或环境。
拍摄快照 在 SAP 中启用数据快照。
何时启用快照
  • 从任何活跃的事务表数据中提取
  • 对数据查询速度较慢且 每次提取调用都会消耗更多内存。

何时关闭快照:如果您同时运行多个 并行提取大批量数据。快照在 SAP,这可能会导致 SAP 中出现 out of memory 问题。已开启 数据提取完成,但缓冲区表将被清除。
SAP 语言 SAP 界面和数据显示所用的语言,以及 处理。
网络连接类型 SAP 连接类型:直接加载 均衡
SAP 应用服务器主机 仅适用于直接连接类型,此主机名来自 SAP 应用服务器,该服务器充当 SAP 客户端(例如 SAP 网络界面、网络浏览器或移动应用)与底层数据库之间的中间件层。
SAP 系统编号 仅对于直接连接类型,此数字为 唯一标识符。例如: 00
SAP 路由器 仅适用于直接连接类型,这是代理服务器的路由器字符串,用于在 SAP 系统与外部客户端或合作伙伴之间提供安全的通信渠道。
SAP Message Server 主机 仅对于负载均衡连接类型,此值为 主机名称,这有助于跨多个服务器实现负载均衡 在 SAP 中运行应用服务器。
SAP Message Server 服务或端口号 仅对于负载均衡连接类型,此值为 SAP Message Server 用于监听传入连接的网络端口 从 SAP 客户端和应用服务器获取数据。
SAP 系统 ID (SID) 仅对于负载均衡连接类型,此 ID 为 分配给每个 SAP 系统。
SAP 登录群组名称 多个 SAP 的逻辑分组或配置的名称 应用服务器默认值为 PUBLIC
SAP 表/视图名称 有效的、不区分大小写的表或视图名称,其中所有列都可以 已提取。
SAP 登录用户名 SAP 用户名
推荐:如果用户名定期更改,请使用
SAP 登录密码 SAP 密码。
推荐:使用安全宏
GCP 项目 ID Google Cloud 项目 ID。
SAP JCo 库 GCS 路径 将 SAP JCo 上传到的 Cloud Storage 的路径 库文件。
获取架构 不适用 不适用 该插件会根据来自 SAP 的元数据生成架构, 将 SAP 数据类型映射到相应的 Cloud Data Fusion 数据 。请参阅数据类型映射
其他 SAP 连接属性 设置其他 SAP JCo 属性以替换 SAP JCo 默认值。 例如,设置 jco.destination.pool_capacity = 10 会替换默认的连接池容量。
过滤条件 在 Open SQL 语法中指定的使用 SQL 进行过滤的条件 WHERE 子句。根据条件提取记录,例如 列包含一组已定义值或一系列值。
有关详情,请参阅支持 过滤条件
要提取的行数 限制提取的记录数量。
  • 请输入一个正整数。
  • 如果值为 0 或留空,则 Cloud Data Fusion 从表中提取所有记录。
  • 如果您输入大于 所选的记录(基于其他过滤条件值)、 Cloud Data Fusion 仅提取所选记录。
要生成的拆分数量 创建分区以并行提取记录。
运行时引擎会创建指定数量的分区(并且 SAP 同时提取记录。
提高此值时应小心谨慎,因为它会增加 与 SAP 并发连接的方法。
建议:计划为每个应用建立 SAP 连接 流水线和并发运行的流水线总数。
如果值为 0 或留空,则 Cloud Data Fusion 会选择一个 具体取决于可用执行器的数量、 要提取的记录,以及软件包大小。
软件包大小 要在单个 SAP 网络调用中提取的记录数。时间是 每次连接到网络时 SAP 在内存中缓冲的记录数 提取调用。
设置此属性时请谨慎操作。多个数据流水线 提取数据可能会使内存使用量达到峰值, Out of memory 个错误。
  • 请输入一个正整数。
  • 如果为 0 或留空,插件将使用标准值 70000,或 一个适当计算出的值。
  • 如果数据流水线由于 Out of memory 而失败 减小软件包大小或增加内存 支持 SAP 工作流。

支持的过滤条件

支持以下过滤条件。

包含比较运算符的过滤条件

使用比较运算符根据以下条件执行更复杂的过滤: 值之间的比较。

语法
    SELECT * FROM table_name WHERE column_name > value; \
    SELECT * FROM table_name WHERE column_name BETWEEN value1 AND value2;
    
示例
AUDAT GT '20230914'

包含 LIKE 运算符的过滤条件

使用 LIKE 运算符进行模式匹配。为了匹配任一项 字符,请使用 % 符号作为通配符。

语法
    SELECT * FROM table_name WHERE column_name LIKE 'pattern%';
    
示例
ERNAM LIKE 'KIRAN%'

包含 IN 运算符的过滤条件

使用 IN 运算符指定要匹配的值列表 。

语法
    SELECT * FROM table_name WHERE column_name \
      IN ('value1', 'value2', 'value3');
    
示例
ERNAM IN ( 'LEE' , 'KIRAN' )

包含逻辑运算符的过滤条件

使用逻辑运算符指定要匹配的值列表。

语法
    SELECT * FROM table_name WHERE condition1 AND condition2; \
      SELECT * FROM table_name WHERE condition1 OR condition2; \
      SELECT * FROM table_name WHERE NOT condition;
    
示例
  • ( AUDAT EQ '20220615' ) AND ( ERNAM LIKE 'LEE%' )
  • ( AUDAT EQ '20220615' ) OR ( AUDAT EQ '20220617' )

包含日期范围的过滤器

使用日期范围检索日期时间列处于 特定日期范围内的数据

语法
    SELECT * FROM table_name \
      WHERE datetime_column >= 'start_date' AND datetime_column <= 'end_date';
    
示例
AUDAT GE '20230910' AND AUDAT LE '20230914'

包含日期比较数据的过滤条件

使用日期比较来检索使用日期时间的行。

语法
    SELECT * FROM table_name WHERE datetime_column > 'target_date';
    
示例
AUDAT GE '20230910' AND AUDAT LE '20230914'

过滤条件组合日期和时间

如果您的日期时间列同时包含日期和时间,则可以使用过滤条件 。

语法
    SELECT * FROM table_name \
      WHERE datetime_column >= 'target_datetime' \
      AND datetime_column <= 'target_datetime';
    
示例
TIMESTAMP GE '20210602144800' AND TIMESTAMP LE '20210624080836'

(时间戳格式:YYYYMMDDHHMMSS)

使用逻辑运算符将多个条件组合在一起的过滤器

您可以使用逻辑运算符检索满足多个条件的行, 运算符,例如 ANDOR

语法
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' AND column2 > value2) \
      OR (column3 = 'value3' AND column4 < value4);
    
示例
    ( ERNAM EQ 'LEE' AND AUDAT GT '20220722' ) \
      OR ( BSTNK EQ 'PO54321065' AND BSTDK LT '20220714' )
    

合并嵌套条件的过滤器

您可以通过嵌套方式组合条件,以创建复杂的 过滤器。

语法
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' OR (column2 = 'value2' AND column3 > value3)) \
      AND column4 = 'value4';
    
示例
    ( ERDAT EQ '20220722' OR ( ERNAM EQ 'LEE' AND VDATU GT '20210623' ) ) \
      AND FMBDAT EQ '20220722'
    

使用子查询的过滤条件

您可以使用子查询,根据来自其他查询的结果进行过滤 查询。

语法
    SELECT * FROM table_name \
      WHERE column1 IN (SELECT related_column FROM other_table WHERE condition);
    
示例
VBELN IN ( SELECT VBELN FROM VBAK WHERE ERNAM = 'LEE' )

过滤条件组合日期和值条件

您可以将基于日期和基于价值的条件组合在复杂的 过滤。

语法
    SELECT * FROM table_name \
      WHERE (column1 = 'value1' OR column2 = 'value2') \
      AND datetime_column > 'target_datetime';
    
示例
    ( ERDAT EQ '20220722' OR ERNAM EQ 'LEE' ) AND VDATU GT '20210623'
    

包含“格式设置日期”的过滤器

在 SAP 中,系统始终会保存日期和时间字段,而不包含 - 或 在数据库级层使用 :

语法
    SELECT * FROM table_name \
      WHERE datetime_column >= 'YYYY-MM-DD HH:MM:SS' \
      AND datetime_column <= 'YYYY-M
    

不支持:过滤条件包含函数和 比较运算符

在 SAP 中,不支持 QUERY 的 WHERE 子句中的函数。

不支持:过滤条件包含区间

在 SAP 中,不支持 NOW() 函数。

语法
    SELECT * FROM table_name \
      WHERE datetime_column >= NOW() - INTERVAL X DAY;
    

不支持:过滤条件提取日期部分

SAP 不支持偏移过滤。

示例
    WHERE YEAR+0(4) = 2023
    

数据类型映射

下表列出了 SAP 数据类型 Cloud Data Fusion 类型。

SAP 数据类型 ABAP 类型 SAP description Cloud Data Fusion 数据类型
INT1(数字) b 1 个字节的整数 整数
INT2(数字) 2 个字节的整数 整数
INT4(数字) i 4 个字节的整数 整数
INT8(数字) 8 8 个字节的整数 长整型
DEC(数字) p 打包成采用 BCD 格式的数字 (DEC) decimal
DF16_DECDF16_RAW(数字) a 十进制浮点 8 字节 IEEE 754r 双精度
DF34_DECDF34_RAW(数字) e 十进制浮点 16 字节 IEEE 754r 双精度
FLTP(数字) f 二进制浮点数 双精度
CHARLCHR(字符) c 字符串 字符串
SSTRINGGEOM_EWKB(字符) 字符串 字符串 字符串
STRING(字符) 字符串 字符串 CLOB 字节
NUMCACCP(字符) n 数字文本 字符串
RAWLRAW(字节) x 二进制数据 字节
RAWSTRING(字节) xstring 字节字符串 BLOB 字节
DATS(日期/时间) d 日期 日期
TIMS(日期/时间) t 时间 时间
TIMS(日期/时间) utcl (Utclong)、TimeStamp 时间戳

使用场景

支持两种提取上下文:

  • SAP 数据库表和视图
  • SAP ABAP CDS

在每个上下文中,SAP Table 插件都支持标准和自定义 数据库表和视图

限制

SAP 表格插件具有以下限制:

  • 不支持联接表。
  • 不支持带参数的 CDS 视图。
  • 如果没有关键字段,它不支持。
  • 如果已启用快照功能,则使用的软件包大小超过 30,000 都可能导致流水线故障此软件包的大小可能会有所不同,具体取决于 SAP 表中的列数。您可以计算出一个 表格大小:行大小(以字符数表示)* 5。
  • 借助 Connection Manager,您最多可以浏览 1,000 个 SAP 表名称。
  • 当出现数据流错误(例如接收器中出现错误)时,SAP 表插件会尝试通过调用用于清理的自定义 RFM /GOOG/RFC_READ_TABLE_CLEANUP 来清理与提取相关的所有活动 SAP 端进程。

后续步骤