加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ABAP程序使用IDOC导入业务数据

(2012-01-31 21:48:33)
标签:

sap

导数

接口

文件

idoc

inbound

it

分类: SAP IDOC
在导入数据的各种方法中,IDOC是一种性能较好的方式,但是由于需要事先配置一下及自定制字段的问题,项目中LSMW+BDC较多,使用LSMW+IDOC进行批导数据的较少。
最近一个朋友有这样的一个场景,使用文本文件导入一批数据到SAP系统,数据量庞大,拟定使用IDOC来实现(为什么不用BDC或BAPI,我们不做讨论)。并且,做一个这样的接口,由第三方系统通过FTP FILE的方式将数据发送到SAP服务器,然后通过接口程序定期转换成IDOC导入到SAP系统;
这两种方法需要写的程序是一致的。
首先,这是一个IDOC INBOUND场景,需要做好INBOUND的配置,不详述。
然后需要写一个程序,读取文本文件,然后创建对应IDOC,然后进行IDOC INBOUND 处理。
IDOC相关的代码如下:
1、创建IDOC
CALL FUNCTION 'IDOC_INBOUND_WRITE_TO_DB'
    EXPORTING
      pi_do_handle_error      = v_do_handle_error
      pi_return_data_flag     = ' '
    IMPORTING
      pe_idoc_number          = control_record_db_in-docnum
      pe_inbound_process_data = v_inbound_process_data_in
    TABLES
      t_data_records          = i_data_records_db   "IDoc Data 
    CHANGING
      pc_control_record       = control_record_db_in  "Control Data
    EXCEPTIONS
      idoc_not_saved          = 1
      OTHERS                  = 2.
2、进行IODC处理,此时BD87可以查看处理上步创建的idoc,以下代码功能同BD87
CALL FUNCTION 'IDOC_START_INBOUND'
         EXPORTING
              pi_inbound_process_data = v_inbound_process_data_in
              pi_called_online        = c_check     "'X'
              succ_show_flag          = c_check     "'X'
         TABLES
              t_control_records       = i_control_records
         EXCEPTIONS
              OTHERS                  = 1.
此时可以通过we02查看idoc inbound处理过程。
以上是导数程序,接口程序只需要做一个合适的变式,将此程序做成后台作业就行了。
如果有PI/XI中间件系统,以上接口实现会变得更简单。
以上两个function在函数组EDIR中,可以看一下此函数组中其他对象的功能。
另外,需要注意的是,据说函数组EDIN中的IDOC_INBOUND_ASYNCHRONOUS及其他function取代了上述两个function的功能,未找到官方说明,有时间研究下再聊。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有