如何实现SAP系统数据库表导入导出功能
这两天老婆一直开玩笑的跟我说,啥时候出自己的处女作啊,我说那不叫处女作,该叫处男作,哈哈。废话少说了,发第一篇文章就是关于技术的,是因为我这两天一直折腾SAP系统的数据库导入导出功能。哎,命苦啊,客户非得需要在两个SAP系统上同步产品配置,而这些配置都是放在数据库中的。开始还以为 SAP自带工具可以导出导入数据库表,研究了半天发现,这么常用的功能SAP竟然不提供,还得自己写ABAP代码实现,这不明摆着为难我吗?好吧,我认了,还好我是一把快刀,很快就把它搞定,测试通过。这儿我就写出来跟大家分享一下。
导出功能:调用GUI_DOWNLOAD function 从数据库中导出到一个文件里,可以是txt,excel等格式,在这个例子中,我们把它存作txt文件。
DATA:
itm_perd LIKE /IBMMON/ITM_PERD
OCCURS 0 WITH HEADER LINE.
* Export data from /IBMMON/ITM_PERD into local files begin
SELECT * FROM /IBMMON/ITM_PERD INTO TABLE itm_perd.
CALL FUNCTION ‘GUI_DOWNLOAD’
EXPORTING
filename = itm_perd_file
filetype = ‘ASC’
write_field_separator = ‘#’
codepage = ‘1101′
TABLES
data_tab = itm_perd
EXCEPTIONS
file_open_error = 1
file_write_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
msg ‘E’ 045 ‘/IBMMON/ITM_PERD’ space space.
EXIT.
ENDIF.
* Export data from /IBMMON/ITM_PERD into local files end
导入功能:调用GUI_UPLOAD function从txt文件中读取数据,然后把数据更新到数据库中,如果失败的话,rollback所有记录。
DATA:
BEGIN OF it_datatab OCCURS 0,
row(5000) TYPE C,
END OF it_datatab.
DATA:
itm_perd LIKE /IBMMON/ITM_PERD OCCURS 0 WITH HEADER LINE.
* begin to import /IBMMON/ITM_PERD table
REFRESH it_datatab[].
CALL FUNCTION ‘GUI_UPLOAD’
EXPORTING
filename = itm_perd_file
filetype = ‘ASC’
TABLES
data_tab = it_datatab
EXCEPTIONS
file_open_error = 1
file_write_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
upd_fail_bool = ‘X’.
msg ‘E’ 047 itm_perd_file space space.
EXIT.
ENDIF.
* delete all the records of /IBMMON/ITM_PERD table.
DELETE FROM /IBMMON/ITM_PERD.
CLEAR upd_fail_bool.
LOOP AT it_datatab.
CLEAR itm_perd.
SPLIT it_datatab AT c_tab INTO itm_perd-funcname
itm_perd-sitperiod period.
itm_perd-period = period.
APPEND itm_perd.
ENDLOOP.
INSERT /IBMMON/ITM_PERD FROM TABLE itm_perd.
IF sy-subrc <> 0.
ROLLBACK WORK.
upd_fail_bool = ‘X’.
msg ‘E’ 048 ‘/IBMMON/ITM_PERD’ space space.
ELSE.
COMMIT WORK.
msg ‘I’ 053 ‘/IBMMON/ITM_PERD’ space space.
ENDIF.
* end to import /IBMMON/ITM_PERD table.