Получение информации об отправителе и получателе

*"--------------------------------------------------------------------
*"*"Локальный интерфейс:
*"  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.

Таблица 62 Описание интерфейса функционального модуля TRL/XDE_API_BO_GET_PARTNERS

Параметр

Описание

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 функция подразумевает возможность расширения для заказчика.

Важно

При использовании явных или неявных операторов COMMIT WORK и ROLLBACK WORK в расширениях корректная работа API-функций не гарантируется!

Функциональный модуль определения данных контрагентов документооборота

При получении настроек в ракурсе /TRL/XDE_CUST имеется настройка «FM_SHIP_OUT_PARTNERS».

Настройка ``FM_SHIP_OUT_PARTNERS``
  • Если удалить настройку, произойдет вызов особой ситуации NOT_FOUND.

  • Если не заполнить поле SETTING_VALUE, в дальнейшем ФМ завершит свою работу, вызвав особую ситуацию ERROR.

  • Если заполнить поле некорректно (несуществующим ФМ), в дальнейшем ФМ завершит свою работу, вызвав особую ситуацию ERROR.

  • Если заполнить поле существующим в системе ФМ, который не подходит под определенные правила, то при вызове такого ФМ возникнет ошибка.

Правила для ФМ из этой настройки касаются интерфейса ФМ, см. в таблице ниже.

Таблица 63 Параметры модуля определения данных контрагентов документооборота

Наименование параметра

Тип

Название словарного типа или класс

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