Текущее время: Вс, июл 27 2025, 05:46

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: Yandex [Bot]


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

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