
BDC程序
一、介绍
安装SAP后需要从源系统或其他外部系统中以适合SAP数据的形式读取多年累积的数据。当然,如果与外部系统连接使用SAP,则需要持续使用这种操作。此时需要生成传送数据的程序,并在这时可以使用 DataTransfer Workbench
。DataTransfer Workbench
可认为是传送数据所需操作的工具。从源系统中抽取数据后生成符合 SAP格式的数据传送到SAP 中。其传送数据的方法有 BAP
、Batch Input
、Direct Input
等技术。在本书中着重了解其中的 Batch Input 方法及为了使用 Batch Input 所需要的 BDC 程序的创建方法。
一般把 Batch Input
程序称为 BDC(Batch Data Communication)程序。BDC 与其说是 ABAP程序,更接近于工具。但是,在实际业务中经常使用,是比较重要的内容,因此着重于概念讲解。在这里需要明确解释一个问题。有人会认为,在T-CODE:SE11
中可以直接修改表数据,没必要创建 BDC 等程序输入数据。这是因为SAP中使用的数据是以关系型 DB为基准的,因此考虑到数据特性,数据分散保存在多个表中。当修改其中一个表的数据时,很难判断给其他关系型表造成的影响。如果不是 SAP,而是其他系统,则即使是关系型 DB也不会有影响。这是因为,其他系统都是开发者自己设计整个ERD来开发程序的,因此明确知道哪个表中存在哪个数据。但是,SAP公司不提供 ERD,因此很难分析程序中包含的复杂逻辑相关的数据。如[图12-8]所示,在TCODE:SE11中可以查询外部键关系,但是无法查询没有设计外部键的表信息。在这种背景下,可以利用 BDC 来执行经常使用的事务码及画面生成或修改数据。此外,利用事务码修改数据会自动保存1og信息,因此有无法任意操作数据的优点。 BDC 程序分为生成
Batch Input
会话执行的方法及在程序内使用CALL TRANSACTOIN
语句调用的方法两种。
利用[图 12-9]的左图说明的 Batch Input 方法,则 ABAP 程序会读取外部数据(文件等形式)构成 BDC 表。先保存到 Batch Input 会话中,后传递到 Queue 中,然后生成会话,以 System
、Services
、Batch input
或者 Background 操作会话记录,通过 SAP 事务码传递到系统中。
[图 12-9]的右图是在 ABAP 程序内利用CALL TRANSACTION 语句执行 SAP 事务码的方法。为了让外部数据在后续流程中继续使用,因此不存储在会话中,其所有BatchInput 过程在程序内实时执行。下面详细介绍这两种方法。
二、利用CALL TRANSACTION
CALLTRANSACTION是将用户执行事务码输入画面值的过程用程序实现,即以EXCLE 文件形式输入到标准程序的方法。在实务中经常使用,不用生成BatchImnput Session,在 ABAP 程序内用 CALLTRANSACTION 语句输入数据。
CALL TRANSACTION <tcode>
USING <bdc_tab>
OPTIONS FROM <ctu_params>
MODE <mode>
UPDATE <update>
MESSAGES INTO MESSTAB.
IF SY-SUBRC >0.
<Error handling>.
ENDIF.
下面介绍上面的语句中使用的各选项。<tcode>
: 事务码。<bdc_tab>
: BDCDATA 结构的内表传递给事务码。<ctu_params>
: 适用于 Rel4.6B 以上版本,用于设置 CALL TRANSACTION 语句选项,属性参见[表12-8]。 CTU PARAMS选项DISMODE与CALLTRANSACTION的
<mode>
有相同的功能,因此不能重复使用。UPDMODE属性也如此。 Return code:执行BDC后给系统变量SY-SUBRC返回结果,见[表12-11]。
MESSTAB:保存 BDC执行时发生的信息的BDCMSGCOLL类型内表,其系统变量参见[表 12-12]。
三、录屏及创建BDC程序
为了执行 Batch Input 需要有 Batch Input 程序。要制作此程序需要知道传送的数据执行什么事务码(即需要事先执行录屏操作)。录屏(Recording)操作的主要目的就在于制作 BDC程序。
为了创建 BDC 程序,下面简单介绍录屏操作。
1.用途
- 创建执行 Batch Input 或者 Call Transaction 的传递数据的程序。
- 创建 Batch Input 会话。
- 创建测试数据。
- 创建 Function MModule。
2.特性
无法录制F1、F4(PROCESS ON HELP-REQUEST
、PROCESS ON VALUE-REQUEST
)Error 或者 Waring 信息也无法录制,其目的在于使程序在现画面成功执行到下一个过程。 [图 12-10]说明用户执行事务码的录屏过程。画面字段称为字段名(FieldName),画面 输入的值称为字段值(
Field Value
)。BDC OKCODE
是在画面上执行的命令(OKCODE)BDC CURSOR
是退出画面之前的鼠标位置。另外,RP50G-PERNR
是输入的员工编号的画面Input Field
,且被输入的值为 1000。
3.Transaction Recorder 执行
下面尝试在 Transaction Recorder 中修改物料主数据的录屏操作。BDC程序根据客户或者开发者属性会有多种形式。因此,不详细介绍关于 BDC 程序的代码。通过 12.7.2节理解 BDC概念以后,通过实际的标准程序进行测试最易掌握。
4.利用Transaction Recording生成 BDC 程序
在前面生成的录屏通过创建程序的功能尝试创建BDC程序。