Текущее время: Пн, авг 04 2025, 15:33

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Обработка OLE после создания документа через DOI
СообщениеДобавлено: Ср, апр 30 2008, 08:23 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Создаю документ Ёкселя:
Code:
    CALL METHOD C_OI_FACTORY_CREATOR=>GET_DOCUMENT_FACTORY
                      IMPORTING FACTORY = FACTORY
                                RETCODE = RETCODE.
    IF RETCODE NE C_OI_ERRORS=>RET_OK. EXIT. ENDIF.

    CALL METHOD FACTORY->START_FACTORY
             EXPORTING R3_APPLICATION_NAME = 'R/3 Basis'    "#EC NOTEXT
                        REGISTER_ON_CLOSE_EVENT = 'X'
                        REGISTER_ON_CUSTOM_EVENT = 'X'
                        NO_FLUSH  = 'X'
              IMPORTING RETCODE = RETCODE.
    CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING TYPE = 'E'.

    CALL METHOD FACTORY->GET_DOCUMENT_PROXY
                      EXPORTING DOCUMENT_TYPE = DOCUMENT_TYPE
                                NO_FLUSH = 'X'
                      IMPORTING DOCUMENT_PROXY = DOCUMENT
                                RETCODE = RETCODE.
    CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING TYPE = 'E'.

    CALL METHOD DOCUMENT->CREATE_DOCUMENT
      EXPORTING
        NO_FLUSH     = 'X'
      IMPORTING
        RETCODE = RETCODE.
    CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING TYPE = 'E'.

    CALL METHOD DOCUMENT->GET_DOCUMENT_HANDLE
       EXPORTING
         NO_FLUSH = 'X'
       IMPORTING
        HANDLE   = OLE_EXCEL
        RETCODE  = RETCODE.

    SET PROPERTY OF OLE_EXCEL-OBJ 'Visible' = 0 .

Получаю ОЛЕ инстанцию через DOCUMENT->GET_DOCUMENT_HANDLE . Дальше тупик - не один ОЛЕ-метод к созданному документу не применяется. Подскажите где затупил...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 08:33 
Директор
Директор

Зарегистрирован:
Чт, июн 21 2007, 09:01
Сообщения: 904
Откуда: УЖ 15/2
Пол: Мужской
Может так?
Code:
DATA: h_excel TYPE ole2_object
...
CALL METHOD DOCUMENT->GET_DOCUMENT_HANDLE
       EXPORTING
         NO_FLUSH = 'X'
       IMPORTING
        HANDLE   = OLE_EXCEL
        RETCODE  = RETCODE.

    CALL FUNCTION 'FLUSH'.

    h_excel = OLE_EXCEL-OBJ.

SET PROPERTY OF h_excel 'Visible' = 0 .


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 08:40 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Alex80 написал:
Может так?
Code:
DATA: h_excel TYPE ole2_object

Пробовал. Не идет...


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
John Doe написал:
Пробовал. Не идет...

Чего пробовал: flush или h_excel TYPE ole2_object ?


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 09:05 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
flush в конце стоит, в этом куске кода не показал просто.
Подменять GS_EXCEL = OLE_EXCEL-OBJ пробовал.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 09:13 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
А если NO_FLUSH попробовать поснимать ?

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 09:15 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Lars написал:
А если NO_FLUSH попробовать поснимать ?

Так тоже пробовал, везде снимал, везде вставлял...


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

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской
Надо
Code:
C_OI_FACTORY_CREATOR=>GET_DOCUMENT_FACTORY
EXPORTING
      factory_type = 'OLE'  " !!!

ибо
Code:
CLASS-METHODS: GET_DOCUMENT_FACTORY
                 IMPORTING FACTORY_TYPE TYPE C DEFAULT 'PORTABLE'


Можно также попробовать по-старинке, без factory: http://sapboard.ru/forum/viewtopic.php?t=21271


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 12:39 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
sibrin написал:
Надо
Code:
C_OI_FACTORY_CREATOR=>GET_DOCUMENT_FACTORY
EXPORTING
      factory_type = 'OLE'  " !!!




Да, не факт.
В исходниках делается так
Code:
  IF factory is initial.
    CALL METHOD c_oi_factory_creator=>get_document_factory
                      IMPORTING factory = factory
                                retcode = retcode.


Там, вроде, factory_type и не обрабатывается ни где.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 13:28 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Пока что никак не помогло. Читаю хэлпы. :(


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 14:26 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
А если вот так попробовать, работает вроде:

Code:

data: document_handle type CNTL_HANDLE.
DOCUMENT->GET_DOCUMENT_HANDLE( EXPORTING  NO_FLUSH = ''
                                IMPORTING
                                    HANDLE   = document_handle
                                    RETCODE  = RETCODE ).

data: application type ole2_object.
  GET PROPERTY
    OF document_handle-obj 'Application' = application
    no flush
    queue-only
    .
  SET PROPERTY OF application 'Visible' = 0 .

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Последний раз редактировалось Lars Ср, апр 30 2008, 15:00, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 14:58 
Старший специалист
Старший специалист

Зарегистрирован:
Вт, авг 17 2004, 08:49
Сообщения: 319
Откуда: Мариуполь
А вызов GET_DOCUMENT_HANDLE возвращает реальное значение ссылки на интерфейс?. А то может быть он возвращает пустую структуру. У меня было такое из-за опций no_flush при создание объектов. Т.к. похоже объекты еще не созданы...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 15:08 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Lars, похоже направление то. С последним вариантом 'Visible' заработал. Но самое нужное : 'Value', 'Font' и все остальное - не пашет.
Задумка была такая, выкинуть через ДОИ табличку в Ёксель, а потом с помощью ОЛЕ добавить красоты всякой. Первый шаг получился...

qwerty, заполненный объект. Насколько реальное значение ссылки - я не знаю как проверить. Но судя по тому, что что-то получается - скорее реальное, чем нет.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 15:25 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
John Doe написал:
Lars, похоже направление то. С последним вариантом 'Visible' заработал. Но самое нужное : 'Value', 'Font' и все остальное - не пашет.
Задумка была такая, выкинуть через ДОИ табличку в Ёксель, а потом с помощью ОЛЕ добавить красоты всякой. Первый шаг получился...



вся штука в том что

Code:
  GET PROPERTY
    OF document_handle-obj ... = ...
    no flush
    queue-only


нужно сделать для всех ole объектов
тоесть, после того как получен application, делается
Code:
  GET PROPERTY
    OF application 'Activesheet' = activesheet
    no flush
    queue-only.


Глубже не опускался, но видимо, там же должны быть, book, font и т.д.
Красоту таким образом не наводил, но строки вставлять. убирать, скрывать получалось.

_________________
Я слышу и забываю,
Я вижу и помню долго,
Я делаю и — понимаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, апр 30 2008, 15:45 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Lars, с меня пиво. Начало получаться.


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

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


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

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


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

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