执行BDC时,如果导入的模板错误,那对导入数据也将没有任何意义,通常在执行BDC之前由界面提供按钮,实现BDC标准模板的下载功能,代码如下:
TABLES SSCRFIELDS.
TYPES :
* 模板标题用类型
BEGIN OF GTYP_TITLE,
TITLE1(20) TYPE C, "标题1
TITLE2(20) TYPE C, "标题2
TITLE3(20) TYPE C, "标题3
TITLE4(20) TYPE C, "标题4
TITLE5(20) TYPE C, "标题5
TITLE6(20) TYPE C, "标题6
TITLE7(20) TYPE C, "标题7
END OF GTYP_TITLE.
DATA ls_title TYPE GTYP_TITLE.
DATA GT_TITLE TYPE STANDARD TABLE OF GTYP_TITLE.
SELECTION-SCREEN: FUNCTION KEY 1.
INITIALIZATION.
SSCRFIELDS-FUNCTXT_01 = '下载模板'.
AT SELECTION-SCREEN.
* 相应按钮
PERFORM FRM_DOWNLOAD.
FORM frm_download .
CASE sscrfields-ucomm.
WHEN 'FC01'.
PERFORM frm_download_excel.
ENDCASE.
ENDFORM.
FORM frm_download_excel .
* DATA: LS_DOWNLOAD TYPE GTYP_DOWNLOAD,
DATA : ls_title TYPE gtyp_title,
l_file TYPE string,
l_filename(128) TYPE c.
IF gt_title IS INITIAL.
ls_title-title1 = '标题1'.
ls_title-title2 = '标题2'.
ls_title-title3 = '标题3'.
ls_title-title4 = '标题4'.
ls_title-title5 = '标题5'.
ls_title-title6 = '标题6'.
ls_title-title7 = '标题7'.
APPEND ls_title TO gt_title.
ENDIF.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_path = ''
mask = ' (*.xls),*.xls,'
mode = 'S'
title = text-004
IMPORTING
filename = l_filename
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc <> 0.
CLEAR: l_filename.
ENDIF.
l_file = l_filename.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = l_file
filetype = 'DAT'
codepage = '8400'
TABLES
data_tab = gt_title.
* FIELDNAMES = GT_TITLE
IF sy-subrc = 0.
MESSAGE '模板下载成功!' TYPE 'S'.
ELSE.
MESSAGE '模板下载错误!' TYPE 'E'.
ENDIF.
ENDFORM. " FRM_DOWNLOAD_EXCEL