一、BDC概览
BDC(Batch DataCommunicationProgram,批量数据交换程序)是一种通过ABAP程序将资料批量输入系统的方法。它的工作原理是将用户繁荣的操作程序和步骤记录下来,然后依照流程逐步将指定的数据在指定的操作页面及栏位输入并执行。
优点:避免了手工进行一些重复性工作,提高效率并输入确保数据的完整性,采用交互用户所用的同一事务代码将数据录入到SAP系统。
何时使用:存在大量的重复业务,就会考虑使用BDC录屏或者符合应用于采用正常交互方式输入的数据的所有检查和控制。
BDC的定义
SAP系统提供的BDC有两种从其它SAP系统和非SAP系统向本系统传递数据的基本方法。这两种方法统称为“批输入”或“批数据通讯”。两种批输入方法都通过执行常规SAP事务进行工作,正如用户输入一样。批输入可自动执行事务,因此适用于输入以电子表格表格形式存在的大量数据。主要用于一些数据量大,但是对速度又要求不高的数据传输。
二、BDC的基本流程
BDC录制,记录屏幕操作--->产生相关程序记数据格式文件--->利用程序将相关单据信息读取到内标,并对内表数据进行调整逻辑处理(数据检查或数据转换)---->调用BDC录制程序导入数据---> 输出消息列表
主要事务代码: SHDB(录屏) SM35(查看会话)
例:MM02批量操作示例
1、进入SHDB 创建并点击开始记录
跳转到MM02事务代码,开始对操作的录制,注意不要做多余的操作。修改后保存跳转到下面的界面:
这个表格对应数据表如下:
2、创建程序
对于已经创建的录屏,可以生成程序代码程序中使用bdc dynpro和bdc field两个子程序,对BDCDATA表单进行赋值,之后使用表单调用事务代码。
FORM append_bdcdata .
CLEAR: BDCDATA, BDCDATA[] . "循环执行注意清空
LOOP AT GT_MATERIAL INTO GS_MATERIAL .
PERFORM APPEND_SCREEN USING 'SAPPLMGMM' '0060' .
PERFORM APPEND_FIELDS USING 'BDC_CURSOR' 'RMMG1-MATNR' .
PERFORM APPEND_FIELDS USING 'BDC_OKCODE' '=ENTR' .
PERFORM APPEND_FIELDS USING 'RMMG1-MATNR' GS_MATERIAL-MATNR .
PERFORM APPEND_SCREEN USING 'SAPLMGMM' '0070' .
PERFORM APPEND_FIELDS USING 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(01)' .
PERFORM APPEND_FIELDS USING 'BDC_OKCODE' '=ENTR' .
PERFORM APPEND_FIELDS USING 'MSICHTAUSW-KZSEL(01)' 'X' .
PERFORM APPEND_SCREEN USING 'SAPLMGMM' '4004' .
PERFORM APPEND_FIELDS USING 'BDC_OKCODE' '=BU' .
PERFORM APPEND_FIELDS USING 'MAKT-MAKTX' GS_MATERIAL-MAKTX .
PERFORM APPEND_FIELDS USING 'BDC_CURSOR' 'MARA-NTGEW' .
PERFORM APPEND_FIELDS USING 'MARA-BRGEW' GS_MATERIAL-BRGEW .
PERFORM APPEND_FIELDS USING 'MARA-NTGEW' GS_MATERIAL-NTGEW .
CALL TRANSACTION 'MM02' USING BDCDATA
MODE 'A'." 显示模式:A前台 N后台 E 只显示错误
ENDLOOP .
ENDFORM.
FORM APPEND_SCREEN USING VALUE(P_PROGRAM)
VALUE(P_DYNPRO) .
CLEAR BDCDATA .
BDCDATA-PROGRAM = P_PROGRAM .
BDCDATA-DYNPRO = P_DYNPRO .
BDCDATA-DYNBEGIN ='X' .
APPEND BDCDATA .
ENDFORM .
FORM APPEND_FIELDS USING VALUE(P_FIELD)
VALUE(P_VALUE) .
CLEAR BDCDATA .
BDCDATA-PROGRAM = P_FIELD .
BDCDATA-DYNPRO = P_VALUE .
APPEND BDCDATA .
ENDFORM .
填充的结构字段
调用函数,获取本地路径:
FORM get_filename USING i_file TYPE RLGRAP-FILENAME .
*1.获取本地文件路径
CALL FUNCTION 'F4_FILENAME'
* EXPORTING
* PROGRAM_NAME = SYST-CPROG
* DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = I_FILE .
ENDFORM.