Skip to content
关注公众号,可咨询工作中遇到的问题、获取学习资料、掌握行业资讯

BDC程序

一、介绍

  安装SAP后需要从源系统或其他外部系统中以适合SAP数据的形式读取多年累积的数据。当然,如果与外部系统连接使用SAP,则需要持续使用这种操作。此时需要生成传送数据的程序,并在这时可以使用 DataTransfer WorkbenchDataTransfer Workbench 可认为是传送数据所需操作的工具。从源系统中抽取数据后生成符合 SAP格式的数据传送到SAP 中。其传送数据的方法有 BAPBatch InputDirect 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信息,因此有无法任意操作数据的优点。
alt text   BDC 程序分为生成 Batch Input 会话执行的方法及在程序内使用CALL TRANSACTOIN语句调用的方法两种。
  利用[图 12-9]的左图说明的 Batch Input 方法,则 ABAP 程序会读取外部数据(文件等形式)构成 BDC 表。先保存到 Batch Input 会话中,后传递到 Queue 中,然后生成会话,以 SystemServicesBatch input 或者 Background 操作会话记录,通过 SAP 事务码传递到系统中。
  [图 12-9]的右图是在 ABAP 程序内利用CALL TRANSACTION 语句执行 SAP 事务码的方法。为了让外部数据在后续流程中继续使用,因此不存储在会话中,其所有BatchInput 过程在程序内实时执行。下面详细介绍这两种方法。
alt text

二、利用CALL TRANSACTION

  CALLTRANSACTION是将用户执行事务码输入画面值的过程用程序实现,即以EXCLE 文件形式输入到标准程序的方法。在实务中经常使用,不用生成BatchImnput Session,在 ABAP 程序内用 CALLTRANSACTION 语句输入数据。

abap
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]。
alt text   CTU PARAMS选项DISMODE与CALLTRANSACTION的<mode>有相同的功能,因此不能重复使用。UPDMODE属性也如此。 alt text   Return code:执行BDC后给系统变量SY-SUBRC返回结果,见[表12-11]。 alt text   MESSTAB:保存 BDC执行时发生的信息的BDCMSGCOLL类型内表,其系统变量参见[表 12-12]。 alt text

三、录屏及创建BDC程序

  为了执行 Batch Input 需要有 Batch Input 程序。要制作此程序需要知道传送的数据执行什么事务码(即需要事先执行录屏操作)。录屏(Recording)操作的主要目的就在于制作 BDC程序。
  为了创建 BDC 程序,下面简单介绍录屏操作。

1.用途

  • 创建执行 Batch Input 或者 Call Transaction 的传递数据的程序。
  • 创建 Batch Input 会话。
  • 创建测试数据。
  • 创建 Function MModule。

2.特性

  无法录制F1、F4(PROCESS ON HELP-REQUESTPROCESS ON VALUE-REQUEST)Error 或者 Waring 信息也无法录制,其目的在于使程序在现画面成功执行到下一个过程。   [图 12-10]说明用户执行事务码的录屏过程。画面字段称为字段名(FieldName),画面 alt text   输入的值称为字段值(Field Value)。BDC OKCODE是在画面上执行的命令(OKCODE)BDC CURSOR 是退出画面之前的鼠标位置。另外,RP50G-PERNR是输入的员工编号的画面Input Field,且被输入的值为 1000。

3.Transaction Recorder 执行

  下面尝试在 Transaction Recorder 中修改物料主数据的录屏操作。BDC程序根据客户或者开发者属性会有多种形式。因此,不详细介绍关于 BDC 程序的代码。通过 12.7.2节理解 BDC概念以后,通过实际的标准程序进行测试最易掌握。 alt text

4.利用Transaction Recording生成 BDC 程序

在前面生成的录屏通过创建程序的功能尝试创建BDC程序。 alt text