Sapforum.Biz
Инструменты => ABAP - Инструментальные средства => Тема розпочата: Stas від Травень 19, 2009, 01:10:29 ПП
Привет! Использую DOI для выгрузки в Excel. Проблема возникает только в том случае, если у пользователя висит несохраненный Excel-файл. open_document выдает OPEN_DOCUMENT_FAILED. Может кто сталкивался?
А подробнее можно? Какая FM?
control->get_document_proxy(
exporting
register_container = 'X'
document_type = 'Excel.Sheet.8'
document_format = 'OLE'
importing
document_proxy = proxy
retcode = retcode
).
c_oi_errors=>raise_message( 'E' ).
replace all occurrences of '\' in url with '/'.
concatenate 'file://' im_path into url.
"Открываем шаблон в Excel
proxy->open_document(
exporting
no_flush = 'X'
document_url = url
open_inplace = 'X'
importing
retcode = retcode
).
c_oi_errors=>raise_message( 'E' ).
Вроде бы все делается по документации. Заметили случайно, на показе))))) Ошибка возникает только если у пользователя открыт какой-нибудь (любой левый) Excel-документ с несохраненными изменениями.
Честно никогда таким образом не работал с Excel, может Uukrul или Dmitriy что-то скажут...
Вы кстати делали по примеру SAPRDEMOEXCELINTEGRATION2, том что в библиотеке REUSE?
Там посмотрите есть методы
METHODS: retrieve_document
IMPORTING documents TYPE document_list
EXPORTING document_format TYPE soi_document_type
doc_url TYPE t_url.
METHODS: close_document
IMPORTING do_save TYPE c DEFAULT ' '
value(no_flush) TYPE c DEFAULT ' '
EXPORTING error TYPE REF TO i_oi_error.
Т.е. может попробуете сохранить или закрыть документ перед тем как создавать свой, либо просто выводить сообщение что предыдущий документ не сохранен .....
Но это все ИМХО, как я сказал с этим не работал.
Ну если делали по предложенному примеру, то там в нем идет проверка на уже активную OLE инстацию и если такая найдена, то выдается сообщение, правда в 4.6 не очень красивое, сразу отваливается на выход из программы, но у себя можно сделать проверку и если Exel уже активен, то предложить его закрыть для продолжения работы, что Паганель уже и предложил делать.
Спасибо за ответы. Видимо, приличное решение сделать не успею. Придется пока обойтись сообщением "Сохраните открытые документы Excel" или что-нибудь в этом духе))))
Цитата: Stas від Травень 20, 2009, 01:47:23 ПП
Спасибо за ответы. Видимо, приличное решение сделать не успею. Придется пока обойтись сообщением "Сохраните открытые документы Excel" или что-нибудь в этом духе))))
Скорее всего что приличное решение это напрямую общаться с экселем через OLE. Но думаю в вашем случае, как я понял это демонстрация можно и сообщением обойтись.
Да нет. Показ-показом, а отчет продуктивный. Все равно придется искать решение. Видимо придется действительно делать через прямой OLE.
Цитата: Stas від Травень 20, 2009, 03:39:37 ПП
Да нет. Показ-показом, а отчет продуктивный. Все равно придется искать решение. Видимо придется действительно делать через прямой OLE.
Я не делал таких вещей, но судя по всему читаем внимательно MSDN в части работы с экселем, там думаю все что надо и еще много чего сверху есть... но думаю будет все это очень муторно ::)
Цитата: Stas від Травень 20, 2009, 03:39:37 ПП
Да нет. Показ-показом, а отчет продуктивный. Все равно придется искать решение. Видимо придется действительно делать через прямой OLE.
Ради интереса, можеш скинуть примерчик?