LSMW
Legacy System Migration Workbench (T-code: LSMW)
LSMW, 是SAP推荐用来从旧的系统或非SAP系统把大批量或周期性的数据迁移到SAP的主力工具,类似于eCATT/sCATT,其优点可以在一个Session中处理大批量数据,并灵活易学易用。如果用BDC和eCATT只能根据定制好的画面输入参数。一旦没有这个值系统就会报错。比喻我们根据业务对FI Account Document或者主数据一些参数作了扩展,一旦参数缺失或者不匹配,不得不终止Session,通过SM35手动去更正或者重新录屏。LSMW具有一般的通用性,他导入模板的设计过程包括15个步骤,每个都是独立的单元并可进行单独的更新和修改,而不影响其它的模块只需作一些调整作出相应mapping,将必要的数据指定对应的字段就可行了,无需额外的编码。
当然,LSMW局限在于只能导入固定类型的主数据,如Customer/Vendor Master,Material Master,Financial Document, G/L Account。如果是自定义的ABAP程序来导入主数据就行不通了。同样做了一个FI Account Document的例子,对出现重复的统计的Line Item时显得也不是特别得心应手。
eCATT
extended Computer Aided Test Tool(T-code:SECATT)
eCATT是SAP自带的功能测试工具,主要目标用来作SAP业务流程的自动化测试,每个测试都会生成一个详细的日志来显示测试流程和测试结果。和CATT相比,CATT操作简单,类似于BDC的录屏功能,用于常用的简单业务数据导入,基本已被eCATT完全取代。除了CATT功能之后,eCATT主要应用于基于GUI Windows/Gui Java自动化测试,同时也为外部工具提供了第三方接口(获BC-eCATT授权)。所有的测试脚本,无能是eCATT自已生成的还是外部工具的他们都应该具有相同的数据对象类型,与SAP结合在一起并保存在相同的位置。在R/3的功能测试中,eCATT录屏功能简单实用,测试脚本、测试数据、系统数据分别存放,可重复使用,并附有详细测试报告以及纠错功能,作为自带工具简单实用。对于WEB方面的测试的话就要借用第三方的测试软件,如知名的Mercury的QTP。
BDC
Batch Data Conversion (T-code: SHDB)
BDC同样是通过SHDB把用户一次性的业务操作记录全部记录下,然后供用户使用。开发人员可以生成程序构建数据源。只要存在重复的业务操作,自然会想到BDC录屏。
实事上无论上面几种可供重复业务操作的技术,每次只能根据录屏的定制,作为开发人员只要在项目的前期分析明确,下面的SAP自带程序其灵活性比BDC来得更为直接。例如创建FI Account Document:
1, RFBIBL00
submit rfbibl00 and return
with ds_name = v_bdcfile
with fl_check = space
with os_xon = space
with callmode = lv_mode
with max_comm = '1000'
with pa_xprot = space
with xlog = 'X'. " xpop/xlog/xinf
if lv_mode = 'B' and sy-batch = 'X'.
submit rsbdcsub with mappe = c_sessn
with von = sy-datum
with bis = sy-datum
with fehler = space
and return.
endif.
2,POSTING_INTERFACE_DOCUMENT
call function 'POSTING_INTERFACE_DOCUMENT'
exporting
i_tcode = 'FB01'
importing
e_subrc = lv_subrc
e_msgid = lv_msgid
e_msgty = lv_msgty
e_msgno = lv_msgno
e_msgv1 = lv_msgv1
e_msgv2 = lv_msgv2
e_msgv3 = lv_msgv3
e_msgv4 = lv_msgv4
tables
t_ftpost = it_ftpost
t_fttax = it_fttax
t_blntab = it_xblntab
exceptions
others = 1.
call function 'FORMAT_MESSAGE'
exporting
id = lv_msgid
lang = sy-langu
no = lv_msgno
v1 = lv_msgv1
v2 = lv_msgv2
v3 = lv_msgv3
v4 = lv_msgv4
importing
msg = lv_msg
exceptions
not_found = 1
others = 2.
* Posting successfully
if sy-subrc = 0 and lv_msgty = 'S'.
it_success_list-docno = lv_msgv1.
it_success_list-message = lv_msg.
append it_success_list.
* Failed Posting
elseif not lv_msgty is initial .
it_error_list-message = lv_msg.
append it_error_list.
endif.
refresh: it_ftpost,
it_fttax,
it_xblntab.
POSTING_INTERFACE_START用于FI FM的开始,可以设置Session名称
POSTING_INTERFACE_END 提交FI FM,遇错则可以通过SM35纠正。
3 IDOC
通过配制ALE运用SAP自带的生成IDOC数据的FM也可实现
call function 'IDOC_CREATE_ON_DATABASE'
exporting
idoc_status = wa_edids
error_occured = l_error_occured
tables
idoc_data = it_edidd
changing
idoc_control = wa_edidc
exceptions
idoc_input_inconsistent = 1
others = 2 .
实事上LSMW与RFBIBL00, BDC与POSTING_INTERFACE_DOCUMENT如果看其实现代码,你会发现他们是相似的。当然,写这样的代码大部分时间主要是花费在数据转换上面。
FWOS_CURRENCY_DECIMALS_READ: 货币的小数点位数确认
CONVERT_DATE_TO_EXTERNAL: 转换成外部日期格式
USR01-DCPFM: 用户数据小数点(英文句号/逗号)