货铺QQ群号:834508274
进群统一修改群名片,例如BJ_ABAP_森林木。群内禁止发广告及其他一切无关链接,小程序等,进群看公告,谢谢配合
不修改昵称会被不定期踢除,谢谢配合
下面开始干货:
有时候因为各种原因吧,需要读取多个sheet页数据,
如果需要读多个sheet页,可以参考下面的自建fm
FUNCTION ZALSM_EXCEL_TO_INTERNAL_TABLE .
*"----------------------------------------------------------------------
*"*"Local interface:
*" IMPORTING
*" VALUE(FILENAME) LIKE RLGRAP-FILENAME
*" VALUE(I_BEGIN_COL) TYPE I
*" VALUE(I_BEGIN_ROW) TYPE I
*" VALUE(I_END_COL) TYPE I
*" VALUE(I_END_ROW) TYPE I
*" VALUE(IV_SHEET_NAME) TYPE ALSMEX_TABLINE-VALUE OPTIONAL
*" TABLES
*" INTERN STRUCTURE ALSMEX_TABLINE
*" EXCEPTIONS
*" INCONSISTENT_PARAMETERS
*" UPLOAD_OLE
*"----------------------------------------------------------------------
DATA: excel_tab TYPE ty_t_sender.
DATA: ld_separator TYPE c.
DATA: application TYPE ole2_object,
workbook TYPE ole2_object,
range TYPE ole2_object,
worksheet TYPE ole2_object.
DATA: h_cell TYPE ole2_object,
h_cell1 TYPE ole2_object.
ld_rc
* Rückgabewert der Methode "clipboard_export
* Makro für Fehlerbehandlung der Methods
* check parameters
* Get TAB-sign for separation of fields
* open file in Excel
CALL METHOD OF application 'Workbooks' = workbook.
CALL METHOD OF workbook 'Open' EXPORTING #1 = filename.
*-----delete by jinj
** set property of application 'Visible' = 1.
** m_message.
* GET PROPERTY OF application 'ACTIVESHEET' = worksheet.
* m_message.
*-----end delete
*--ADD JINJ-----------------------------------------------
** set property of application 'Visible' = 1.
** m_message.
get property of APPLICATION 'ACTIVESHEET' = WORKSHEET.
*-->可以实现读取多个sheet
*---END OF------------------------------------------------
* mark whole spread sheet
CALL METHOD OF worksheet 'RANGE' = range
EXPORTING #1 = h_cell #2 = h_cell1.
* copy marked area (whole spread sheet) into Clippboard
* read clipboard into ABAP
data
cntl_error
* ERROR_NO_GUI
* NOT_SUPPORTED_BY_GUI = 3
OTHERS
MESSAGE a037(alsmex).
USING ld_separator.
* clear clipboard
IMPORTING
data
CHANGING
rc
EXCEPTIONS
cntl_error
* ERROR_NO_GUI
*
OTHERS
* quit Excel and free ABAP Object - unfortunately, this does not kill
* the Excel process
* to kill the Excel process it's necessary to free all used objects
FREE OBJECT h_cell.
FREE OBJECT h_cell1. m_message.
FREE OBJECT range. m_message.
FREE OBJECT worksheet. m_message.
FREE OBJECT workbook.
FREE OBJECT application. m_message.
ENDFUNCTION.