Текущее время: Вс, авг 03 2025, 03:00

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: "Зависание" Excel-a при обращении по OLE
СообщениеДобавлено: Ср, сен 05 2007, 09:36 
Начинающий
Начинающий

Зарегистрирован:
Ср, сен 05 2007, 07:53
Сообщения: 2
Ситуация такая:

Работаю с Экселем через DOI + OLE ( ну мне так кажется :) ). Открываю документ через DOI в inplace режиме, получаю его хэндлер и далее передаю данные из внутренней таблицы в Excel посредством OLE, поскольку в 4.0 DOI какой то "недоделанный".

Code:
  call function 'CONTROL_INIT'   
       exceptions               
         control_init_error = 1 
         others             = 2.
  call method c_oi_ole_control_creator=>get_ole_container_control 
        importing control = control                                 
                  retcode = retcode.                               
  shell_style = ws_visible + ws_child + ws_border + ws_clipchildren.
  inplace_mode = control->inplace_mode_enabled +                       
                                          control->inplace_mode_scroll.
  call method control->init_control                                     
       exporting                                                       
               r3_application_name = '' "#EC NOTEXT                     
               inplace_mode = inplace_mode                             
               shell_style = shell_style                               
      receiving retcode = retcode.

  call method control->get_document_proxy                       
              exporting document_type = document_type             
              importing document_proxy = document                 
                        retcode = retcode.                         

.............

   call method document->open_document   
        exporting document_url = doc_url
                  open_inplace = 'X'     
        receiving retcode = retcode. 
   
   call method document->get_document_handle
           importing                           
               handle   = hnd                 
               retcode = retcode .             


Далее идет запись в ячейки в цикле из внутренней таблицы, все нормально проходит.

Потом пользователь изменяет данные в эксель-ячейках и затем, нажимая кнопку в SAP GUI, инициализирует процедуры передачи данных из экселевых ячеек во внутреннюю таблицу.

Code:
  call method of app 'WorkSheets' = activesheet   
       exporting                                 
             #1 = sheet_name.                     
  call method of activesheet 'Activate'.         
...........
  call method of app 'Cells' = cells
          exporting #1 = i           
                    #2 = j.           
  get property of cells 'Value' = value.


Так вот, если при нажатии этой кнопки пользователь не вышел из ячейки, то есть оставил в ней курсор при вводе данных, то происходит "зависание" приложения экселя, SAP GUI через некоторое время рапортует , что "Действие не может быть завершено, т.к. другая программа занята..." При этом в отладке в ABAPе процесс стоит на "call method ..." или "get property of ...", то есть идет безуспешная попытка достучаться до Экселя. После снятия Экселя из процессов в таскманагере программа продолжает работу.

Вопрос - что делать? :) Как заставить Эксель очнуться, вывести у него курсор из ячейки или что я не так делаю или наоборот не делаю? Может кто то с таким сталкивался...

===========
SAP server - 4.0B
SAP GUI 6404.4.14.1012
Code:
Code:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 05 2007, 10:03 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1962
Откуда: Москва
Пол: Мужской
А версия Екселя какая?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, сен 05 2007, 10:25 
Начинающий
Начинающий

Зарегистрирован:
Ср, сен 05 2007, 07:53
Сообщения: 2
Office 2003


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

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


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

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


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

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