Печать документов через Word Merge

Специально для одного моего заказчика, которому я обещал рассказать как можно напечатать 500 дополнительных соглашений за пару часов. Обещал и нагло уехал в США.

Рассказываю.

Сначала нам нужно сделать простейший оперативный запрос. Например, я сделал вот такой, где указаны только фамилия, имя и компания. Для реального документа нужны поля с суммами из 15 инфотипа, подписанты и прочее — все это можно получить либо стандартными средствами оперативного запроса или через дополнительные поля.

Главное в оперативном запросе то, что одна строчка с данными в отчете равняется одному документу на выходе.

Нажимаем на кнопочку обработки в MS Word, как это показано выше. Выбираем обработку писем в MS Word.

Теперь нас система спрашивает, хотим ли мы использовать уже существующий шаблон или нужно создать новый. Для первого раза я бы выбрал создать новый. Откроется MS Word, где с помощью кнопочки Insert Merge Field можно вставить в нужные места нужные поля из шаблона.

Как только мы навели красоту и порядок, то сохраняем этот документ как шаблонный где-нибудь у себя на диске. Или централизованно на сетевом ресурсе.

Теперь, когда мы запускаем боевой отчет с нашими 500 сотрудниками, то мы уже выберем как на картинке использование существующего шаблона.
Вот так выглядит мой простой шаблончик.

Как видите, он очень простой.

Теперь у нас есть другие волшебные кнопочки:
Edit Recipient List — выбрать данные (записи), для которых должны сформироваться документы. По умолчанию стоят все записи.
Finish & Merge — завершить обработку и сгенерировать документы. Можно сразу отправить на принтер, можно на почту или просто в MS Word файл.

В итоге мы получили два документа (две страницы друг за другом в одном документе) с разными данными на основание нашего оперативного запроса.

Зачастую такой способ гораздо быстрее и проще использовать, чем ждать дорогостоящей разработки програм для печати. Для сложных форм этот способ не подойдет, а для простых всегда пожалуйста. Причем это возможность MS Word, а не SAP. Такие списки получателей (данных) можно просто в MS Excel сделать, а потом оттуда экспортировать в MS Word и напечатать документы.


Отчет об ошибках обработки IDOC

Есть транзакция BD87, которая позволяет красиво развернуть IDOC по группам ошибок/статусов. Только, когда у меня 15 000 IDOC, то развертка занимает минут 30. А нужно, например, перезапустить лишь кусок из них, чтобы он прошел. Например, блокировка была данных, поэтому IDOC не пролез.

Делаем финт ушами. Заходим в транзакцию WE02, фильтрами получаем весь массив IDOC нужного нам типа (например, я сейчас анализирую кредиторов — CREMAS). Выгружаю ошибочные номера в xls. А потом иду в табличку EDIDS и по этим номерам получаю текстовое описание ошибки. Быстро фильтрами в Excel нахожу нужные мне IDOC и успешно их обрабатываю.


Большой размер PDF форм

Еще одна любопытная особенность, которая выяснилась на днях. Если у вас PDF выходят очень большого размера (какой-нибудь групповой отчет, Т-3, Т-13 на несколько десятков мегабайт), то скорее всего в параметрах документа FILLABLE = ‘X’(интерактивная форма), а DYNAMIC = ‘ ’. Параметры передаются в структуре /1bcdwb/docparams при вызове
функционального модуля, генерирующего PDF. Чтобы PDF был интерактивным, т.е. с возможностью заполнения полей, и при этом вменяемого размера, оба параметра (FILLABLE, DYNAMIC) должны быть включены. Выглядит это примерно так:

fp_docparams-FILLABLE = ‘X’.
fp_docparams-DYNAMIC = ‘X’.

CALL FUNCTION fm_name
EXPORTING
/1bcdwb/docparams = fp_docparams
header = g_s_header
t6A = g_tab_t6a
EXCEPTIONS
formatting_error = 1
internal_error = 2
send_error = 3
user_canceled = 4.

Например, таким образом, в «RU стандарте» вызываются российские PDF формы.

Если в форме есть поля, которые пользователь может самостоятельно заполнять по кнопочке, то нужно в таблицу fp_docparams добавить два параметра:
fp_docparams-FILLABLE = ‘X’.
fp_docparams-DYNAMIC = ‘X’.

Тогда размер файла существенно сократиться, а, следовательно, и время его формирования.
Это работает только для Acrobat Reader >= 7.0

Вводная здесь: http://help.sap.com/erp2005_ehp_04/helpdata/EN/44/a36a5cdee42aabe10000000a1553f7/frameset.htm

Вспомнил, это так называются интерактивные формы! 🙂