一开始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)数据自动更新