ABAP程序使用IDOC导入业务数据
(2012-01-31 21:48:33)
标签:
sap导数接口文件idocinboundit |
分类: SAP IDOC |
在导入数据的各种方法中,IDOC是一种性能较好的方式,但是由于需要事先配置一下及自定制字段的问题,项目中LSMW+BDC较多,使用LSMW+IDOC进行批导数据的较少。
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.
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.
最近一个朋友有这样的一个场景,使用文本文件导入一批数据到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'
2、进行IODC处理,此时BD87可以查看处理上步创建的idoc,以下代码功能同BD87
CALL FUNCTION 'IDOC_START_INBOUND'
此时可以通过we02查看idoc inbound处理过程。
以上是导数程序,接口程序只需要做一个合适的变式,将此程序做成后台作业就行了。
如果有PI/XI中间件系统,以上接口实现会变得更简单。
以上两个function在函数组EDIR中,可以看一下此函数组中其他对象的功能。
另外,需要注意的是,据说函数组EDIN中的IDOC_INBOUND_ASYNCHRONOUS及其他function取代了上述两个function的功能,未找到官方说明,有时间研究下再聊。
前一篇:新年快乐