SAP ABAP BDC (批数据通信) 教程

批次输入简介

批次输入通常用于将数据从非 R/3 系统传输到 R/3 系统,或在 R/3 系统之间传输数据。

这是一种数据传输技术,允许您自动将数据集传输到事务屏幕,从而传输到 SAP 系统。批次输入由批次输入会话控制。

批次输入会话

将一系列事务调用与输入数据和用户操作组合在一起。批次输入会话可用于以批次输入方式执行对话事务,其中一些或所有屏幕由会话处理。批次输入会话作为数据库表存储在数据库中,并在访问事务时用作内部表。

注意事项

  • BDI 通过执行普通 SAP 事务(就像用户一样)来工作,但它会自动执行事务。在使用批次数据输入时,所有屏幕验证和业务逻辑验证都将完成。
  • 它适用于输入大量数据。
  • 无需手动交互

批次输入方法

SAP 提供了两种基本方法将遗留数据传输到 R/3 系统。

  1. 经典的批次输入方法。
  2. 调用事务方法。

经典批次输入方法

在此方法中,ABAP/4 程序读取外部数据到 SAP 系统,并将其存储在批次输入会话中。

创建会话后,您可以运行该会话以执行其中的 SAP 事务。

此方法使用函数模块 BDC_OPEN、BDC_INSERT 和 BDC_CLOSE。

批次输入会话可以 3 种方式进行处理

  1. 在前台
  2. 在后台
  3. 处理期间,显示错误

如果您想测试数据传输,应该在前台或使用错误显示来处理批次输入会话。

如果您想执行数据传输或测试其性能,应该在后台处理会话。

经典批次输入方法的注意事项

  • 同步处理
  • 传输多个事务的数据。
  • 同步数据库更新。
  • 为每个会话生成批次输入处理日志。
  • 会话不能并行生成。

调用事务方法。

在此方法中,ABAP/4 程序使用 CALL TRANSACTION USING 语句来运行 SAP 事务。

整个批次输入过程在线上程序中进行

Call Transaction Method

注意事项

  • 更快的数据处理
  • 异步处理
  • 传输单个事务的数据。
  • 不生成批次输入处理日志。

批次输入流程

Batch Input Procedures

您通常会观察到以下步骤来为您的组织开发批次输入

  1. 分析遗留数据。确定要传输的数据如何在 SAP 结构中映射。还要注意必要的数据类型或数据长度转换。
  2. 生成 SAP 数据结构供导出程序使用。
  3. 将数据导出到顺序文件。请注意,预定义的 SAP 批次输入程序需要字符格式。
  4. 如果未使用 SAP 提供的 BDC 程序,请编写自己的批次输入程序。根据情况选择合适的批次输入方法。
  5. 处理数据并将其添加到SAP 系统
  6. 分析处理日志。对于没有正确日志的 CALL TRANSACTION 方法,请使用您的程序收集的消息。
  7. 根据过程分析结果,更正和重新处理错误数据。

编写 BDC 程序

您可能会观察到以下过程来编写您的 BDC 程序

  1. 分析要处理批次输入数据的事务。
  2. 决定要使用的批次输入方法。
  3. 从顺序文件中读取数据
  4. 执行数据转换或错误检查。
  5. 将数据存储在批次输入结构 BDCDATA 中。
  6. 为经典批次输入生成批次输入会话,或使用 CALL TRANSACTION USING 语句直接处理数据。

批次输入数据结构

批次输入数据结构的声明

DATA : BEGIN OF < bdc table>

OCCURS <occurs parameters>.

INCLUDE STRUCTURE BDCDATA.

DATA:END OF <bdc table>.
字段名 类型 长度 描述
PROGRAM CHAR 8 模块池
DYNPRO NUMC 4 Dynpro 号码
DYNBEGIN CHAR 1 启动 dynpro
FNAM CHAR 35 字段名
FVAL CHAR 80 字段值

特定屏幕的数据字段的顺序没有意义。

注意事项

  • 填充 BDC 数据时,请确保您已考虑到用户设置。这对于填写涉及数字(如数量、金额)的字段尤其重要。用户设置决定了数字的分组字符是什么。例如:数字五万可以写成 50,000.00 或 50.000,00,具体取决于用户设置。
  • 压缩 FVAL 字段以获取金额和数量字段,使其左对齐。
  • 请注意,您通过 BDC 填充的所有字段在填充 BDC Data 表时都应视为字符类型字段。
  • 在某些屏幕上,当您使用 BDC 填充表控件中的值时,您需要注意屏幕默认大小中显示的行数,并为尽可能多的行进行编码。如果您需要填充更多行,则需要编码“Page down”功能,就像手动填充表控件一样。
  • 在上述场景中显示的行数将因用户使用的屏幕大小而异。因此,始终为标准屏幕大小进行编码,并使您的 BDC 始终以标准屏幕大小工作,而不管用户设置的屏幕大小如何。

创建批次输入会话

  1. 使用函数模块 BDC_OPEN_GROUP 打开批次输入会话。
  2. 对于会话中的每个事务
  3. 用 BDCDATA 填充值,以处理事务中的所有屏幕和字段。
  4. 使用 BDC_INSERT 将事务传输到会话。
  5. 使用 BDC_CLOSE_GROUP 关闭批次输入会话。

批次输入录制器

批次输入录制器(系统 > 服务 > 批次输入 > 录制器)会记录手动输入的事务,并创建一个批次输入会话,该会话稍后可以使用 SM35 执行。

Batch Input Recorder

  • 通过选择批次输入初始屏幕上的“录制”按钮来开始批次输入录制器。
  • 录制名称是用户定义的名称,可以与从录制创建的批次输入会话名称匹配。
  • 输入 SAP 事务并开始过账事务。
  • 过账完 SAP 事务后,可以选择“获取事务并保存”结束录制,或者选择“下一个事务”过账另一个事务。
  • 保存录制后,您可以从录制创建批次输入会话和/或从录制生成批次输入程序。
  • 现在可以像其他批次输入会话一样分析创建的批次输入会话。
  • 批次输入录制器功能生成的程序是数据接口程序员的强大工具。它提供了一个坚实的基础,然后可以根据客户需求进行修改。