SAP-ABAP开发-BDC

一、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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值