ABAP OLE程序DEMO
REPORT YYHD_OLE.
TYPES: BEGIN OF TY_UPLOAD, "接收excel的结构
BUKRS TYPE CHAR50, "公司代码
ANLN1 TYPE CHAR50, "资产号
GGJAHR TYPE CHAR50, "年度
AFPER TYPE CHAR50, "月份
GSTZAHL TYPE CHAR50, "总量
STZAHL TYPE CHAR50, "实际用量
END OF TY_UPLOAD.
TYPES: BEGIN OF TY_CHECK_UPLOAD, "接收数据处理后的结构
BUKRS TYPE BUKRS,
ANLN1 TYPE ANLN1,
GGJAHR TYPE GGJAHR,
AFPER TYPE AFPER,
GSTZAHL TYPE GSTZAHL,
STZAHL TYPE STZAHL,
END OF TY_CHECK_UPLOAD.
DATA: LT_UPLOAD TYPE TABLE OF TY_UPLOAD, "接收excel的内表
LS_UPLOAD TYPE TY_UPLOAD, "接收excel的工作区
P_BUKRS TYPE CHAR4, "用于对公司代码做检查
LV_BOOLEAN TYPE BOOLEAN, "文件路径是否存在返回结果
LT_CHECK_UPLOAD TYPE TABLE OF TY_CHECK_UPLOAD, "接收数据处理后的内表
LS_CHECK_UPLOAD TYPE TY_CHECK_UPLOAD, "接收数据处理后的工作区
LT_LINES TYPE TABLE OF ALSMEX_TABLINE, "接收Excel数据的表
LS_LINES TYPE ALSMEX_TABLINE,
LV_RC TYPE I, "将内表数据放到excel剪切板操作的返回代码
LT_FILE_TABLE TYPE FILETABLE, "接收上传文件路径用
LS_FILE_TABLE TYPE FILE_TABLE,
GS_LAYO TYPE LVC_S_LAYO, "ALV显示画面用
GT_FCAT TYPE LVC_T_FCAT. "ALV字段格式设置用
"定义下载模板相关数据
DATA: APPLICATION TYPE OLE2_OBJECT, "excel object
WORKBOOK TYPE OLE2_OBJECT, "excel workbook objcet
SHEET TYPE OLE2_OBJECT, "workbook sheet object
COLUMNS TYPE OLE2_OBJECT, "sheet col objcet
ROWS TYPE OLE2_OBJECT, "sheet row objcet
RANGE TYPE OLE2_OBJECT, "range
RANGE1 TYPE OLE2_OBJECT, "range1
FONT TYPE OLE2_OBJECT, "font
CELL TYPE OLE2_OBJECT, "cell
CELL1 TYPE OLE2_OBJECT, "cell1
SHEET1 TYPE OLE2_OBJECT, "workbook sheet object
BORDERS TYPE OLE2_OBJECT. "borders
SELECTION-SCREEN BEGIN OF BLOCK 1. "选择画面
PARAMETERS:GV_PATH TYPE CHAR255.
SELECTION-SCREEN END OF BLOCK 1.
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR GV_PATH. "给路径设置f4帮助
PERFORM FRM_SCR_F4 CHANGING LT_FILE_TABLE.
* PERFORM FRM_CHECK_FILEPATH USING lv_path. "检查路径是否正确
START-OF-SELECTION.
PERFORM FRM_UPLOAD_EXCEL. "将excel数据导入到表中
*&---------------------------------------------------------------------*
*& Form SCR_F4
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* <--P_LT_FILE_TABLE text
*----------------------------------------------------------------------*
FORM FRM_SCR_F4 CHANGING P_LT_FILE_TABLE.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = 'File Selected'
FILE_FILTER = 'Microsoft Excel(*.XLS;*.XLSX;*.XLSM)|*.XLS;*.XLSX;*.XLSM|' "'Execel(*.xls,*.xlsx)|*.XLS*'
INITIAL_DIRECTORY = 'C:\'
CHANGING
FILE_TABLE = LT_FILE_TABLE
RC = LV_RC
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
READ TABLE LT_FILE_TABLE INTO LS_FILE_TABLE INDEX 1.
IF SY-SUBRC EQ 0.
GV_PATH = LS_FILE_TABLE-FILENAME.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_FILEPATH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_CHECK_FILEPATH USING LV_PATH. "检查路径是否正确