内表导出两份EXCEL 一份是抬头,一份是明细。
DATA: L_FILETABLE TYPE FILETABLE,
LS_FILETABLE TYPE FILE_TABLE,
LS_RC TYPE I.
DATA LV_STR_I TYPE CHAR20.
DATA: L_PATH TYPE STRING.
DATA: L_PATH_ITEM TYPE STRING.
DATA: L_PATH_TMP TYPE STRING.
DATA : LT_ROW TYPE LVC_T_ROID, "内表
LS_ROW TYPE LVC_S_ROID. "工作区
DATA:BEGIN OF T_FIELDNAMES OCCURS 0,
NAME TYPE CHAR20,
END OF T_FIELDNAMES.
CLEAR: L_FILETABLE,LS_RC,L_PATH.
DATA:LV_CHAR TYPE STRING,
LV_HEAD TYPE STRING VALUE 'BOM抬头',
LV_ITEM TYPE STRING VALUE 'BOM明细'.
DATA:LEN TYPE INT4,
LEN1 TYPE INT4.
LV_CHAR = SY-DATUM. "&& SY-UZEIT.
LV_HEAD = LV_HEAD && '-'&& LV_CHAR.
LV_ITEM = LV_ITEM && '-'&& LV_CHAR && '.XLS'.
*文件路径选择
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = '请选择本地文件' "对话框的标题
DEFAULT_EXTENSION = 'XLS' "默认的文件后缀名
DEFAULT_FILENAME = LV_HEAD
FILE_FILTER = 'XLS文件(*.XLS)|全部文件 (*.*)|*.*|' "文件打开的filter
CHANGING
FILE_TABLE = L_FILETABLE
RC = LS_RC
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
*读取路径
LOOP AT L_FILETABLE INTO LS_FILETABLE.
L_PATH = LS_FILETABLE-FILENAME.
ENDLOOP.
CLEAR T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '零件表编号'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '客户编码'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '客户代码'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '成品编号'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '成品描述'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '箱种箱型'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '版本'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '创建日期'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '备注'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '预留字段一'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '预留字段二'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '预留字段三'.
APPEND T_FIELDNAMES.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = L_PATH
FILETYPE = 'DAT'
CODEPAGE = '8404'
TABLES
DATA_TAB = GT_EXHEAD
FIELDNAMES = T_FIELDNAMES[].
IF SY-SUBRC NE 0.
MESSAGE 'BOM抬头导出失败!' TYPE 'E'.
ENDIF.
CLEAR:T_FIELDNAMES[],T_FIELDNAMES-NAME.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '零件表编号'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '行项目'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '组件名称'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '厚度'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '展开宽'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '展开长'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '规格'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '材质'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '数量'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '单位'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '重量'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '预留字段一'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = 'BOM组件'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '制造属性'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '图号'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '分类'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '预留字段二'.
APPEND T_FIELDNAMES.
CLEAR T_FIELDNAMES-NAME.
T_FIELDNAMES-NAME = '预留字段三'.
APPEND T_FIELDNAMES.
LEN = STRLEN( L_PATH ).
LEN1 = LEN - 18.
L_PATH_TMP = L_PATH(LEN1).
L_PATH_ITEM = L_PATH_TMP && LV_ITEM.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = L_PATH_ITEM
FILETYPE = 'DAT'
CODEPAGE = '8404'
TABLES
DATA_TAB = GT_EXITEM
FIELDNAMES = T_FIELDNAMES[].
IF SY-SUBRC NE 0.
MESSAGE 'BOM明细导出失败!' TYPE 'E'.
ENDIF.