Текущее время: Вс, июл 20 2025, 23:20

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 10:02 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
Формируется пачка Excel - документов в формате xml известным способом - через
Code:
call function 'GUI_DOWNLOAD'


После формирования выполняю:
Code:
  call method cl_gui_frontend_services=>execute
    exporting
      application = 'Excel'
      parameter   = v_filename
      operation   = 'OPEN'.

После открытия документа, пользователь тыцкает на кнопку печати в Excel и закрывает его окно.
Каким образом автоматизировать печать, т.е. сделать массовую печать документов, не "открывая"
(возможно скрыв его) само приложение?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 10:25 
Младший специалист
Младший специалист

Зарегистрирован:
Сб, сен 13 2008, 08:50
Сообщения: 56
SCORPION_Z написал(а):
Каким образом автоматизировать печать, т.е. сделать массовую печать документов, не "открывая"
(возможно скрыв его) само приложение?

Думаю, что через OLE это вполне возможно реализовать, зная имена файлов, которые нужно печатать.


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 10:44 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
abap.develop написал(а):
Думаю, что через OLE это вполне возможно реализовать, зная имена файлов, которые нужно печатать.



И есть пример такой реализации?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 11:04 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Попробуйте через DOI.
У объекта типа i_oi_document_proxy есть метод print_document.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 11:11 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, июн 02 2009, 22:28
Сообщения: 228
Откуда: MOW
Пол: Мужской
А вот такой пример на "чистом" OLE (если не захочется через DOI как посоветовали).
Насчет последней строки не уверен, но запись макроса в Excel привела к этому, в общем у меня работает.

Code:
REPORT zt_test1.

TYPE-POOLS: OLE2.

PERFORM excel_test.

FORM excel_test.

  DATA: l_filename   TYPE STRING.
  DATA: lo_ex        TYPE ole2_object.
  DATA: lo_wbs       TYPE ole2_object.
  DATA: lo_wb        TYPE ole2_object.

  l_filename = 'c:\_toarchive\book1.xls'.

  CREATE OBJECT lo_ex 'Excel.Application'.
  CALL METHOD OF lo_ex 'Workbooks' = lo_wbs.

  CALL METHOD OF lo_wbs 'Open' = lo_wb
      EXPORTING #1 = l_filename.

  CALL METHOD OF lo_ex 'ExecuteExcel4Macro'
    EXPORTING #1 = 'PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)'.
 
ENDFORM.


Пометить тему как нерешенную
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 11:18 
Младший специалист
Младший специалист

Зарегистрирован:
Сб, сен 13 2008, 08:50
Сообщения: 56
SCORPION_Z написал(а):
И есть пример такой реализации?

Такого механизма я не реализовывал :), но можно попробовать что-то типа:
Code:
DATA  : lv_application   TYPE  ole2_object,
            lv_workbook     TYPE  ole2_object,
            lv_sheets          TYPE  ole2_object,
            lv_cursheet       TYPE  ole2_object.

  IF lv_application-header EQ space
  OR lv_application-handle EQ -1.
    CREATE OBJECT lv_application 'Excel.Application'.
  ENDIF.

  CALL METHOD OF lv_application 'Workbooks' = lv_workbook.

  CALL METHOD OF lv_workbook 'Open' EXPORTING #1 = <текущий файл>.

  CALL METHOD OF item 'Worksheets' = lv_sheets.

  CALL METHOD OF lv_sheets 'Item' = lv_cursheet
            EXPORTING
            #1 = <идентификатор необходиомого листа в книге>.

  CALL METHOD OF lv_cursheet 'PrintOut'
            EXPORTING
*           параметры такие:
* FROM    Optional Variant. The number of the page at which to start printing. If this argument is omitted, printing starts at the beginning.
* TO    Optional Variant. The number of the last page to print. If this argument is omitted, printing ends with the last page.
* COPIES   Optional Variant. The number of copies to print. If this argument is omitted, one copy is printed.
* PREVIEW   Optional Variant. True to have Microsoft Excel invoke print preview before printing the object. False (or omitted) to print the object immediately.
* ACTIVEPRINTER   Optional Variant. Sets the name of the active printer.
* PRINTTOFILE    Optional Variant. True to print to a file. If PrToFileName is not specified, Microsoft Excel prompts the user to enter the name of the output file.
* COLLATE   Optional Variant. True to collate multiple copies.
* PRTOFILENAME   Optional Variant. If PrintToFile is set to True, this argument specifies the name of the file you want to print to.

 






Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 11:40 
Директор
Директор
Аватара пользователя

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

Code:
DATA:
      go_container_contrl TYPE REF TO i_oi_container_control,
      go_document_container TYPE REF TO cl_gui_custom_container,
      document TYPE REF TO i_oi_document_proxy,
      lo_error TYPE REF TO i_oi_error,
      lv_retcode TYPE soi_ret_string.

CALL METHOD c_oi_container_control_creator=>get_container_control
  IMPORTING
    control = go_container_contrl
    error   = lo_error
    retcode = lv_retcode.

IF lv_retcode <> c_oi_errors=>ret_ok.
  lo_error->raise_message( type = 'E' ).
  RETURN.
ENDIF.

  CREATE OBJECT go_document_container
    EXPORTING
      container_name = 'CONTAINER'.

CALL METHOD go_container_contrl->init_control
  EXPORTING
    r3_application_name = sy-repid
    parent              = go_document_container
  IMPORTING
    error               = lo_error
    retcode             = lv_retcode
  EXCEPTIONS
    OTHERS              = 2.
IF  lv_retcode <> c_oi_errors=>ret_ok.
  lo_error->raise_message( type = 'E' ).
  RETURN.
