如何实现SAP系统数据库表导入导出功能

发表位置:[ 技术 ]   作者:Eric

这两天老婆一直开玩笑的跟我说,啥时候出自己的处女作啊,我说那不叫处女作,该叫处男作,哈哈。废话少说了,发第一篇文章就是关于技术的,是因为我这两天一直折腾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.

标签: [ , , , ]

欢迎评论

    (可选)

    (可选)

     (可选)

8 + 9 =? (必须填写)