一开始badi、BAPI、LSMW关系极其混乱,好像都是传输数据, just transfer data from SAP system to non-SAP system or transfer data from SAP system to SAP system.......confused.

他们仿佛都是异曲同工之妙,但是既生瑜何生亮。So,

经过一番对混乱的信息来源进行筛选后,我还是得从概念入手:

在SAP系统中,批处理操作有多种方法。如果是对一个事物码(TCODE)进行批处理操作,常用的是LSMW。

LSMW全称是Legacy System Migration Workbench。它能够对静态数据(如各个主数据)、动态数据(如初始化库存)、业务数据(如销售订单)等进行成批操作,是上线数据准备的主力武器。

只能导入SAP系统固有类型的主数据,例如,Customer Master,Material Master,FINANCIAL DOCUMENT GL ACCOUNT 等等。如果自己创建了一个ABAP程序,LSMW就不能实现对它的控制。

第一次进入LSMW,会有提示框 The LSMW is an R/3 based tool that supports you when transferring data from non-SAP system to SAP R/3。

。。。waiting for update

原则是能用BAPI就不用bdc。一般bdc用于一些无关紧要的、边角的批数据的处理,

简单地讲BDC就是先把相应事务的处理过程录制下来,然后让系统自动执行特定的事务过程,在执行的过程中把需要传输的数据输入进去。所以可以看出BDC的优点是并不要求使用者对业务知识有多了解,只要相应的过程可以录制下来,就可以反复执行录制的过程,把数据输入系统。但BDC有一个缺点,就是输入数据时,如果项目栏的记录很多而需要换页时,不同的程序可能换页方式不同,并且不同的显示器所显示的行项目数量也不一样多,会出现执行不下去或者遗漏数据的情况,这个问题比较棘手。

BDC: Batch Data Conversion.     BDC的流程:

1.Tcode:SHDB

进入Transaction Recording界面,选择new recording,输入一个Tcode ,开始录屏。(不要有错误操作)

2.录完屏后,保存,后退。回到Transaction Recording界面,选择‘program',生成一个程序(source code),在源程序里修改你要的的代码。这里一般用CALL FUNCTION GUI_UPLOAD,上传文件。执行program,上传数据有2种方式:

1)Generate session

首先生成一个会话,像其它大方式的上传数据一样, 在之后通过SM35 执行此会话进行真正的数
据上传

2)call transation

当执行BDC 程序时就直接上传数据

session和transaction 的区别:

Session:1)同步处理

2)上传大量的数据

3)速度慢

4)错误可以被创建

5)生成Session后,数据才可以被更新

Transaction:1)异步处理

2)上传少量数据

3)速度快

4)错误需要外部处理

5)数据自动更新

05-11 15:08