BDC(Batch Data Communication Program,批量数据交换程序),是一种通过ABAP程序将资料批量输入系统的方法,工作原理:将用户繁荣的操作程序和步骤记录下来,然后依照流程逐步将指定的数据在指定的操作页面及栏位输入并执行。优点如下:1、避免了手工进行一些重复性工作,提高效率 2、输入确保数据的完整性,采用交互用户所用的同一事务代码将数据录入到SAP系统
何时使用?
SAP 系统提供的BDC有两种,从其它 SAP 系统和非 SAP 系统向本系统传递数据的基本方法。这两种方法统称为“批输入”或“批数据通讯”。两种批输入方法都通过执行常规 SAP 事务进行工作,正如用户输入一样。但是,批输入可自动执行事务,因此适用于输入以电子表格表格形式存在的大量数据。BDC是SAP常用的一种数据传输方法。用于一些数据量大,但是对速度又要求不高的数据传输。
定义一个BDC程序的基本流程
- BDC录制,记录屏幕操作
- 产生相关的程序及数据格式文件
- 利用程序将相关单据信息读取到内表,并对内表的数据进行调整逻辑处理(数据检查或数据转换)
- 调用BDC录制程序导入数据
- 输出消息列表
主要事务代码:SHDB(录屏)、 SM35(查看会话)
BDC实现的两种方式 CALL TRANSACTION 、BATCH INPUT SESSION
SHDB的使用
BDCDATA
字段名称 | 类型 | 长度 | 描述 | 说明 |
PROGRAM | CHAR | 8 | 程序 | 所操作的事务所对应的程序名称 |
DYNPRO | NUMC | 4 | 界面编号 | 可能是主屏幕,也可能是子屏幕 |
DYNBEGIN | CHAR | 1 | 是否是界面开始一行 | 第一行为’X’,否则为’’ |
FNAM | CHAR | 35 | 字段名称 | 屏幕操作中具体对应的动作,与F1查到的字段名称一致 如:BDC_CURSOR,BDC_OKCODE等 |
FVAL | CHAR | 80 | 字段值 | 字段名所对应的参数 如:按钮的命令,分页签的名称等 |
CALL TRANSACTION TCODE USING BDCDATA
MODE MODE
UPDATE UPDATE
MESSAGES INTO MESSTAB.
MODE A: 无论出错与否,每个页面都显示分步显示 E: 只显示出错误时的页面 N: 无论出错与否都不显示页面,后台执行
UPDATE S: 数据更新完成后执行下一个操作 同步 A: 马上执行下一个操作 异步 L:本地
文件获取方式
- 使用函数WS_FILENAME_GET,获取文件路径
- 使用函数GUI_UPLOAD,上传txt文件
- 使用函数TEXT_CONVERT_XLS_TO_SAP,上传excel文件
文件的路径的搜索帮助:弹出打开文件的窗口,默认路径在D盘,文件类型是txt,还有窗口的名称
DATA lt_file_table TYPE filetable.
DATA lv_rc TYPE i.
CALL METHOD cl_gui_frontend_services=>file_open_dialog
EXPORTING
window_title = 'Select File'
default_filename = '*.txt'
initial_directory = 'D:\'
multiselection = ''
CHANGING
file_table = lt_file_table
rc = lv_rc.
READ TABLE lt_file_table INTO p_file INDEX 1.
函数GUI_UPLOAD:上载文件里的内容到内表
或者用
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename = p_path
filetype = 'DAT'
has_field_separator = cl_abap_char_utilities=>horizontal_tab
CHANGING
data_tab = it_tab.
下载,生成一个文件在本地(有则重新写文件,无则创建文件),文件的内容来自内表
CALL METHOD cl_gui_frontend_services=>gui_download
EXPORTING
filename = l_out_path
write_field_separator = 'X'
CHANGING
data_tab = it_out
EXCEPTIONS
file_write_error = 1
file_not_found = 2.