Настройка и работа с полуформализованными документами ===================================================== Обмен полуформализованными документами осуществляется на уровне REST интеграции. .. _halfnonf_opt_new: Создание нового полуформализованного документа ---------------------------------------------- Для создания и настройки полуформализованных документов в системе SAP создана таблица ``/TRL/XDE_NONF_TY``. Таблица является предзаполненной и содержит все типы полуформализованных документов в разрезе операторов, настроенные в xDE для SAP ERP на момент выхода текущей версии Продукта. Для создания нового полуформализованного документа нужно внести изменения в таблицу. Описание полей таблицы ``/TRL/XDE_NONF_TY`` можно найти в разделе :ref:`nonf_ty_tab`. .. image:: media/pic3.png :scale: 60 % :align: center Для ведения настроек полуформализованных документов используется ракурс ведения таблицы ``/TRL/XDE_NONF_TY`` (транзакция ``SM30``), который позволяет добавлять новые записи или изменять старые. Возможны следующие настройки полуформализованных документов: * Создание новых записей полуформализованных документов в разрезе операторов; * Изменение названия используемой ABAP структуры для создания атрибутов; * Изменение названия метода для обработки данных по текущему типу полуформализованного документа; Поскольку для разных операторов один и тот же документ в SAP может иметь разные имена (поле ``OED_NONF_NAME``), то ключевыми полями являются ``SAP_NONF_TYP`` (связь с ``/TRL/XDE_SHIP_TY-SAP_NONF_TYP``) и идентификатор оператора ``ID_OED``. .. important:: Если в таблице ``/TRL/XDE_NONF_TY`` для выбранного оператора не будет найден искомый тип полуформализованного документа – документ будет отправлен как обычный неформализованный документ. .. note:: Если в таблице ``/TRL/XDE_NONF_TY`` по кастомной настройке "SETTINGS_SET" не будет найден полуформализованный документ - поиск будет выполнен с пустой настройкой (задано по умолчанию). Если тип полуформализиванного документа не будет найден и в этом случае - документ будет проложен как неформализованный. Поле ``OED_NONF_NAME`` содержит имя полуформализованного документа на стороне оператора. Именно это значение попадает в поле ``CUSTOM_TYPE`` при отправке полуформализованного документа. Поле ``DDIC_STR_NAME`` содержит имя глобальной плоской (без вложенных структур и таблиц) ABAP структуры, что используется для передачи атрибутов с определенными именами. Каждое поле такой структуры будет являться именем атрибута. Для того, чтобы корректно передавать атрибуты в формате JSON, в котором важен регистр букв, реализована следующая логика: при преобразовании данных в JSON используется метод ``CONVERSATE`` класса ``/TRL/XDE_CL_HALFNONF_PROC``, который сначала переводит имя поля структуры в нижний регистр, а затем переводит в верхний регистр те буквы в имени поля, перед которыми стоит знак нижнего подчеркивания. .. image:: media/pic4.png :scale: 100 % :align: center Таким образом, поле ``_CONTRACT_PRICE`` (см. рисунок выше) будет преобразован в ``ContractPrice``. Поле ``METH_NAME`` - метод, который можно создать в пользовательском классе и который будет вызван динамически в функциональном модуле, созданном для работы с полуформализованными документами ``/TRL/XDE_OUT_HALF_GET_DATA``. Метод должен иметь определенный интерфейс. Метод используется для того, чтобы заполнить атрибуты полуформализованного документа. Описание данного класса приведено в разделе :ref:`nonf_class`. .. list-table:: Описание параметров метода из поля METH_NAME :widths: auto :header-rows: 1 * - Имя параметра - Вид - Тип - Описание * - IS_HEADER - Importing - /TRL/XDE_HEADER - Заголовок элемента ЭДО * - IT_DOCUMENTS - Importing - /TRL/XDE_T_DOCUMENTS - Список документов * - IS_CERT - Importing - /TRL/XDE_S_SAP_DOC_TYPE_CERT - Набор сертификатов * - IS_NONF_TY - Importing - /TRL/XDE_NONF_TY - Данные полуформализ. документа * - ES_RETURN - Exporting - /TRL/XDE_RETURN - Код и текст сообщения * - CR_DATA - Changing - DATA - Данные в любом виде По умолчанию классом-обработчиком в настройках, в таблице ``/TRL/XDE_CUST``, стоит класс ``/TRL/XDE_CL_HALFNONF_DOCS``. Чтобы изменить класс-обработчик, необходимо открыть ракурс ведения таблицы ``/TRL/XDE_CUST`` и установить необходимый класс в настройку по имени ``HALFNONF_CLASS``, в которой по умолчанию хранится класс ``/TRL/XDE_CL_HALFNONF_DOCS``. Настройка созданного полуформализованного документа --------------------------------------------------- Для создания нового вида документа SAP необходимо сделать соответствующие настройки в таблице ``/TRL/XDE_SHIP_TY``. Для ведения данной таблицы существует ракурс ведения ``/TRL/XDE_SHIP_TY`` (транзакция ``SM30``). .. image:: media/pic1.png :scale: 52 % :align: center При этом необходимо указать в качестве ``OED_DOC_TYPE`` (Операторский тип документа) значение «NONF» (Неформализованный документ), а в качестве ``SAP_DOC_TYPE`` (Тип документа SAP) - любое название, отличающееся от «NONF». В поле ``SAP_NONF_TYP`` необходимо указать имя полуформализованного документа. Через поле ``SAP_NONF_TYP`` осуществляется связь с таблицей ``/TRL/XDE_NONF_TY`` и проверка данного поля в методе ``CHECK_HALFNONF``. Кроме того, необходимо добавить данный новый вид документа в таблицу ``/TRL/XDE_SOUT_OB``, связав таким образом вид документа с бизнес-объектом. Для этого можно воспользоваться транзакцией ``SM30`` и ракурсом ``/TRL/XDE_SOUT_OB``. .. image:: media/pic2.png :scale: 100 % :align: center Изменения в карточке документа ------------------------------ При отправке/получении полуформализованного документа создаются записи в таблице ``/TRL/XDE_NONF_AT``, если для данного полуформализованного документа имеются атрибуты (наличие или отсутствие атрибутов зависит от регламента передачи полуформализованных документов оператором). Таким образом, при переходе к карточке документа с главного экрана журналов xDE, можно увидеть новую вкладку «Атрибуты». .. image:: media/pic5.png :scale: 100 % :align: center Вкладка «Атрибуты» появляется только для полуформализованных документов, причем если для данного документа нет атрибутов, т.е. отсутствуют записи в таблице ``/TRL/XDE_NONF_AT``, то вкладка будет отображаться, но данных на вкладке не будет.