设中国护士网为首页 | 中国护士网专注于知识的分享,因为专注,所以更好!
分享到:

SAP数据批量导入的常用方法

来源:中国护士网  作者:www.512test.com

在SAP项目实施时主要有三种批量导入方法:LSMW-----Legacy System Migration Workbench.
  The LSM Workbench is an R/3 based tool that support when transferring data from non-SAP systems to SAP R/3.
    T-code: LSMW
第二种: CATT
CATT(computer aided test tool) screen record, system will not create program.
    T-code: SCAT
第三种: BDC
    For batch input or change, system will create program, and you can change the program.
    T-code: SHDB

BDC导入

Batch Input是一种数据批量输入SAP系统的辅助程序,SAP系统的资料、格式可以通过Batch Input录入SAP系统

Batch Input的机制是模拟事务处理将数据录入R/3系统

Batch Input类似SAP的CATT,控制性更好,处理能力更强

1、首先我们需要把需要批导入事务的操作步骤记录下来,可以用T-CODE“SHDB”来记录。

在COMMAND LINE中输入“SHDB”。

2、进入TRANSACTION RECORDER界面

3、点“NEW RECORDER”创建一个记录,现在以修改订单为例,键入记录名“ZAMAO”,输入事务代码“VA02”,

然后“START RECORDING”。

6、现在来增加一下订单的PO DATE。

7、填入“2006.10.01”,点“保存”。

8、这样就完成了一个最最简单的BDC录取工作,录完之后会出现系统运行的操作的跟踪,包括程序号,屏幕号,字段名,值等等,下面的任务是根据这些写到程序里面以完成SAP自动跑订单修改的这一动作。

* BDC table
DATA: t_bdc LIKE bdcdata  OCCURS 0 WITH HEADER LINE,
t_bdcmsg LIKE bdcmsgcoll  OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF t_log OCCURS 0,
information(289) TYPE c,  "
END OF t_log.
DATA: v_mode TYPE c VALUE 'N'.

其中TABLE t_bdc中记录的具体的操作步骤,而TABLE t_bdcmsg是记录系统返回的信息,成功与否都记录到自定义的信息表t_log中。

FORM. fm_set_bdc TABLES t_bdc STRUCTURE bdcdata
USING u_sign TYPE c
u_par1
u_par2.

CLEAR: t_bdc.
IF u_sign = 'X'.
t_bdc-program = u_par1.
t_bdc-dynpro = u_par2.
t_bdc-dynbegin = u_sign.
ELSE.
t_bdc-fnam = u_par1.
t_bdc-fval = u_par2.
ENDIF.
APPEND t_bdc.
ENDFORM. 

PERFORM. fm_set_bdc:
TABLES t_bdc USING 'X'  'SAPMV45A'  '0102',
TABLES t_bdc USING ' '  'BDC_OKCODE'  '/00',
TABLES t_bdc USING ' '  'VBAK-VBELN'  it_display-vbeln,
TABLES t_bdc USING 'X'  'SAPMV45A'  '4001',
TABLES t_bdc USING ' ' '  VBKD-BSTDK'  '2006.10.01'.

因为此处是修改操作,所以要切记写入的只是你修改的数据,千万别把订单本来的数据也写入t_bdc,如果写入则会把需要修改的所有订单都该成举例的订单的数据,而我们需要修改的仅仅是增加一个PO DATE“2006.10.01”。

然后是调用事物代码:

CALL TRANSACTION 'VA42'
USING t_bdc
MODE v_mode "Background performance
UPDATE 'S' "local updata
MESSAGES INTO t_bdcmsg. "all message table

最后是收集系统信息(成功与否,要是失败,失败的原因)并输出到SAP程序屏幕

READ TABLE t_bdcmsg WITH KEY msgtyp = 'S'
msgid = 'V1'
msgnr = '311'.  "批导入成功的标志,可以自己debug表t_bdcmsg中去找.
IF sy-subrc EQ 0.
CONCATENATE '订单号码:'
it_display-vbeln
',项目号:'
it_display-posnr
'修改成功' INTO t_log.
APPEND t_log.
CLEAR t_log.
ELSE.


LOOP AT t_bdcmsg.
IF t_bdcmsg-msgtyp = 'E'
OR t_bdcmsg-msgv1 <> ''
OR t_bdcmsg-msgv2 <> ''
OR t_bdcmsg-msgv3 <> ''
OR t_bdcmsg-msgv4 <> ''.
MESSAGE ID t_bdcmsg-msgid “收集错误信息,并写入自定义的表t_log中。
TYPE 'S'
NUMBER t_bdcmsg-msgnr
WITH t_bdcmsg-msgv1
t_bdcmsg-msgv2
t_bdcmsg-msgv3
t_bdcmsg-msgv4
INTO t_log-information.
CONCATENATE '订单号码:'
it_display-vbeln
',项目号:'

it_display-posnr
'出错:'
t_log-information
INTO t_log-information.
APPEND t_log.
CLEAR t_log.
ENDIF.
ENDLOOP.
ENDIF.

LOOP AT t_log.  "显示出错信息

WRITE:/ t_log-information.

ENDLOOP.

CATT操作具体方式如下:
1、录制CATT(SCAT>TCD,输入事务码,按前台操作方式操作一遍,在需要输入的地方输入相关内容,直至存盘退出;
2、定义相关需输入字段的名字(在SCAT中选中所保存的CATT,点击修改,双击TCD,双击相关条目,双击相关屏幕的字段进行定义,在此过程中对于不需要的屏幕可以跳过,对于需确认的屏幕可以插入OK code,最后保存,CATT定义即告完成);
3、导出格式文件:在SCAT中,选中所保存的CATT,执行菜单“转到>变式>输出缺省”,系统会导出一个TXT格式的文件;
4、填写数据到该TXT文件:用Excel导出上面导出的文件,在第五行以后的相应列逐行输入每行记录的相关内容(Excel的复制类操作不用讲了),对于内容一样的部分可以不输,以默认值的形式(在录制定义CATT时输入或执行CATT时输入),数据输入完成后,将该文件仍保存为txt格式;
5、执行CATT:在SCAT中,执行所保存的CATT,日志格式及处理方式按需选择,变式选择自文件外部,选择相应的文件,如有必要,在下面的相关字段可以输入缺省值,执行即可。
6、三种处理方式的差别:前台,逐个数据需要你确认,你可能需要不断点击鼠标或按回车,但较直观,不易出错;后台,自动逐条执行,跳过出错条目,出错条目在日志中会体现;错误:自动逐条执行,在出错时暂停,等待确认,建议使用此种方式。

LSMW导入