Текущее время: Пн, июн 23 2025, 19:24

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: Как узнать количество строк/колонок, которые заполнены данными?
СообщениеДобавлено: Чт, авг 08 2013, 11:00 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, апр 10 2013, 17:25
Сообщения: 54
Доброго всем времени суток!

Собственно сам вопрос:

Как про чтении Excel файла в SAP (apab) узнать количество строк/колонок, которые заполнены данными?

Лист файла Excel считываю кодом ниже:

Code:
  loop at i_sheets into wa_sheets.

* - НАЧАЛО - Выберу текущий обрабатываемый лист Excel
    call method iref_spreadsheet->select_sheet
      exporting
        name  = wa_sheets-sheet_name
      importing
        error = iref_error.

    if iref_error->has_failed = 'X'.
      exit.
    endif.
* - КОНЕЦ - Выберу текущий обрабатываемый лист Excel



* - НАЧАЛО - Выберу область чтения ячеек текущего обрабатываемого листа Excel
    call method iref_spreadsheet->set_selection
      exporting
        top     = 1
        left    = 1
        rows    = p_rows
        columns = p_cols.

    call method iref_spreadsheet->insert_range
      exporting
        name     = 'Test'
        rows     = p_rows
        columns  = p_cols
        no_flush = ''
      importing
        error    = iref_error.
    if iref_error->has_failed = 'X'.
      exit.
*      call method iref_error->raise_message
*        exporting
*          type = 'E'.
    endif.
* - КОНЕЦ - Выберу область чтения ячеек текущего обрабатываемого листа Excel


    refresh i_data. " Удалю все строки из внутренней таблицы i_data


* - НАЧАЛО - Получу данные выбранной области ячеек текущего обрабатываемого листа Excel
    call method iref_spreadsheet->get_ranges_data
      exporting
        all      = 'X'
      importing
        contents = i_data
        error    = iref_error
      changing
        ranges   = i_ranges.
* - Конец - Получу данные выбранной области ячеек текущего обрабатываемого листа Excel
.............................................................................................................................................................
.............................................................................................................................................................
.............................................................................................................................................................



значения количества строк и колонок сейчас передается с фомы запуска обработкис помощью переменных p_rows, p_cols.

Как можно автоматически - без участия пользователя получать количество строк/колонок которые уже заполнены данными?


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Как узнать количество строк/колонок, которые заполнены данными?
СообщениеДобавлено: Пт, авг 09 2013, 08:51 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, апр 10 2013, 17:25
Сообщения: 54
Разобрался вроде...
Для начинающих чайников скину код чтения Excel файла в SAP R/3. адруг кому пригодится

Цитата:
*&---------------------------------------------------------------------*
*& Report ZSG_TEST_EXCEL
*&
*&---------------------------------------------------------------------*

report zsg_test_excel.


include ole2incl.

data: excel type ole2_object, " Подключенное Ecxel приложение
workbooks type ole2_object, " Книги подключенного Ecxel приложения
workbook type ole2_object, " Рабочая книга подключенного Ecxel приложения
worksheet type ole2_object, " Лист рабочей книги подключенного Ecxel приложения
cell type ole2_object, " Ячейка рабочего листа
all_cells type ole2_object, " Все ячейки рабочего листа
specialcell type ole2_object, " Ячейка со специяльными данными ячеек
value_cell type string, " Значение ячейки рабочего листа
max_row type i," Максимально заполненная строка рабочего листа
max_column type i." Максимально заполненная колонка рабочего листа

parameters: p_file type localfile obligatory.

initialization.

at selection-screen on value-request for p_file.

perform when_click_p_file.


start-of-selection.

* Подключусь к Excel приложению
create object excel 'Excel.Application'.

* Подключусь к книге Excel приложения
call method of excel 'Workbooks' = workbooks.
call method of workbooks 'Open' = workbook
exporting
#1 = p_file.

** Открою Excel для пользователя (сделаю видимым)
* set property of excel 'Visible' = 1.

* Получу нужный лист Excel (нумерация листов начинается с 1)
call method of excel 'WorkSheets' = worksheet
exporting
#1 = 1.

* - НАЧАЛО - Получу максимально заполненную строку и максимально заполненную колонку текущего листа Excel
call method of worksheet 'Cells' = all_cells
exporting
#1 = 1 " Row
#2 = 1. " Col

call method of all_cells 'SpecialCells' = specialcell
exporting
#1 = 11.

get property of specialcell 'ROW' = max_row.
get property of specialcell 'COLUMN' = max_column.
* - КОНЕЦ - Получу максимально заполненную строку и максимально заполненную колонку текущего листа Excel

data: index_row type i,
index_column type i.

do max_row times. " обойду все строки

index_row = sy-index.

write / index_row.

do max_column times. " обойду все колонки строки

index_column = sy-index.

call method of worksheet 'Cells' = cell
exporting
#1 = index_row
#2 = index_column.

get property of cell 'Value' = value_cell.

write: (10) value_cell.

enddo.

enddo.

* Отключусь от Excel приложения
call method of excel 'Quit'.


free object: excel,
workbooks,
workbook,
all_cells.
*&---------------------------------------------------------------------*
*& Form WHEN_CLICK_P_FILE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form when_click_p_file .
data:
l_desktop type string,
l_i_files type filetable, " таблица имен файлов
l_wa_files type file_table, " таблица имени файла
l_rcode type int4,
user_return type i.

* Найду папку рабочего стола
call method cl_gui_frontend_services=>get_desktop_directory
changing
desktop_directory = l_desktop
exceptions
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
others = 4.

if sy-subrc <> 0.
message e001(00) with 'Рабочий стол не найден'.
endif.

* Начну диалог с пользователем по выбору файла
call method cl_gui_frontend_services=>file_open_dialog
exporting
window_title = 'Выберите Excel файл'
default_extension = '.xls'
file_filter = '(*.xls)|*.xls|'
initial_directory = l_desktop
changing
file_table = l_i_files
rc = l_rcode
user_action = user_return
exceptions
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
others = 5.

if user_return = cl_gui_frontend_services=>action_cancel .
message i001(00) with 'Выбор файла отменен пользователем'.
exit.
endif.

if user_return = cl_gui_frontend_services=>action_ok .
if user_return = 0 .
read table l_i_files index 1 into l_wa_files.
if sy-subrc = 0.
p_file = l_wa_files-filename.
else.
message e001(00) with 'Ошибка открытия файла'.
endif.
endif.
endif.
endform. " WHEN_CLICK_P_FILE


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB