09-12-2014 1:53 PM
Hi Experts,
I have a requirement to read an excel file data from application server to an internal table. I have already checked it in scn but none is working. Please let me know code for the same.
Thanks in advance.
Suman
09-12-2014 2:03 PM
09-12-2014 2:12 PM
09-12-2014 2:18 PM
Hi,
Maybe this helps,
DATA: gr_bds TYPE REF TO cl_bds_document_set.
DATA: gr_control TYPE REF TO i_oi_container_control,
gr_container TYPE REF TO cl_gui_custom_container,
gr_proxy TYPE REF TO i_oi_document_proxy,
gr_sheet TYPE REF TO i_oi_spreadsheet.
*&---------------------------------------------------------------------*
*& Form fil_export_table_xls
*&---------------------------------------------------------------------*
FORM fil_export_table_xls
USING value(is_excel_parms) TYPE zbds_excel_parms
CHANGING etb_excel_content TYPE zbds_excel_content_tb.
DATA:
ltb_table_xls TYPE soi_generic_table,
ltb_range_xls TYPE soi_range_list,
ltb_dim_xls TYPE soi_dimension_table.
DATA:
ls_dim_item TYPE soi_dimension_item,
ls_excel_content TYPE zbds_excel_content,
ls_table_xls TYPE soi_generic_item.
DATA:
li_available TYPE i,
li_ret_value TYPE i, "#EC NEEDED
lc_retcode TYPE soi_ret_string.
REFRESH etb_excel_content.
* Check if the document is still open
CALL METHOD gr_proxy->is_open
IMPORTING
retcode = lc_retcode
ret_value = li_ret_value.
IF lc_retcode = 'OK'.
* Check if the document has a spreadsheet inteface
CALL METHOD gr_proxy->has_spreadsheet_interface
IMPORTING
is_available = li_available
retcode = lc_retcode.
ENDIF.
IF li_available = 1.
* Fil the object gr_sheet, so we can use the methods of the object
CALL METHOD gr_proxy->get_spreadsheet_interface
IMPORTING
sheet_interface = gr_sheet
retcode = lc_retcode.
* Select the worksheet of which you want the data
IF lc_retcode = 'OK'.
CALL METHOD gr_sheet->select_sheet
EXPORTING
name = is_excel_parms-excel_sheetname
IMPORTING
retcode = lc_retcode.
ENDIF.
ENDIF.
IF lc_retcode = 'OK'.
* Get the data in a specific range on the chosen worksheet
REFRESH ltb_range_xls.
ls_dim_item-row = is_excel_parms-excel_start_row.
ls_dim_item-column = is_excel_parms-excel_start_column.
ls_dim_item-rows = is_excel_parms-excel_rows.
ls_dim_item-columns = is_excel_parms-excel_columns.
APPEND ls_dim_item TO ltb_dim_xls.
CALL METHOD gr_sheet->get_ranges_data
EXPORTING
rangesdef = ltb_dim_xls
IMPORTING
contents = ltb_table_xls
retcode = lc_retcode
CHANGING
ranges = ltb_range_xls.
ENDIF.
IF lc_retcode = 'OK'.
LOOP AT ltb_table_xls INTO ls_table_xls.
ls_excel_content-excel_row = ls_table_xls-row.
ls_excel_content-excel_column = ls_table_xls-column.
ls_excel_content-excel_value = ls_table_xls-value.
APPEND ls_excel_content TO etb_excel_content.
ENDLOOP.
ENDIF.
IF gr_sheet IS NOT INITIAL.
FREE gr_sheet.
ENDIF.
ENDFORM. "
Greetings Maarten
09-12-2014 2:19 PM