SAPPER SETTINGS - Настройки выгрузки — различия между версиями
(Создана пустая страница) |
(→LINKS) |
||
(не показано 50 промежуточных версий 3 участников) | |||
Строка 1: | Строка 1: | ||
+ | =Настройки выгрузки= | ||
+ | После того как пользователь выбрал в списке пакет документов для отправки / просмотра, для каждой записи таблицы делается вызов программы формирования XML в соответствии с группой настроек указанной в поле INI_NAME структуры S_API2_PACKET. | ||
+ | Настройки выгрузки сгруппированы в файлы DO_*, которые содержат указание программы печати, класс получения данных, XSLT преобразование, данные отправителя и получателя, маппинг данных SAP во внутренние структуры SAPPER, на основании которых формируются XML документы. | ||
+ | |||
+ | Структура настроек выгрузки: | ||
+ | *ПолучениеДанных_Класс – класс получения данных документа (/SBIS/CL_SAP_DATA) | ||
+ | *ПолучениеДанных_Метод – метод класса получения данных. Доступные варианты: | ||
+ | ** PRINT_NAST - через программу печати основанную на структуре NAST | ||
+ | ** EFG_PRINT - через программу печати выводимые с помощью FM EFG_PRINT | ||
+ | ** PRINT_PROG - через любые ABAP программы | ||
+ | *ПолучениеДанных_XSLT – XSLT преобразование для получения XML документа во внутреннем формате (/SBIS/DOC301) | ||
+ | *assign_program – программа печати, J_3RV_DELIV_PDF | ||
+ | *ОтправительПакета_Роль, ПолучательПакета_Роль – роли отправителя и получателя пакета | ||
+ | *PRINT_SEND - параметры программы печати в режиме формирования XML | ||
+ | *PRINT_PRINT - параметры программы печати в режиме печати | ||
+ | *FILE - настройки формирования XML файлов. Список файлов, которые необходимо создать по данным программы печати. Каждый файл раздела содержит список данных, которые необходимы для формирования файла и их источников (имена глобальных объектов программы печати их содержащие). Настройка модуля в основном сводится к заполнению данного раздела. | ||
+ | ** [параметры заголовка документа] | ||
+ | ** PARAM - дополнительные параметры на уровне заголовка документа, соответствуют ИнфПолФХЖ1 из формата ФНС. | ||
+ | ** FACE - массив ролей участников документооборота | ||
+ | ** LINKS - массив ссылок на связанные документы (документы основания) | ||
+ | ** ITEMS - массив позиций документа | ||
+ | *** PARAM - дополнительные параметры на уровне позиций документа, соответствуют ИнфПолФХЖ2 из формата ФНС | ||
+ | |||
+ | ==FILE== | ||
+ | Описание маппинга документов содержатся в массиве FILE. Массив может содержать несколько документов, которые будут формироваться на основании одной программы печати, это может быть использовано для формирования накладной и вместе с ней сопроводительного документа. Значения структур программы печати кладутся в структуры /SBIS/S_XML (для заголовка), /SBIS/S_XML_DOC (для позиций). | ||
+ | |||
+ | <div style="border: 1px dashed;"> | ||
+ | пример структуры файла DO_* с двумя файлами выгрузки Накладная и ТТН | ||
+ | <div class="mw-collapsible mw-collapsed" style="overflow: hidden;"> | ||
+ | <br> | ||
+ | <source lang=JSON> | ||
+ | { | ||
+ | "ПолучениеДанных_Класс": { | ||
+ | "Значение": "/SBIS/CL_SAP_DATA" | ||
+ | }, | ||
+ | "ПолучениеДанных_Метод": { | ||
+ | "Значение": "/SBIS/PRINT_NAST" | ||
+ | }, | ||
+ | "ПолучениеДанных_XSLT": { | ||
+ | "Значение": "/SBIS/DOC301" | ||
+ | }, | ||
+ | "assign_program": { | ||
+ | "Значение": "J_3RV_DELIV_PDF" | ||
+ | }, | ||
+ | "ОтправительПакета_Роль": { | ||
+ | "Значение": "Отправитель" | ||
+ | }, | ||
+ | "ПолучательПакета_Роль": { | ||
+ | "Значение": "Получатель" | ||
+ | }, | ||
+ | "FILE": { | ||
+ | "Файл1_Накладная": { | ||
+ | }, | ||
+ | "Файл2_ТТН": { | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | ===Заголовок документа=== | ||
+ | |||
+ | Параметры заголовка документа условно можно разделить на две группы: | ||
+ | * Предопределенные параметры | ||
+ | ** NAME – наименование документа “Накладная” | ||
+ | ** XSLT_CONVERTER – необязательный, техническое имя XSLT для запасного конвертера 3.01->5.01. Если пустое, то имя конвертера вычисляется на основе (Тип_Подтип_Версия). | ||
+ | ** FILE_FORMAT_TYPE – тип документа “ЭДОНакл” | ||
+ | ** FILE_FORMAT_SUBTYPE – подтип докумета, КНД, "1175010" | ||
+ | ** FILE_FORMAT_VERSION – версия документа, по умолчанию из SAP “3.01” | ||
+ | ** FILE_ID_FORM – номер визуализации формы, по умолчанию, "1С" | ||
+ | ** FILE_NAME – префикс имени создаваемого файла, "DP_TOVTORGPR_" | ||
+ | **NAME – отображаемое имя документа, “Накладная” | ||
+ | * Динамические параметры, зависящие от конкретного документа. Этот набор параметров ставит в соответствие выходную структуру заголовка программы печати H_DOC (для J_3RV_DELIV_PDF) и структуру /SBIS/S_XML, к примеру: | ||
+ | **DATE – дата документа | ||
+ | **TIME – время документа, по умолчанию 00.00.00 | ||
+ | **ID - уникальный идентификатор, обычно номер документа | ||
+ | **NUMBER - номер документа | ||
+ | **WAERS - код валюты | ||
+ | **SUM_TAX_FREE - сумма без налога | ||
+ | **SUM - сумма | ||
+ | **TAX_SUM - сумма налога | ||
+ | **AMOUNT - количество | ||
+ | **WEIGHT_GROSS - вес брутто | ||
+ | **WEIGHT_NET - вес нетто | ||
+ | **WEIGHT_UNIT_NAME - единица измерения веса | ||
+ | |||
+ | Значение параметра для заголовка может иметь тип: | ||
+ | *Field – поле ABAP объекта | ||
+ | *String – строка | ||
+ | |||
+ | Для типов возможно применение внутренних преобразований с помощью добавления постфиксов, к примеру, Field_Date преобразует дату из формата ABAP в формат 00.00.0000, Field_WaersToCode преобразует валюту в кодовое значение валюты. Список доступных преобразований можно посмотреть в методе классе /SBIS/CL_MAPPING->CONVERT_FIELD_TYPE. | ||
+ | |||
+ | ===PARAM (ИнфПолФХЖ1)=== | ||
+ | |||
+ | Для заголовка, также можно добавить параметры следующей структуры: | ||
+ | * PARAM массив параметров с типом Param | ||
+ | ** [массив значений] | ||
+ | *** [имя параметра] | ||
+ | **** [массив NAME + VALUE] | ||
+ | ***** Имя (NAME или VALUE) | ||
+ | ***** Значение | ||
+ | ***** Тип | ||
+ | |||
+ | <div style="border: 1px dashed;"> | ||
+ | пример параметров для заголовка документа | ||
+ | <div class="mw-collapsible mw-collapsed" style="overflow: hidden;"> | ||
+ | <br> | ||
+ | <source lang=JSON> | ||
+ | "PARAM": { | ||
+ | "Тип": "Param", | ||
+ | "Значение": { | ||
+ | "Отправитель_Банковские_Данные": [ | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "Отправитель_Банковские_Данные", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "VALUE", | ||
+ | "Значение": "H_DOC-WAERK", | ||
+ | "Тип": "Field" | ||
+ | } | ||
+ | ], | ||
+ | "Получатель_Банковские_Данные": [ | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "Получатель_Банковские_Данные", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "VALUE", | ||
+ | "Значение": "H_DOC-ERDAT", | ||
+ | "Тип": "Field" | ||
+ | } | ||
+ | ], | ||
+ | "ИнфПередТабл": [ | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "ИнфПередТабл", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "VALUE", | ||
+ | "Значение": "ИнфПередТабл N 00 от 01.01.1999 Контракт 123 от 01.01.2017", | ||
+ | "Тип": "String" | ||
+ | } | ||
+ | ], | ||
+ | "ИнфПослеТабл": [ | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "ИнфПослеТабл", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "VALUE", | ||
+ | "Значение": "ИнфПослеТабл N 00 от 01.01.1999", | ||
+ | "Тип": "String" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | ===LINKS=== | ||
+ | |||
+ | В массиве LINKS можно указать ссылки на связанные документы, номер заказа, транспортную накладную и так далее. Массив описывается структурой S_XML_LINK_DOC. | ||
+ | |||
+ | Структура: | ||
+ | * LINKS тип Links | ||
+ | ** [значение] - массив документов оснований | ||
+ | *** [название документа] | ||
+ | **** [набор полей структуры S_XML_LINK_DOC], к примеру: | ||
+ | ***** NAME - наименование документа | ||
+ | ***** TYPE - тип документа | ||
+ | ***** NUMBER - номер документа | ||
+ | ***** DATE - дата документа | ||
+ | ***** TEXT - дополнительные данные | ||
+ | |||
+ | <div style="border: 1px dashed;"> | ||
+ | массив LINKS связанных документов (документов оснований) | ||
+ | <div class="mw-collapsible mw-collapsed" style="overflow: hidden;"> | ||
+ | <br> | ||
+ | <source lang=JSON> | ||
+ | "LINKS": { | ||
+ | "Тип": "Links", | ||
+ | "Значение": { | ||
+ | "Заказ": [ | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "H_DOC-GROUND", | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "TYPE", | ||
+ | "Значение": "ЗаказВх", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "NUMBER", | ||
+ | "Значение": "H_DOC-TRANSP_NUM1", | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "DATE", | ||
+ | "Значение": "H_DOC-TRANSP_DATE1", | ||
+ | "Тип": "Field_Date" | ||
+ | } | ||
+ | ], | ||
+ | "ТранНакл": [ | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "ТранНакл", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "TYPE", | ||
+ | "Значение": "", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "NUMBER", | ||
+ | "Значение": "H_DOC-TRANSP_NUM2", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "DATE", | ||
+ | "Значение": "01.01.1900", | ||
+ | "Тип": "String" | ||
+ | } | ||
+ | ], | ||
+ | //заполнение строки 5а | ||
+ | "ДокПодтвОтгр": [ | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "ДокПодтвОтгр", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "NUMBER", | ||
+ | "Значение": "VBDKR-VBELN_VL", | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "DATE", | ||
+ | "Значение": "VBDKR-LFDAT", | ||
+ | "Тип": "Field_Date" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "DATE", | ||
+ | "Значение": "00.00.0000", | ||
+ | "Тип": "Field", | ||
+ | "Подтип": "String", | ||
+ | "Формат": "IF" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "DATE", | ||
+ | "Значение": "", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "", | ||
+ | "Значение": "", | ||
+ | "Тип": "", | ||
+ | "Подтип": "", | ||
+ | "Формат": "ENDIF" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "TEXT", | ||
+ | "Значение": " VBDKR-POSNR", | ||
+ | "Тип": "Field" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | ===FACE=== | ||
+ | |||
+ | Маппинг данных ролей участников документооборота находится в массиве FACE, определяется структурой S_XML_FACE_FULL. | ||
+ | |||
+ | Структура: | ||
+ | * FACE тип Face | ||
+ | ** [значение] - массив ролей | ||
+ | *** [название роли], например Отправитель | ||
+ | **** [имя] - имя поля выходной структуры или метод получения данных класса, например, доступные методы класса /SBIS/CL_SAP_DATA: | ||
+ | ***** GET_BUKRS_BANK_BY_BUKRS - данные банка для БЕ | ||
+ | ***** GET_VKORG_BANK_BY_VKORG - данные банка для Сбытовой орг. | ||
+ | ***** GET_WERKS_BANK_BY_WERKS - данные банка для завода | ||
+ | ***** GET_KUNNR_BANK_BY_KUNNR - данные банка для customer | ||
+ | ***** GET_BUKRS_BY_BUKRS - Данные БЕ (ИНН КПП ОКПО Назв Адрес) | ||
+ | ***** GET_VKORG_BY_VKORG - Данные СбОрг (ИНН КПП ОКПО Назв Адрес) | ||
+ | ***** GET_WERKS_BY_WERKS - Данные Завода (ИНН КПП ОКПО Назв Адрес) | ||
+ | ***** GET_KUNNR_BY_KUNNR - Данные Дебитора (ИНН КПП ОКПО Назв Адрес) | ||
+ | **** [значение] - ссылка на значение входной таблицы (к примеру, H_DOC для ТОРГ-12) | ||
+ | **** [тип] - тип поля: | ||
+ | ***** Field - объекта словаря ABAP | ||
+ | ***** String - фиксированная строка | ||
+ | ***** Method - метод класса получения данных | ||
+ | ***** Concat_Field - строка получаемая конкатенацией строк | ||
+ | ***** ClassField - глобальное значение класса | ||
+ | **** [подтип] - подтип типа: | ||
+ | ***** указание класса для типа Method | ||
+ | ***** указание поля в которое объединяются строки для Concat_Field | ||
+ | |||
+ | <div style="border: 1px dashed;"> | ||
+ | массив FACE для отправителя | ||
+ | <div class="mw-collapsible mw-collapsed" style="overflow: hidden;"> | ||
+ | <br> | ||
+ | <source lang=JSON> | ||
+ | { | ||
+ | "FACE": { | ||
+ | "Тип": "Face", | ||
+ | "Значение": { | ||
+ | "Отправитель": [ | ||
+ | { | ||
+ | "Имя": "ID", | ||
+ | "Значение": "VBDKL-BUKRS", //номер БЕ | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "GET_BUKRS_BY_BUKRS", //получение данных БЕ (инн и прочее) по номеру БЕ, указанному в ID | ||
+ | "Значение": "", | ||
+ | "Тип": "Method", | ||
+ | "Подтип": "/SBIS/CL_SAP_DATA" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "GET_BUKRS_BANK_BY_BUKRS", //получение данных банка для БЕ по номеру БЕ, указанному в ID | ||
+ | "Значение": "", | ||
+ | "Тип": "Method", | ||
+ | "Подтип": "/SBIS/CL_SAP_DATA" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "INN", | ||
+ | "Значение": "H_DOC-SUPPLIERINN", //ссылка на ИНН из выходной таблицы | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "KPP", | ||
+ | "Значение": "H_DOC-SUPPLIERKPP", //ссылка на КПП из выходной таблицы | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "OKPO", | ||
+ | "Значение": "H_DOC-SUPPLIEROKPO", //ссылка на ОКПО из выходной таблицы | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "OKOPF", | ||
+ | "Значение": "H_DOC-SUPPLIEROKOPF", //ссылка на ОКОПФ из выходной таблицы | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "OKDP", | ||
+ | "Значение": "", | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "ADDR1_SP-NAME1", //наименование организации первая строка | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "ADDR1_SP-NAME2", | ||
+ | "Тип": "Concat_Field_AddLeftSpace", //конкатенация второй строки наименования организации в поле NAME с добавлением пробела слева | ||
+ | "Подтип": "NAME" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "ADDR1_SP-NAME3", | ||
+ | "Тип": "Concat_Field_AddLeftSpace", //конкатенация третьей строки наименования организации в поле NAME с добавлением пробела слева | ||
+ | "Подтип": "NAME" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "ADDR1_SP-NAME4", | ||
+ | "Тип": "Concat_Field_AddLeftSpace", //конкатенация четвертой строки наименования организации в поле NAME с добавлением пробела слева | ||
+ | "Подтип": "NAME" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "FULL_NAME", | ||
+ | "Значение": "ADDR1_SP-NAME1", | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "FULL_NAME", | ||
+ | "Значение": "ADDR1_SP-NAME2", | ||
+ | "Тип": "Concat_Field_AddLeftSpace", | ||
+ | "Подтип": "FULL_NAME" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "FULL_NAME", | ||
+ | "Значение": "ADDR1_SP-NAME3", | ||
+ | "Тип": "Concat_Field_AddLeftSpace", | ||
+ | "Подтип": "FULL_NAME" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "FULL_NAME", | ||
+ | "Значение": "ADDR1_SP-NAME4", | ||
+ | "Тип": "Concat_Field_AddLeftSpace", | ||
+ | "Подтип": "FULL_NAME" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "COUNTRY_CODE", | ||
+ | "Значение": "GR_CURRENT_DATA->COUNTRY_CODE", //получение кода страны из глобальной переменной класса получения данных | ||
+ | "Тип": "ClassField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "ADR_TEXT", | ||
+ | "Значение": "", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "ADR_TYPE", | ||
+ | "Значение": "Юридический", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "POST_CODE", | ||
+ | "Значение": "ADDR1_SP-POST_CODE1", | ||
+ | "Тип": "Concat_Field", | ||
+ | "Подтип": "ADR_TEXT" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "CITY", | ||
+ | "Значение": "ADDR1_SP-CITY1", | ||
+ | "Тип": "Concat_Field_AddLeftSpace", | ||
+ | "Подтип": "ADR_TEXT" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "STREET", | ||
+ | "Значение": "ADDR1_SP-STREET", | ||
+ | "Тип": "Concat_Field_AddLeftSpace", | ||
+ | "Подтип": "ADR_TEXT" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "HOUSE", | ||
+ | "Значение": "ADDR1_SP-HOUSE_NUM1", | ||
+ | "Тип": "Concat_Field_AddLeftSpace", | ||
+ | "Подтип": "ADR_TEXT" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "PHONE", | ||
+ | "Значение": "ADDR1_SP-TEL_NUMBER", | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "FAX", | ||
+ | "Значение": "ADDR1_SP-FAX_NUMBER", | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "EMAIL", | ||
+ | "Значение": "", | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "BANK_NAME", | ||
+ | "Значение": "SP_BANK-NAME", | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "BANK_BIK", | ||
+ | "Значение": "SP_BANK-BIK", | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "BANK_CORACC", | ||
+ | "Значение": "GR_CURRENT_DATA->BANK_CORACC", | ||
+ | "Тип": "ClassField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "BANK_ACC", | ||
+ | "Значение": "SP_BANK-ACC_NUM", | ||
+ | "Тип": "Field" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "PARAM", //свободные параметры | ||
+ | "Тип": "Param", | ||
+ | "Значение": { | ||
+ | "BANK_CITY": [ | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "BANK_CITY", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "VALUE", | ||
+ | "Значение": "GR_HIGHER_DATA->BANK_CITY", | ||
+ | "Тип": "ClassField" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | ===ITEMS=== | ||
+ | |||
+ | Позиции документа отражаются в массиве ITEMS, описываемом структурой /SBIS/S_DOC_ITEM. | ||
+ | |||
+ | Структура ITEMS: | ||
+ | * ITEMS тип Items | ||
+ | ** [значение] | ||
+ | *** [указание на таблицу позиций программы печати] | ||
+ | **** [маппинг полей таблицы позиций программы печати] | ||
+ | ***** [имя] - имя поля из структуры /SBIS/S_XML | ||
+ | ***** [значение] - имя поля из структуры программы печати | ||
+ | ***** [тип] - тип поля | ||
+ | ****** String - фиксированная строка | ||
+ | ****** ItemField, список возможных модификаторов можно посмотреть в методе класса /SBIS/CL_MAPPING->CONVERT_FIELD_TYPE, к примеру: | ||
+ | ******* ItemField_Matnr - удаляет лидирующие нули у номера материала | ||
+ | ******* ItemField_Unitlongname - преобразует имя единицу измерения в длинное имя | ||
+ | ******* ItemField_Unitcode - преобразует имя единицы измерения в код | ||
+ | **** [параметры ИнфПолФХЖ2] - тип Param, имя+значение: | ||
+ | ***** [имя параметра] | ||
+ | ****** [имя] - NAME или VALUE | ||
+ | ****** [значение] - значение параметра | ||
+ | ****** [тип] - тип параметра: | ||
+ | ******* String - фиксированная строка | ||
+ | ******* Field - поле структуры залоговка | ||
+ | ******* ItemField - поле структуры позиции | ||
+ | **** TRACING - тип Items, данные для прослеживаемости товара (узел «СведПрослеж» ) для текущей позиции документа. Описываются структурой /SBIS/S_DOC_ITEM_TRACING, где: | ||
+ | ***** NUMBER – атрибут НомТовПрослеж | ||
+ | ***** CODE - атрибут ЕдИзмПрослеж | ||
+ | ***** CODE_NAME - атрибут НаимЕдИзмПрослеж | ||
+ | ***** AMOUNT - атрибут КолВЕдПрослеж | ||
+ | ***** INFO - атрибут ДопПрослеж | ||
+ | **** CIM тип Items, данные для маркировки товара (узел «НомСредИдентТов» ) для текущей позиции документа. Описываются структурой /SBIS/S_DOC_ITEM_CIM, где | ||
+ | ***** PARENT - атрибут ИдентТрансУпак | ||
+ | ***** CIM – атрибут Значение узла КИЗ | ||
+ | |||
+ | <div style="border: 1px dashed;"> | ||
+ | пример массива позиций ITEMS для программы печати | ||
+ | <div class="mw-collapsible mw-collapsed" style="overflow: hidden;"> | ||
+ | <br> | ||
+ | <source lang=JSON> | ||
+ | "ITEMS": { | ||
+ | "Тип": "Items", | ||
+ | "Значение": { | ||
+ | "ITEMS": [ //указание на массив ITEMS из программы печати | ||
+ | { | ||
+ | "Имя": "NUMBER", | ||
+ | "Значение": "POSNUM", //маппинг полей структуры ITEMS в /SBIS/S_XML | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "ARKTX", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "ID", | ||
+ | "Значение": "MATNR", | ||
+ | "Тип": "ItemField_Matnr" //использование модификатора преобразования | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "PRICE", | ||
+ | "Значение": "PRICE", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "AMOUNT", | ||
+ | "Значение": "LFIMG", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "UNIT_NAME", | ||
+ | "Значение": "MSEHI", | ||
+ | "Тип": "ItemField_Unitlongname" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "UNIT_CODE", | ||
+ | "Значение": "MSEHI", | ||
+ | "Тип": "ItemField_Unitcode" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "SUM_TAX_FREE", | ||
+ | "Значение": "NETWR", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "SUM", | ||
+ | "Значение": "WRBTR", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "TAX_SUM", | ||
+ | "Значение": "VAT", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "TAX_TYPE", | ||
+ | "Значение": "процент", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "TAX_RATE", | ||
+ | "Значение": "ST_VAT", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "EXCISE_SUM", | ||
+ | "Значение": "", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "WEIGHT_NET", | ||
+ | "Значение": "NTGEW", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "WEIGHT_GROSS", | ||
+ | "Значение": "BRGEW", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "WEIGHT_UNIT_NAME", | ||
+ | "Значение": "GEWEI", | ||
+ | "Тип": "ItemField_Unitname" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "PACK_NAME", | ||
+ | "Значение": "MAGRV", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "PACK_AMOUNT", | ||
+ | "Значение": "PLACES", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "PACK_SIZE", | ||
+ | "Значение": "IN1PL", | ||
+ | "Тип": "ItemField" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "PARAM", //свободные параметры | ||
+ | "Тип": "Param", | ||
+ | "Значение": { | ||
+ | "НомерПУ": [ | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "НомерПУ", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "VALUE", | ||
+ | "Значение": "MATNR", | ||
+ | "Тип": "ItemField" | ||
+ | } | ||
+ | ], | ||
+ | "НаименованиеПУ": [ | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "НаименованиеПУ", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "VALUE", | ||
+ | "Значение": "ARKTX", | ||
+ | "Тип": "ItemField" | ||
+ | } | ||
+ | ], | ||
+ | "ДатаПоказаний": [ | ||
+ | { | ||
+ | "Имя": "NAME", | ||
+ | "Значение": "ДатаПоказаний", | ||
+ | "Тип": "String" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "VALUE", | ||
+ | "Значение": "H_DOC-ERDAT", | ||
+ | "Тип": "Field_Date" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | ==PRINT_SEND, PRINT_PRINT== | ||
+ | Массивы PRINT_PRINT и PRINT_SEND содержат параметры программы печати в режиме печати и в режиме формирования XML, соответственно. По сути это маппинг части ключевых полей таблицы NAST. | ||
+ | |||
+ | Структура: | ||
+ | * [PRINT_SEND\PRINT_PRINT] | ||
+ | ** [значение] - массив значений | ||
+ | *** print_program - программа печати | ||
+ | *** print_form - точка входа в программу печати | ||
+ | *** tnapr-sform - печатная форма | ||
+ | *** nast-kappl - приложение | ||
+ | *** nast-parvw - роль партнера | ||
+ | *** nast-nacha - тип обмена (1 - вывод на печать, 8 - электронная отправка) | ||
+ | *** nast-kschl - тип сообщения | ||
+ | *** nast-objtype - тип объекта | ||
+ | *** nast-spras - язык | ||
+ | |||
+ | <div style="border: 1px dashed;"> | ||
+ | пример PRINT_SEND и PRINT_PRINT для программы печати J_3RV_DELIV_PDF с точкой входа ENTRY, печатной формой J_3RV_T12_PDF | ||
+ | <div class="mw-collapsible mw-collapsed" style="overflow: hidden;"> | ||
+ | <br> | ||
+ | <source lang=JSON> | ||
+ | { | ||
+ | "PRINT_PRINT": { | ||
+ | "Значение": [ | ||
+ | { | ||
+ | "Имя": "print_program", | ||
+ | "Значение": "J_3RV_DELIV_PDF" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "print_form", | ||
+ | "Значение": "ENTRY" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "tnapr-sform", | ||
+ | "Значение": "J_3RV_T12_PDF" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-kappl", | ||
+ | "Значение": "V2" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-parvw", | ||
+ | "Значение": "WE" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-nacha", | ||
+ | "Значение": "1" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-kschl", | ||
+ | "Значение": "LD00" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-objtype", | ||
+ | "Значение": "LIKP" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-spras", | ||
+ | "Значение": "R" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-dimme", | ||
+ | "Значение": "X" | ||
+ | } | ||
+ | ] | ||
+ | }, | ||
+ | "PRINT_SEND": { | ||
+ | "Значение": [ | ||
+ | { | ||
+ | "Имя": "print_program", | ||
+ | "Значение": "J_3RV_DELIV_PDF" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "print_form", | ||
+ | "Значение": "ENTRY" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "tnapr-sform", | ||
+ | "Значение": "J_3RV_T12_PDF" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-kappl", | ||
+ | "Значение": "V2" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-parvw", | ||
+ | "Значение": "WE" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-nacha", | ||
+ | "Значение": "8" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-kschl", | ||
+ | "Значение": "LD00" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-objtype", | ||
+ | "Значение": "LIKP" | ||
+ | }, | ||
+ | { | ||
+ | "Имя": "nast-spras", | ||
+ | "Значение": "R" | ||
+ | } | ||
+ | ] | ||
+ | } | ||
+ | } | ||
+ | </source> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | |||
+ | |||
+ | [[Категория:SAP]] | ||
+ | [[Категория:SAPPER]] |
Текущая версия на 13:08, 30 июля 2021
Содержание
Настройки выгрузки
После того как пользователь выбрал в списке пакет документов для отправки / просмотра, для каждой записи таблицы делается вызов программы формирования XML в соответствии с группой настроек указанной в поле INI_NAME структуры S_API2_PACKET. Настройки выгрузки сгруппированы в файлы DO_*, которые содержат указание программы печати, класс получения данных, XSLT преобразование, данные отправителя и получателя, маппинг данных SAP во внутренние структуры SAPPER, на основании которых формируются XML документы.
Структура настроек выгрузки:
- ПолучениеДанных_Класс – класс получения данных документа (/SBIS/CL_SAP_DATA)
- ПолучениеДанных_Метод – метод класса получения данных. Доступные варианты:
- PRINT_NAST - через программу печати основанную на структуре NAST
- EFG_PRINT - через программу печати выводимые с помощью FM EFG_PRINT
- PRINT_PROG - через любые ABAP программы
- ПолучениеДанных_XSLT – XSLT преобразование для получения XML документа во внутреннем формате (/SBIS/DOC301)
- assign_program – программа печати, J_3RV_DELIV_PDF
- ОтправительПакета_Роль, ПолучательПакета_Роль – роли отправителя и получателя пакета
- PRINT_SEND - параметры программы печати в режиме формирования XML
- PRINT_PRINT - параметры программы печати в режиме печати
- FILE - настройки формирования XML файлов. Список файлов, которые необходимо создать по данным программы печати. Каждый файл раздела содержит список данных, которые необходимы для формирования файла и их источников (имена глобальных объектов программы печати их содержащие). Настройка модуля в основном сводится к заполнению данного раздела.
- [параметры заголовка документа]
- PARAM - дополнительные параметры на уровне заголовка документа, соответствуют ИнфПолФХЖ1 из формата ФНС.
- FACE - массив ролей участников документооборота
- LINKS - массив ссылок на связанные документы (документы основания)
- ITEMS - массив позиций документа
- PARAM - дополнительные параметры на уровне позиций документа, соответствуют ИнфПолФХЖ2 из формата ФНС
FILE
Описание маппинга документов содержатся в массиве FILE. Массив может содержать несколько документов, которые будут формироваться на основании одной программы печати, это может быть использовано для формирования накладной и вместе с ней сопроводительного документа. Значения структур программы печати кладутся в структуры /SBIS/S_XML (для заголовка), /SBIS/S_XML_DOC (для позиций).
пример структуры файла DO_* с двумя файлами выгрузки Накладная и ТТН
Заголовок документа
Параметры заголовка документа условно можно разделить на две группы:
- Предопределенные параметры
- NAME – наименование документа “Накладная”
- XSLT_CONVERTER – необязательный, техническое имя XSLT для запасного конвертера 3.01->5.01. Если пустое, то имя конвертера вычисляется на основе (Тип_Подтип_Версия).
- FILE_FORMAT_TYPE – тип документа “ЭДОНакл”
- FILE_FORMAT_SUBTYPE – подтип докумета, КНД, "1175010"
- FILE_FORMAT_VERSION – версия документа, по умолчанию из SAP “3.01”
- FILE_ID_FORM – номер визуализации формы, по умолчанию, "1С"
- FILE_NAME – префикс имени создаваемого файла, "DP_TOVTORGPR_"
- NAME – отображаемое имя документа, “Накладная”
- Динамические параметры, зависящие от конкретного документа. Этот набор параметров ставит в соответствие выходную структуру заголовка программы печати H_DOC (для J_3RV_DELIV_PDF) и структуру /SBIS/S_XML, к примеру:
- DATE – дата документа
- TIME – время документа, по умолчанию 00.00.00
- ID - уникальный идентификатор, обычно номер документа
- NUMBER - номер документа
- WAERS - код валюты
- SUM_TAX_FREE - сумма без налога
- SUM - сумма
- TAX_SUM - сумма налога
- AMOUNT - количество
- WEIGHT_GROSS - вес брутто
- WEIGHT_NET - вес нетто
- WEIGHT_UNIT_NAME - единица измерения веса
Значение параметра для заголовка может иметь тип:
- Field – поле ABAP объекта
- String – строка
Для типов возможно применение внутренних преобразований с помощью добавления постфиксов, к примеру, Field_Date преобразует дату из формата ABAP в формат 00.00.0000, Field_WaersToCode преобразует валюту в кодовое значение валюты. Список доступных преобразований можно посмотреть в методе классе /SBIS/CL_MAPPING->CONVERT_FIELD_TYPE.
PARAM (ИнфПолФХЖ1)
Для заголовка, также можно добавить параметры следующей структуры:
- PARAM массив параметров с типом Param
- [массив значений]
- [имя параметра]
- [массив NAME + VALUE]
- Имя (NAME или VALUE)
- Значение
- Тип
- [массив NAME + VALUE]
- [имя параметра]
- [массив значений]
пример параметров для заголовка документа
LINKS
В массиве LINKS можно указать ссылки на связанные документы, номер заказа, транспортную накладную и так далее. Массив описывается структурой S_XML_LINK_DOC.
Структура:
- LINKS тип Links
- [значение] - массив документов оснований
- [название документа]
- [набор полей структуры S_XML_LINK_DOC], к примеру:
- NAME - наименование документа
- TYPE - тип документа
- NUMBER - номер документа
- DATE - дата документа
- TEXT - дополнительные данные
- [набор полей структуры S_XML_LINK_DOC], к примеру:
- [название документа]
- [значение] - массив документов оснований
массив LINKS связанных документов (документов оснований)
FACE
Маппинг данных ролей участников документооборота находится в массиве FACE, определяется структурой S_XML_FACE_FULL.
Структура:
- FACE тип Face
- [значение] - массив ролей
- [название роли], например Отправитель
- [имя] - имя поля выходной структуры или метод получения данных класса, например, доступные методы класса /SBIS/CL_SAP_DATA:
- GET_BUKRS_BANK_BY_BUKRS - данные банка для БЕ
- GET_VKORG_BANK_BY_VKORG - данные банка для Сбытовой орг.
- GET_WERKS_BANK_BY_WERKS - данные банка для завода
- GET_KUNNR_BANK_BY_KUNNR - данные банка для customer
- GET_BUKRS_BY_BUKRS - Данные БЕ (ИНН КПП ОКПО Назв Адрес)
- GET_VKORG_BY_VKORG - Данные СбОрг (ИНН КПП ОКПО Назв Адрес)
- GET_WERKS_BY_WERKS - Данные Завода (ИНН КПП ОКПО Назв Адрес)
- GET_KUNNR_BY_KUNNR - Данные Дебитора (ИНН КПП ОКПО Назв Адрес)
- [значение] - ссылка на значение входной таблицы (к примеру, H_DOC для ТОРГ-12)
- [тип] - тип поля:
- Field - объекта словаря ABAP
- String - фиксированная строка
- Method - метод класса получения данных
- Concat_Field - строка получаемая конкатенацией строк
- ClassField - глобальное значение класса
- [подтип] - подтип типа:
- указание класса для типа Method
- указание поля в которое объединяются строки для Concat_Field
- [имя] - имя поля выходной структуры или метод получения данных класса, например, доступные методы класса /SBIS/CL_SAP_DATA:
- [название роли], например Отправитель
- [значение] - массив ролей
массив FACE для отправителя
ITEMS
Позиции документа отражаются в массиве ITEMS, описываемом структурой /SBIS/S_DOC_ITEM.
Структура ITEMS:
- ITEMS тип Items
- [значение]
- [указание на таблицу позиций программы печати]
- [маппинг полей таблицы позиций программы печати]
- [имя] - имя поля из структуры /SBIS/S_XML
- [значение] - имя поля из структуры программы печати
- [тип] - тип поля
- String - фиксированная строка
- ItemField, список возможных модификаторов можно посмотреть в методе класса /SBIS/CL_MAPPING->CONVERT_FIELD_TYPE, к примеру:
- ItemField_Matnr - удаляет лидирующие нули у номера материала
- ItemField_Unitlongname - преобразует имя единицу измерения в длинное имя
- ItemField_Unitcode - преобразует имя единицы измерения в код
- [параметры ИнфПолФХЖ2] - тип Param, имя+значение:
- [имя параметра]
- [имя] - NAME или VALUE
- [значение] - значение параметра
- [тип] - тип параметра:
- String - фиксированная строка
- Field - поле структуры залоговка
- ItemField - поле структуры позиции
- [имя параметра]
- TRACING - тип Items, данные для прослеживаемости товара (узел «СведПрослеж» ) для текущей позиции документа. Описываются структурой /SBIS/S_DOC_ITEM_TRACING, где:
- NUMBER – атрибут НомТовПрослеж
- CODE - атрибут ЕдИзмПрослеж
- CODE_NAME - атрибут НаимЕдИзмПрослеж
- AMOUNT - атрибут КолВЕдПрослеж
- INFO - атрибут ДопПрослеж
- CIM тип Items, данные для маркировки товара (узел «НомСредИдентТов» ) для текущей позиции документа. Описываются структурой /SBIS/S_DOC_ITEM_CIM, где
- PARENT - атрибут ИдентТрансУпак
- CIM – атрибут Значение узла КИЗ
- [маппинг полей таблицы позиций программы печати]
- [указание на таблицу позиций программы печати]
- [значение]
пример массива позиций ITEMS для программы печати
PRINT_SEND, PRINT_PRINT
Массивы PRINT_PRINT и PRINT_SEND содержат параметры программы печати в режиме печати и в режиме формирования XML, соответственно. По сути это маппинг части ключевых полей таблицы NAST.
Структура:
- [PRINT_SEND\PRINT_PRINT]
- [значение] - массив значений
- print_program - программа печати
- print_form - точка входа в программу печати
- tnapr-sform - печатная форма
- nast-kappl - приложение
- nast-parvw - роль партнера
- nast-nacha - тип обмена (1 - вывод на печать, 8 - электронная отправка)
- nast-kschl - тип сообщения
- nast-objtype - тип объекта
- nast-spras - язык
- [значение] - массив значений
пример PRINT_SEND и PRINT_PRINT для программы печати J_3RV_DELIV_PDF с точкой входа ENTRY, печатной формой J_3RV_T12_PDF