SAP ABAP BDC (批数据通信) 教程
批次输入简介
批次输入通常用于将数据从非 R/3 系统传输到 R/3 系统,或在 R/3 系统之间传输数据。
这是一种数据传输技术,允许您自动将数据集传输到事务屏幕,从而传输到 SAP 系统。批次输入由批次输入会话控制。
批次输入会话
将一系列事务调用与输入数据和用户操作组合在一起。批次输入会话可用于以批次输入方式执行对话事务,其中一些或所有屏幕由会话处理。批次输入会话作为数据库表存储在数据库中,并在访问事务时用作内部表。
注意事项
- BDI 通过执行普通 SAP 事务(就像用户一样)来工作,但它会自动执行事务。在使用批次数据输入时,所有屏幕验证和业务逻辑验证都将完成。
- 它适用于输入大量数据。
- 无需手动交互
批次输入方法
SAP 提供了两种基本方法将遗留数据传输到 R/3 系统。
- 经典的批次输入方法。
- 调用事务方法。
经典批次输入方法
在此方法中,ABAP/4 程序读取外部数据到 SAP 系统,并将其存储在批次输入会话中。
创建会话后,您可以运行该会话以执行其中的 SAP 事务。
此方法使用函数模块 BDC_OPEN、BDC_INSERT 和 BDC_CLOSE。
批次输入会话可以 3 种方式进行处理
- 在前台
- 在后台
- 处理期间,显示错误
如果您想测试数据传输,应该在前台或使用错误显示来处理批次输入会话。
如果您想执行数据传输或测试其性能,应该在后台处理会话。
经典批次输入方法的注意事项
- 同步处理
- 传输多个事务的数据。
- 同步数据库更新。
- 为每个会话生成批次输入处理日志。
- 会话不能并行生成。
调用事务方法。
在此方法中,ABAP/4 程序使用 CALL TRANSACTION USING 语句来运行 SAP 事务。
整个批次输入过程在线上程序中进行
注意事项
- 更快的数据处理
- 异步处理
- 传输单个事务的数据。
- 不生成批次输入处理日志。
批次输入流程
您通常会观察到以下步骤来为您的组织开发批次输入
- 分析遗留数据。确定要传输的数据如何在 SAP 结构中映射。还要注意必要的数据类型或数据长度转换。
- 生成 SAP 数据结构供导出程序使用。
- 将数据导出到顺序文件。请注意,预定义的 SAP 批次输入程序需要字符格式。
- 如果未使用 SAP 提供的 BDC 程序,请编写自己的批次输入程序。根据情况选择合适的批次输入方法。
- 处理数据并将其添加到SAP 系统。
- 分析处理日志。对于没有正确日志的 CALL TRANSACTION 方法,请使用您的程序收集的消息。
- 根据过程分析结果,更正和重新处理错误数据。
编写 BDC 程序
您可能会观察到以下过程来编写您的 BDC 程序
- 分析要处理批次输入数据的事务。
- 决定要使用的批次输入方法。
- 从顺序文件中读取数据
- 执行数据转换或错误检查。
- 将数据存储在批次输入结构 BDCDATA 中。
- 为经典批次输入生成批次输入会话,或使用 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 始终以标准屏幕大小工作,而不管用户设置的屏幕大小如何。
创建批次输入会话
- 使用函数模块 BDC_OPEN_GROUP 打开批次输入会话。
- 对于会话中的每个事务
- 用 BDCDATA 填充值,以处理事务中的所有屏幕和字段。
- 使用 BDC_INSERT 将事务传输到会话。
- 使用 BDC_CLOSE_GROUP 关闭批次输入会话。
批次输入录制器
批次输入录制器(系统 > 服务 > 批次输入 > 录制器)会记录手动输入的事务,并创建一个批次输入会话,该会话稍后可以使用 SM35 执行。
- 通过选择批次输入初始屏幕上的“录制”按钮来开始批次输入录制器。
- 录制名称是用户定义的名称,可以与从录制创建的批次输入会话名称匹配。
- 输入 SAP 事务并开始过账事务。
- 过账完 SAP 事务后,可以选择“获取事务并保存”结束录制,或者选择“下一个事务”过账另一个事务。
- 保存录制后,您可以从录制创建批次输入会话和/或从录制生成批次输入程序。
- 现在可以像其他批次输入会话一样分析创建的批次输入会话。
- 批次输入录制器功能生成的程序是数据接口程序员的强大工具。它提供了一个坚实的基础,然后可以根据客户需求进行修改。