Настроить формирование xml-документов с помощью программ печати
  1. Saby
  2. База знаний
  3. SAP
  4. Установка и настройка
  5. Настроить программы печати

Настроить формирование xml-документов с помощью программ печати

SAPPER использует имеющиеся программы печати для формирования xml-документов. Это позволяет избежать дублирования алгоритма формирования документа.

Алгоритм формирования электронного документа

  1. Для каждого отправляемого документа SAPPER вызывает программу печати, которая указана в настройках модуля.
  2. Программа рассчитывает данные для печати.
  3. Перед вызовом формуляра управление передается модулю SAPPER. Модуль проверяет, кем была запущена программа печати. Если это:
    • не SAPPER — управление возвращается программе печати;
    • SAPPER — выбирает подготовленные программой печати данные. Выбор данных определяется по настройкам выгрузки. Затем формируется xml-документ. По окончании процесса модуль возвращает флаг, который говорит о необходимости прервать программу печати.

Этот алгоритм работает с любыми версиями SAP, типами документов и отчетов (не зависит от функционала, реализованного SAP для журнала электронных счетов-фактур из российского адд-он).

Доработка программ печати

При установке модуля SAPPER изменения в стандартных программах печати производятся автоматически. В клиентских программах (Z-программах) необходимо вручную внести изменения. Вы можете сделать это самостоятельно или обратиться к вашему менеджеру, чтобы заказать услуги внедрения.

Перед тем как вносить изменения в программу печати, обязательно сделайте ее копию. Рекомендуемый шаблон названия копии программы «[ZSBIS_][Старое название программы]». Вместо копий программ печати можно использовать стандартные BADI в программах печати. Например, «J_3R_TORG12_BADI» для программы печати накладной «J_3RV_DELIV_PDF» или «J_3R_INV_BADI» для программы печати фактуры «J_3RV_INV_A».

В программу печати или ее копию добавьте вызов метода SAPPER. Метод должен завершать действия программы печати после формирования электронного документа.

Пример кода, который нужно добавить перед вызовом формуляра в каждую программу печати:

Если в формулярах печатных форм есть логика расчета данных документа, перенесите ее в программу печати.

Особенности вызова SAPPER, если Z-программы печати используют подпрограммы

  1. Сначала запускается подпрограмма «ENTRY». Это оболочка для подпрограммы «PROCESSING». Она передает код возврата, в ней изменения не понадобятся.
  2. Вызовите печать из тела подпрограммы «PROCESSING».
  3. Вставьте Saby-код формирования электронных документов до вызова печати («PRINT»).

В зависимости от флага «gv_not_print» происходит либо печать, либо выход из программы с правильным кодом возврата.

В SAPPER реализованы стандартные BADI и точки расширения для программ печати:

  • класс «/SBIS/CL_J_3R_INV_BADI» — для печати накладных;
  • класс «/SBIS/CL_J3R_TORG12_BADI» — для печати счетов-фактур;
  • точка расширения «/SBIS/ENHI_J_3RV_TORG12_BIL» — для печати актов.

Убедитесь, что активированы BADI «J_3R_TORG12_BADI», «J_3R_INV_BADI» и точка расширения «ESJ_3RV_FORM_UPDATE». Используйте готовые решения, реализованные в данных классах.

Если BADI активированы, установлен статус «Реализация вызывается».

Пример вызова из BADI для программы печати накладной ТОРГ-12:

В зависимости от флага «gv_not_print» происходит либо печать, либо выход из BADI и из программы печати.

Вызов из формуляра нужен, когда в системе нет отдельной программы печати или когда значительная часть логики перенесена в формуляр.

Особенности вызова

  • Из программы печати вызывается формуляр. Из него нужно вызвать код Saby, затем выйти из формуляра, а после — из программы.
  • Передаваемые в SAPPER данные формуляра должны быть объявлены глобально.
  • Вызов кода Saby нужно вставлять в элемент смартформы «строки программы» — там есть доступ к подготовленным данным печати. Например, в основной цикл по позициям.
  • Не нужно вставлять код Saby в инициализацию. В ней у SAPPER нет доступа к глобальным переменным формуляра через assign. Также в инициализации не обеспечивается корректный выход из формуляра «/ФМ» со значением «rc=0».

Пример кода Saby:

Как правило, программа печати не требует изменений и сама формирует код возврата.

Вызов из формуляра нужен, когда в системе нет отдельной программы печати или когда значительная часть логики перенесена в формуляр.

Особенности вызова

  • Из программы печати вызывается формуляр. Из него нужно вызвать код Saby, затем выйти из формуляра, а после — из программы.
  • Вызов кода Saby нужно вставлять в интерфейсе формуляра в код инициализации или в подпрограмму — там есть доступ к подготовленным данным печати.

Пример кода Saby:

В программе печати нужно предусмотреть корректный выход с правильным кодом возврата.

Пример:

Возможные доработки программ печати

В программе печати данные, которые нужны для корректного формирования xml, должны храниться в отдельных полях. Например, в программе печати данные о контрагенте (наименование, ИНН/КПП) содержатся в одном поле, а в печатной форме документа — в отдельных строках.

Нашли неточность? Выделите текст с ошибкой и нажмите ctrl + enter.
Используя наш сайт, вы даете согласие на обработку персональных данных