跳转到内容

从 SAP ECC / S/4HANA 临时提取数据

从已知信息出发,自行从 SAP ECC 或 S/4HANA 中提取数据:表名、事务代码或已保存的 SAP 查询。通过搜索选择对象,查看其字段或选择屏幕,预览真实行,检查计划,然后保存一个将结果落入表中的工作流步骤。

SAP 提取步骤搜索 · 预览 · 计划PlaidLink 代理位于您的网络内SAP ECC / S/4HANAPlaidCloud SAP 包SAP 检查 RFC 用户行目标表
每次提取都通过您的 PlaidLink 代理和 PlaidCloud SAP 包运行,以连接上的 RFC 用户身份,在 SAP 自身的授权检查下执行。
  • 一个可通过网络访问 SAP 系统的 PlaidLink 代理。 参见安装 PlaidLink。
  • 一个 SAP ECC / S/4HANA 实例连接。 参见 SAP ECC 和 S/4HANA 连接器。该连接上的 SAP 用户就是每次提取所使用的 RFC 用户。
  • 在 SAP 中安装 PlaidCloud SAP 包。 您的 SAP Basis 团队为每个 SAP 系统安装一次。
  • RFC 用户对所提取对象的 SAP 授权。 参见 SAP 授权。

这三个步骤都位于工作流步骤菜单的 SAP 下。

步骤 用途
SAP:临时提取 完整或增量读取一个 SAP 表。
SAP:运行事务/报表 运行事务代码或 ABAP 报表程序并落入其结果。
SAP:运行查询 (SQ01) 运行已保存的 SAP 查询并落入其结果。

每个步骤都以相同的三个字段开头:代理、SAP 连接,以及用于存放结果的目标表。

选择代理和连接后,步骤的搜索会列出匹配的 SAP 对象,即表、事务或查询,具体取决于步骤。输入名称、事务代码或描述中的词语。支持 SAP 的 * 通配符。SAP 不提供服务的对象仍会显示,但呈灰色,并附有原因。

选择表会列出其字段及说明,并自动填入其关键字段。选择事务、报表或查询会在筛选器选项卡上显示其选择屏幕,该屏幕由 SAP 自己为该对象定义的字段构建,无需了解表或程序的内部细节。

使用 SAP:临时提取。

  1. 在 SAP 提取选项卡上,搜索并选择该表。

  2. 输入 RFC 读取函数,即 PlaidCloud SAP 包中的表读取函数,与您的 Basis 团队所安装的一致。

  3. 检查关键列。PlaidCloud 会根据 SAP 数据字典,用表的主键填入这些列,不含客户端字段。勾选复选框,确认它们恰好就是主键。SAP 会拒绝任何其他列集合。

  4. 在限定筛选器选项卡上添加筛选器。点击一个已知列以添加一行,选择包含或排除,选择运算符(等于、不等于、大于、大于或等于、小于、小于或等于、介于、不介于、包含模式或不包含模式),并使用值帮助直接从 SAP 中选取有效值。为同一列添加多行,可匹配一组值中的任意一个;对于介于或不介于,则添加一个范围。大型 SAP 表至少需要一个筛选器,例如日期范围或公司代码。

  5. 若要在每次运行时只读取新增和已更改的行,请设置增量选项卡。参见增量表提取。

  6. 在可见性与定义选项卡上,设置受管控列。参见受管控列。

货币键位于同一张表中的 CURR 金额列,会按其真实值落入。PlaidCloud 会按货币的小数位数对每个金额进行偏移,因此日元金额会以整日元落入。没有货币键的金额列则按 SAP 的存储方式落入,并且运行会报告一条指明该列的警告。

SAP 客户端(mandt)和分片大小是可选的。将客户端留空即使用连接的默认客户端。

使用 SAP:运行事务/报表。

  1. 在 SAP 运行选项卡上,搜索并选择一个事务,或在 Report/Program 中输入报表程序名称并点击查找选择屏幕。二者选其一。

  2. 在筛选器选项卡上,填写选择屏幕。表单根据事务或报表自身的 SAP 选择屏幕构建。空白字段表示对该字段不做筛选。

    若要改为从已保存的 SAP 变式开始,请从从 SAP 变式开始中选择它。PlaidCloud 会用变式的已存储值填写筛选表单,并在表单旁列出变式自身无法带入的值,对于这些值,SAP 会改用报表自己的默认值。选择另一个变式会替换表单中的值;之后编辑某个字段不会改变所显示的已选变式。

  3. 设置最大行数,默认为 10,000,最高为 50,000。无论如何,SAP 都会运行完整的事务或报表,该上限只限制 PlaidCloud 读回的行数。

  4. 对于长时间运行的报表,请勾选 Run as a background job,并可选择填写作业名称(仅异步)。

  5. 在可见性与定义选项卡上,设置受管控列。

