немного не то, но спасибо за ссылку.
еще вопрос. пробую открыть документ, сохраненный в BDS по примеру
http://abaphr.ru/bds_aba/ шаблон открывается и тут же закрывается! что же не так? и еще написано что потом с ним можно работать через OLE через стандартные CALL METHOD OF, GET PROPERTY OF, SET PROPERTY OF. как это осуществить?
вот код:
Code:
REPORT ztest_001f.
TYPE-POOLS: sbdst.
INCLUDE: officeintegrationinclude.
DATA: url(255)
, doc_uris TYPE sbdst_uri
, doc_url TYPE c LENGTH 255
, doc_signature TYPE sbdst_signature
, doc_components TYPE sbdst_components
, doc_properties TYPE sbdst_properties
, wa_doc_components LIKE LINE OF doc_components
, wa_doc_properties LIKE LINE OF doc_properties
, wa_doc_uris LIKE LINE OF doc_uris
, document_mimetype TYPE bapicompon-mimetype
, doc_mimetype LIKE bapicompon-mimetype
, bds_instance TYPE REF TO cl_bds_document_set
, container TYPE REF TO cl_gui_custom_container
, control TYPE REF TO i_oi_container_control
, document TYPE REF TO i_oi_document_proxy
, iword TYPE REF TO i_oi_word_processor_document
, retcode TYPE soi_ret_string
, rptnam TYPE char40
, factory TYPE REF TO i_oi_document_factory
, classname TYPE sbdst_classname
, classtype TYPE sbdst_classtype
, object_key TYPE bds_typeid
, formular TYPE bds_compid.
START-OF-SELECTION.
* Создаём объект BDS
CREATE OBJECT bds_instance.
classname = 'ZTEST'.
classtype = 'OT'.
* Собираем информацию обо всех шаблонах в каталоге (ключ объекта)
CALL METHOD bds_instance->get_info
EXPORTING
classname = classname
classtype = classtype
object_key = object_key
CHANGING
components = doc_components
signature = doc_signature
EXCEPTIONS
nothing_found = 1
error_kpro = 2
internal_error = 3
parameter_error = 4
not_authorized = 5
not_allowed = 6.
* Ищем адреса хранения шаблонов
REFRESH doc_signature.
CALL METHOD bds_instance->get_with_url
EXPORTING
classname = classname
classtype = classtype
object_key = object_key
CHANGING
uris = doc_uris
signature = doc_signature
EXCEPTIONS
nothing_found = 1
error_kpro = 2
internal_error = 3
parameter_error = 4
not_authorized = 5
not_allowed = 6.
formular = 'Шаблон.doc'.
* Отыскиваем интересующий нас шаблон
READ TABLE doc_components INTO wa_doc_components
WITH KEY comp_id = formular.
* Ищем адрес нашего шаблона
READ TABLE doc_uris INTO wa_doc_uris
WITH KEY comp_count = wa_doc_components-comp_count
doc_count = wa_doc_components-doc_count.
document_mimetype = doc_mimetype.
doc_url = wa_doc_uris-uri.
* Создаём OLE-соединение
CALL METHOD c_oi_factory_creator=>get_document_factory
EXPORTING
factory_type = 'OLE'
IMPORTING
factory = factory
retcode = retcode.
CALL METHOD factory->start_factory
EXPORTING
r3_application_name = 'Справка-объективка'
register_on_close_event = 'X'
register_on_custom_event = 'X'
IMPORTING
retcode = retcode.
CALL METHOD factory->get_document_proxy
EXPORTING
document_type = 'Word.Document.8'
IMPORTING
document_proxy = document
retcode = retcode.
* Открываем документ
CALL METHOD document->open_document
EXPORTING
document_url = doc_url
open_inplace = space
IMPORTING
retcode = retcode.
CALL METHOD document->save_as
EXPORTING
file_name = 'c:\file.doc'
no_flush = ' '
prompt_user = ' '
IMPORTING
retcode = retcode.
CALL METHOD document->get_wordprocessor_interface
IMPORTING
wp_interface = iword.