Daniel_Fang 发表于 2013-1-28 19:36:57

LSMW/eCATT/BDC

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
                  withds_name= v_bdcfile
                  withfl_check = space
                  withos_xon   = space
                  withcallmode =lv_mode
                  withmax_comm = '1000'
                  withpa_xprot = space
                  withxlog   = 'X'. " xpop/xlog/xinf
if lv_mode = 'B' and sy-batch = 'X'.
    submitrsbdcsub 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
    elseifnot 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:                                       用户数据小数点(英文句号/逗号)
页: [1]
查看完整版本: LSMW/eCATT/BDC