需要交互式输入、弹出窗口或屏幕的报表无法无人值守地运行。SAP 会拒绝它,不会有任何数据落入,并且步骤会报告 SAP 给出的原因。请改在 SAP GUI 中运行该报表。

使用 SAP:运行查询 (SQ01)。

  1. 在 SAP 运行选项卡上,搜索并选择该查询。选择查询会自动填入工作区、用户组和查询名称。您也可以选择工作区,并直接输入用户组和查询名称。

  2. 在筛选器选项卡上,填写该查询自身的选择屏幕,即其作者在 SQ01 中设置的相同参数和选择选项。空白字段表示对该字段不做筛选。

  3. 设置最大行数,默认为 10,000,最高为 50,000。

  4. 在可见性与定义选项卡上,设置受管控列。

更改工作区、用户组或查询名称会清除为其他查询构建的筛选表单,因此切换之后请重新查找选择屏幕。

每个 SAP 提取步骤都需要一个受管控列:该步骤所落入的列之一,例如表示公司代码的 BUKRS。没有它,步骤无法保存;如果该列不在所落入的列之中,运行将不会落入任何行。

每个步骤的预检分组包含三个按钮,它们都不会阻止保存步骤。

按钮 显示内容
预览 示例行。表预览直接读取前几行。对于事务、报表或查询,预览会在 SAP 中作为单独的示例运行,上限为 100 行,因此表单会先要求您确认。不会有任何数据落入。
计划 提取的运行方式,包括其关键列、行数估计和发送给 SAP 的选择条件,以及任何会使其停止的因素。计划被拒绝会禁用创建并运行和保存并运行,直到您更改配置或新的计划检查通过。您仍然可以保存该步骤。
需要的 SAP 授权 该对象所需的 SAP 授权,可与您的 Basis 团队共享。此列表仅供参考。

SAP 的标准授权检查适用于 RFC 用户,与在 SAP 内部完全一样。

提取 授权
表 S_TABU_NAM 或 S_TABU_DIS 显示,活动 03
事务 S_TCODE
报表 报表授权组的 S_PROGRAM SUBMIT

缺少授权会导致运行失败,并显示 SAP 的未授权错误以及列出上述授权的补救办法。PlaidCloud 自身不添加任何权限检查,也绝不会根据需要的 SAP 授权列表阻止某个步骤。

在 SAP:临时提取的增量选项卡上,勾选 Run incrementally 并输入水位线列。它必须是以下之一:

  • 日期列,SAP 类型为 DATS
  • UTC 时间戳列,SAP 类型为 TZNTSTMPS 或 TZNTSTMPL

不支持 SAP 类型为 UTCL 的时间戳列,并且水位线列不能同时是限定筛选器列。

首次运行会读取整个表。之后的每次运行仅读取等于或晚于上一个水位线(减去回溯期)的行,并按关键列合并。只有整个运行全部落入之后,水位线才会前移。SAP 的开放式日期 99991231 永远不会成为水位线。晚于运行日期一天以上的日期会使水位线保持在运行日期,而时间戳永远不会使其越过运行的开始时间。

SAP:临时提取会按 SAP 数据字典中的真实类型落入每一列。

SAP 类型 落入为
日期(DATS) 日期。空白、初始和无效的日期落入为空(NULL)。无效日期会使步骤以警告结束。
金额、数量、小数(CURR / QUAN / DEC) 精确小数。当金额的货币键列位于同一张表中且包含在提取内时,PlaidCloud 会将金额偏移到其货币的真实小数位数;否则按 SAP 的存储方式落入。小数位数超过 10 位、整数位数超过 28 位或未声明小数位数的小数,会改为以文本落入,并且步骤会以指明该列的警告结束。
整数 整数。
浮点数(FLTP) 双精度。
十进制浮点数(DF16_* / DF34_*) 精确文本。
短 UTC 时间戳(TZNTSTMPS) 时间戳,精确到秒。
长 UTC 时间戳(TZNTSTMPL、UTCL) UTC ISO 文本,例如 2026-01-03T10:15:00.123456Z,这样可保留时间戳列会丢弃的小数部分。
时间(TIMS)、代码(NUMC)、文本(CHAR) 与 SAP 存储完全一致的文本,保留前导零。

如果某一列的 SAP 类型发生变化,提取会用该列的新类型替换整个表,并且步骤会以指明该列的警告结束。增量提取会在同一次运行中完成此操作。如果该读取未能完成,之后的运行会继续读取整个表并给出相同的警告,直到某次成功,增量运行才会恢复。

SAP:运行事务/报表将金额列落入为数字,其他所有列落入为文本。SAP:运行查询 (SQ01) 将金额、整数和日期列按这些类型落入,其他所有列落入为文本。需要时,请在下游步骤中转换类型。

SAP:临时提取的单次运行在读取了 5,000,000 行或运行了 240 分钟后会暂停,并在完成当前分片之后停止。步骤以警告而不是失败结束,下一次运行会从中断处继续,不会丢失任何行。