Получение информации об отправителе и получателе ================================================ .. code:: abap *"-------------------------------------------------------------------- *"*"Локальный интерфейс: *" IMPORTING *" REFERENCE(IS_OBJECT) TYPE BORIDENT *" REFERENCE(IV_ID_OED) TYPE /TRL/XDE_HEADER-ID_OED OPTIONAL *" REFERENCE(IV_FLAG_DISPLAY) DEFAULT '' *" EXPORTING *" REFERENCE(EV_ID_OED) TYPE /TRL/XDE_HEADER-ID_OED *" REFERENCE(EV_ID_BOX_SAP) TYPE /TRL/XDE_HEADER-ID_BOX_SAP *" REFERENCE(EV_ID_BOX_OED) TYPE /TRL/XDE_HEADER-ID_BOX_OED *" REFERENCE(EV_ID_BOX_CAR) TYPE /TRL/XDE_HEADER-ID_BOX_CAR *" REFERENCE(EV_SENTYPE) TYPE /TRL/XDE_HEADER-SENTYPE *" REFERENCE(EV_SENDER) TYPE /TRL/XDE_HEADER-SENDER *" REFERENCE(EV_RECTYPE) TYPE /TRL/XDE_HEADER-RECTYPE *" REFERENCE(EV_RECEIVER) TYPE /TRL/XDE_HEADER-RECIEVER *" REFERENCE(EV_BUKRS) TYPE BUKRS *" REFERENCE(EV_CARRIER) TYPE /TRL/XDE_HEADER-CARRIER *" REFERENCE(EV_CARTYPE) TYPE /TRL/XDE_HEADER-CARTYPE *" EXCEPTIONS *" NO_FOUND_SENDER *" NO_FOUND_RECIEVER *" NO_FOUND_SENDER_DATA *" NO_FOUND_RECIEVER_DATA *" ERROR *" USER_CANCEL Функциональный модуль ``/TRL/XDE_API_BO_GET_PARTNERS`` предназначен для получения информации об отправителе и получателе исходящего документооборота для инстанции бизнес-объекта SAP. .. table:: Описание интерфейса функционального модуля ``TRL/XDE_API_BO_GET_PARTNERS`` :align: center :widths: 5 8 +------------------------------------+-------------------------------------------------------------------------------------------------------+ | Параметр | Описание | +====================================+=======================================================================================================+ | ``IMPORTING`` | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IS_OBJECT`` | Тип и ключ бизнес-объекта SAP. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IV_ID_OED`` | Идентификатор оператора (см. таблицу ``/TRL/XDE_OED``), для которого необходимо получить информацию о | | | контрагентах документооборота. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``IV_FLAG_DISPLAY`` | Если параметр равен «X» и найдено несколько возможных вариантов отправителя/получателя, то | | | пользователю выводится экран выбора отправителя/получателя. В противном случае берутся | | | отправитель/получатель, отмеченный флагом «По умолчанию» в таблице ``/TRL/XDE_BOX_ID``, либо первый | | | найденный, если флаг «По умолчанию» не установлен. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EXPORTING`` | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_ID_OED`` | Идентификатор оператора, для которого определены отправитель/получатель. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_ID_BOX_SAP`` | Идентификатор ящика отправителя в системе ОЭД. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_ID_BOX_OED`` | Идентификатор ящика получателя в системе ОЭД. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_ID_BOX_CAR`` | Идентификатор ящика перевозчика в системе ОЭД. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_SENTYPE`` | Тип отправителя: «K» - кредитор, «D» - дебитор. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_SENDER`` | Идентификатор контрагента SAP, соответствующий отправителю документа. Если ``E_SENTYPE = «K»``, то | | | номер кредитора (LFA1). Если ``E_SENTYPE = «D»``, то номер дебитора (KNA1). | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_RECTYPE`` | Тип получателя: «K» - кредитор, «D» - дебитор. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_RECEIVER`` | Идентификатор контрагента SAP, соответствующий получателю документа. Если ``E_SENTYPE = «K»``, | | | то номер кредитора (LFA1). Если ``E_SENTYPE = «D»``, то номер дебитора (KNA1). | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_BUKRS`` | Балансовая единица. Заполнен в случае, если в качестве отправителя используется Балансовая единица. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_CARTYPE`` | Тип перевозчика: «K» - кредитор, «D» - дебитор. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EV_CARRIER`` | Идентификатор контрагента SAP, соответствующий получателю документа. Если ``EV_CARTYPE = «K»``, | | | то номер кредитора (LFA1). Если ``EV_CARTYPE = «D»``, то номер дебитора (KNA1). | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``EXCEPTIONS`` | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``NO_FOUND_SENDER`` | Отправитель не найден. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``NO_FOUND_RECIEVER`` | Получатель не найден. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``NO_FOUND_SENDER_DATA`` | Не найдена информация об отправителе (ящик в системе ОЭД и т.д.). | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``NO_FOUND_RECIEVER_DATA`` | Не найдена информация о получателе (ящик в системе ОЭД и т.д.). | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``ERROR`` | Неизвестная ошибка. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ | ``USER_CANCEL`` | Выбор отправителя/получателя отменен пользователем. | +------------------------------------+-------------------------------------------------------------------------------------------------------+ Функциональный модуль для определения отправителя/получателя вызывает внутри себя функциональный модуль ``/TRL/XDE_GET_AGENTS_BOX_BY_OBJ``. Этот модуль в первую очередь получает контрагентов. Для этого выполняется поиск настраиваемого функционального модуля по имени настройки «FM_SHIP_OUT_PARTNERS» в таблице ``/TRL/XDE_CUST``. Если имя ФМ найдено и этот ФМ существует в системе и активен, происходит вызов настроенного ФМ (в качестве примера можно посмотреть ФМ ``/TRL/XDE_OUT_GET_AGENTS``). Если ФМ не найден, будет вызвана особая ситуация ERROR c текстом сообщения «Не задан ФМ определения выставителя/получателя (``/TRL/XDE_SHIP_TY``)». Если в результате работы этого ФМ поле получатель оказалось пустым, вызывается особая ситуация ``NO_FOUND_RECEIVER`` (Получатель не найден) с сообщением «Не удалось определить получателя для документа». Подобным образом проверяется отправитель. Если отправитель и БЕ не содержат данных, вызывается особая ситуация NO_FOUND_SENDER (Получатель не найден) с сообщением «Не удалось определить отправителя для документа». Далее заполняются тип отправителя и получателя, балансовая единица. В результате будет получен доступный список адресатов отправителя и доступный список адресатов получателя. * Если результат выборки адресатов отправителя нулевой (ничего не найдено), вызывается особая ситуация ``NO_FOUND_SENDER_DATA`` (Данные отправителя не найдены) с сообщением «Не удалось определить данные ОЭД для отправителя». * Если результат выборки адресатов получателя нулевой (ничего не найдено), вызывается особая ситуация ``NO_FOUND_RECEIVER_DATA`` (Данные получателя не найдены) с сообщением «Не удалось определить данные ОЭД для получателя». Выбор ОЭД и ящика получателя происходит следующим образом. Если входной параметр ``I_FLAG_DISPLAY = пусто``, то берутся данные из доступного списка адресатов получателя, у которых поле ``flag_default = X``. Если таких данных не найдено, вызывается особая ситуация ``NO_FOUND_RECIEVER_DATA`` с сообщением «Не удалось определить данные ОЭД для получателя». Если данные из доступного списка адресатов содержат лишь одну запись, берется эта запись. Если записей несколько, запускается средство поиска и пользователю предоставляется выбор. Если в итоге данные по идентификатору ОЭД или налоговому идентификатору окажутся пустыми, вызывается особая ситуация ``NO_FOUND_RECEIVER_DATA`` (Данные получателя не найдены) с сообщением «Не удалось определить данные ОЭД для получателя». Запускается цикл по доступному списку адресатов отправителя и для каждой записи выполняется выборка из таблицы ``/TRL/XDE_OED_BX``. Как только будет найдена запись, происходит выход из цикла. Если ничего не найдено, вызывается особая ситуация ``NO_FOUND_SENDER_DATA`` (Данные отправителя не найдены) с сообщением «Не удалось определить данные ОЭД для отправителя». Окончательная обработка работы ФМ ``/TRL/XDE_GET_AGENTS_BOX_BY_OBJ``. * Если ``sy-subrc = 0``. Всё в порядке, выход из ФМ; * Если ``sy-subrc = 1``. Вызывается особая ситуация ``NO_FOUND_SENDER``; * Если ``sy-subrc = 2``. Вызывается особая ситуация ``NO_FOUND_RECIEVER``; * Если ``sy-subrc = 3``. Вызывается особая ситуация ``NO_FOUND_SENDER_DATA``; * Если ``sy-subrc = 4``. Вызывается особая ситуация ``NO_FOUND_RECIEVER_DATA``; * Если ``sy-subrc = 6``. Вызывается особая ситуация ``USER_CANCEL``; * В других случаях вызывается особая ситуация ``ERROR``. Данная API функция подразумевает возможность расширения для заказчика. .. important:: При использовании явных или неявных операторов ``COMMIT WORK`` и ``ROLLBACK WORK`` в расширениях корректная работа API-функций не гарантируется! Функциональный модуль определения данных контрагентов документооборота ---------------------------------------------------------------------- При получении настроек в ракурсе ``/TRL/XDE_CUST`` имеется настройка «FM_SHIP_OUT_PARTNERS». .. image:: ris1.png :scale: 65 :align: center :alt: Настройка ``FM_SHIP_OUT_PARTNERS`` * Если удалить настройку, произойдет вызов особой ситуации ``NOT_FOUND``. * Если не заполнить поле ``SETTING_VALUE``, в дальнейшем ФМ завершит свою работу, вызвав особую ситуацию ``ERROR``. * Если заполнить поле некорректно (несуществующим ФМ), в дальнейшем ФМ завершит свою работу, вызвав особую ситуацию ``ERROR``. * Если заполнить поле существующим в системе ФМ, который не подходит под определенные правила, то при вызове такого ФМ возникнет ошибка. Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже. .. table:: Параметры модуля определения данных контрагентов документооборота :align: center :widths: 2 1 4 +----------------------------+-------+------------------------------------+ | Наименование параметра | Тип | Название словарного типа или класс | +============================+=======+====================================+ | ``IMPORTING`` (попадают в ФМ) | +----------------------------+-------+------------------------------------+ | ``IS_OBJECT`` | Тип | ``BORIDENT`` | +----------------------------+-------+------------------------------------+ | ``EXPORTING`` (результаты ФМ на выходе) | +----------------------------+-------+------------------------------------+ | ``E_SENDER_TYPE`` | Тип | ``/TRL/XDE_ED_SENDER_TYPE`` | +----------------------------+-------+------------------------------------+ | ``E_SENDER`` | Тип | ``/TRL/XDE_ED_SENDER`` | +----------------------------+-------+------------------------------------+ | ``E_RECEIVER_TYPE`` | Тип | ``/TRL/XDE_ED_RECEIVER_TYPE`` | +----------------------------+-------+------------------------------------+ | ``E_RECEIVER`` | Тип | ``/TRL/XDE_ED_RECEIVER`` | +----------------------------+-------+------------------------------------+ | ``E_CARRIER_TYPE`` | Тип | ``/TRL/XDE_ED_CARRIER_TYPE`` | +----------------------------+-------+------------------------------------+ | ``E_CARRIER`` | Тип | ``/TRL/XDE_ED_CARRIER`` | +----------------------------+-------+------------------------------------+ | ``E_BUKRS`` | Тип | ``BUKRS`` | +----------------------------+-------+------------------------------------+