ENDIF.

CALL METHOD go_container_contrl->get_document_proxy
  EXPORTING
    document_type  = 'Excel.Sheet'
  IMPORTING
    document_proxy = document
    error          = lo_error
    retcode        = lv_retcode.
IF lv_retcode <> c_oi_errors=>ret_ok.
  lo_error->raise_message( type = 'E' ).
  RETURN.
ENDIF.

CALL METHOD document->open_document
  EXPORTING
    document_url = 'file://c:/file.xml'
  IMPORTING
    error        = lo_error
    retcode      = lv_retcode.
IF lv_retcode <> c_oi_errors=>ret_ok.
  lo_error->raise_message( type = 'E' ).
ENDIF.

CALL METHOD document->print_document
  IMPORTING
    retcode = lv_retcode.

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


Последний раз редактировалось Lars Вт, мар 30 2010, 13:11, всего редактировалось 2 раз(а).

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 11:42 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
Спасибо за ответы и идеи! Сейчас попробую через i_oi_document_proxy. И через OLE тоже интересный вариант. Посмотрим, что чего стоит...


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 13:04 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
Lars я попробовал твой код и сделал печать через DOI. Всё замечательно, но есть нюансы:

1) Перед печатью документа я получил мессидж "Действительный формат открываемого документа ... отличается от указываемого его расширением имени файла. .... Открыть этот файл сейчас?" (я и так это знаю, я же сам формирую этот xml) . Говорю "Да". Открывается документ. Печатается и закрывается.

2) А почему у тебя ДВА раза вызывается
Code:
CALL METHOD document->print_document
?

Печатает всё нормально. Русский шрифт без проблем


Как убрать это сообщение? Если его не будет, окно Excel всё равно будет проскакивать?


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 13:14 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
Первый вызов не нужен - не туда скопипастил.
Насчет сообщения не знаю, не сталкивался.
У меня все xml файлы для excel открываются нормально без сообщений.
Окно, думаю, будет проскакивать.
Смотреть xml, видимо надо.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 13:22 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
Это изначально был шаблон Source.xls , который был пересохранен в формат *.xml .
Последний теперь типа нового шаблона.
Строки xml были обработаны в ABAP. В таблицу были закинуты свои данные, файл сохранялся.
Как
Code:
call function 'GUI_DOWNLOAD'
так и
Code:
call method cl_gui_frontend_services=>execute

отрабатывают без проблем и каких то ошибок.


Последний раз редактировалось SCORPION_Z Вт, мар 30 2010, 14:27, всего редактировалось 1 раз.

Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 13:32 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Пн, дек 20 2004, 16:05
Сообщения: 1080
Откуда: 4.0B
Пол: Мужской
У меня шаблоны хранятся в виде xml файлов. Парсятся и рендерятся тоже в xml.
Еще использую XSLT программы для создания xml для excel, чтобы шаблоны не хранить.
Все файлы открываются и печатаются без сообщений.
Может это на уровне excel как-то настраивается, может что-то в xml.

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 13:52 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
Ну, максимум, что я могу придумать. Так это места открытия и закрытия книги , шита и таблицы. Но ... я не настолько силен в xml.
Явных ошибок нет. Могу скинут тебе пример такого файла, если понимаешь, глянеш одним глазом....


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 14:01 
Директор
Директор
Аватара пользователя

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

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


Пометить тему как нерешенную
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фоновая печать xml документов
СообщениеДобавлено: Вт, мар 30 2010, 14:09 
Младший специалист
Младший специалист

Зарегистрирован:
Пн, окт 06 2008, 11:22
Сообщения: 56
raaleksandr написал:
А вот такой пример на "чистом" OLE (если не захочется через DOI как посоветовали).
Насчет последней строки не уверен, но запись макроса в Excel привела к этому, в общем у меня работает.

Code:
REPORT zt_test1.

TYPE-POOLS: OLE2.

PERFORM excel_test.

FORM excel_test.

  DATA: l_filename   TYPE STRING.
  DATA: lo_ex        TYPE ole2_object.
  DATA: lo_wbs       TYPE ole2_object.
  DATA: lo_wb        TYPE ole2_object.

  l_filename = 'c:\_toarchive\book1.xls'.

  CREATE OBJECT lo_ex 'Excel.Application'.
  CALL METHOD OF lo_ex 'Workbooks' = lo_wbs.

  CALL METHOD OF lo_wbs 'Open' = lo_wb
      EXPORTING #1 = l_filename.

  CALL METHOD OF lo_ex 'ExecuteExcel4Macro'
    EXPORTING #1 = 'PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)'.
 
ENDFORM.



Спасибо, за этот код. Всё отлично работает! Ушел на печать, только квадратик принтера и видел....
Окно Excel не появляется)) Массовую печать ещё не пробовал, но если имена доков есть, то можно
это легко организовать....

1) А что означает строка :
Code:
EXPORTING #1 = 'PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)'.

Ху из ху в ней? Вдруг мне прийдется когда-то её подправить...

2) Если я буду организовывать цикл по именам документов, то правильно ли и достаточно будет сделать так:

Code:
  CREATE OBJECT   lo_ex 'Excel.Application'.
  CALL METHOD OF lo_ex 'Workbooks' = lo_wbs.
 
  LOOP AT lt_files.
  CALL METHOD OF lo_wbs 'Open' = lo_wb
      EXPORTING #1 = lt_files-filename.

  CALL METHOD OF lo_ex 'ExecuteExcel4Macro'
    EXPORTING #1 = 'PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)'.
  ENDLOOP.

? Ничего не нужно чистить перед следующим вызовом методов?


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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