目录
BDC:批导入(Batch Data Conversion)
在SAP系统里,由于某种原因,可能需要重复输入数据,(数据不同,但是操作是相同的,典型的情形就是切换系统的时候,旧系统的数据需要导入SAP)。
最标准、最规范的做批导入的方式是用BAPI(因为BAPI可以测试,保证无错误后,才真正往系统内进行导入),而BDC要到保存后才知道是否有错误。
但是BDC比BAPI更灵活简单,因为BAPI是SAP自己写的函数,有些操作并没有写在其中,而BDC可以录制各种各样的BDC。
一、BDC简述
1.1、批导入过程
- 创建一个批导入的模板 :
- 进入BDC工作台,输入要批导入的T-CODE,输入值之后,将当前T-CODE执行完毕,最后保存,一条模板记录就完成了。这样,BDC记录了所有以上在该T-CODE中录入的数据以及操作的过程。
- 处理批导入:
- 在程序中,将要批导入的数据整理,将数据循环填充在叫“BDCData”的内表里,最后用CALL TRANSCTION <t-code >using bdcdata命令来提交本次批导入的重复动作。
1.2、执行方式
- 前台 A
- 后台 N
- 在处理过程中显示错误信息 E
二、创建BDC——SHDB
第一步:录屏
在SHDB:选择‘新建记录’按钮
第二步:命名新记录,并输入相应的事务码
第三步:执行相应的事务操作。
下面的执行过程与相应事务的处理相同,事务操作完成之后,系统会提示你要不要保存输入的数据,选择‘是’。
第四步:生成代码段
自动生成BDC程序,方法是选择相应的记录,然后选择‘Program’按钮,系统会根据所选择的记录,自动生成一个Report程序,可根据该程序编写你自己的程序。
三、执行BDC
CALL TRANSACTION TCODE USING BDCDATA
MODE CTUMODE
UPDATE CUPDATE
MESSAGES INTO MESSTAB.
参数说明:
TCODE:相应事务的事务码
MODE: A:显示所有屏幕
E: 只显示错误屏幕
N: 不显示屏幕
UPDATE:S: 同步的更新(数据量不大时选S)
A: 异步的更新(数据量比较大时选A)
L: 本地的更新(一般不用)
MESSAGES:用于存放消息,系统中定义了一个标准的消息结构BDCMSGCOLL,用于存放消息。如果在调用事务时指定了该表,那么不管是否有错误,相应的消息都会进入内表MESSTAB 。
3.1、BDCDATA的结构
- 定义变量
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
- 设置屏幕
*&---------------------------------------------------------------------* *& 添加Program/DynPro操作到BatchInput序列的内部表BDCDATA * *& PROGRAM - 程序名(长度为8的字符串) *& DYNPRO - 画面号 * *&---------------------------------------------------------------------* FORM BDC_DYNPRO USING PROGRAM DYNPRO. CLEAR BDCDATA. BDCDATA-PROGRAM = PROGRAM. BDCDATA-DYNPRO = DYNPRO. BDCDATA-DYNBEGIN = 'X'. APPEND BDCDATA. ENDFORM.
- 设置屏幕字段
*&---------------------------------------------------------------------* *& 添加屏幕数据操作到BatchInput序列的内部表BDCDATA * *& FNAM - 屏幕项目名 * *& FVAL - 填写项目值 * *&---------------------------------------------------------------------* FORM BDC_FIELD USING FNAM FVAL. CLEAR BDCDATA. BDCDATA-FNAM = FNAM. BDCDATA-FVAL = FVAL. APPEND BDCDATA. ENDFORM.
- 调用2、3的子例程,将所有的屏幕号和屏幕字段以及屏幕按钮添加到BDCDATA里
BDCDATA里。 PERFORM BDC_DYNPRO USING 'SAPLSUU5' '0050'. PERFORM BDC_FIELD USING 'BDC_CURSOR‘ 'USR02-BNAME'. …..
- 调用事务
CALL TRANSACTION <transaction code> USING <BDCDATA table> MODE <display mode> UPDATE <update mode> MESSAGES INTO <message table> .
程序:ZPROGAM_F007
3.2、分析数据结构
- 可以通过在屏幕字段上按”F1“,然后查看其技术信息获得字段信息
- 一般我们通过工具来进行辅助分析:
- SHDB - Batch Input Transaction Recorder
- SM35 - Batch Input Monitoring