Поделиться через


Создание рабочих процессов для распространенных сценариев интеграции SAP в Azure Logic Apps

Область применения: Azure Logic Apps (Потребление + Стандартный)

В этом руководстве показано, как создать примеры рабочих процессов приложения логики для некоторых распространенных сценариев интеграции SAP с помощью Azure Logic Apps и соединителя SAP.

Рабочие процессы приложения логики "Стандартный" и "Потребление" предлагают управляемый соединитель SAP, размещенный и работающий в мультитенантной среде Azure. Стандартные рабочие процессы также предлагают встроенный соединитель поставщика услуг SAP, размещенный и работающий в Azure Logic Apps с одним клиентом. Если вы создаете и размещаете рабочий процесс потребления в среде службы интеграции (ISE), вы также можете использовать собственную версию ISE соединителя SAP. Дополнительные сведения см . в техническом справочнике по соединителю.

Необходимые компоненты

  • Установите или используйте средство, которое может отправлять HTTP-запросы для тестирования решения, например:

    Внимание

    В сценариях, в которых есть конфиденциальные данные, такие как учетные данные, секреты, маркеры доступа, ключи API и другие аналогичные сведения, обязательно используйте средство, которое защищает данные с помощью необходимых функций безопасности, работает в автономном режиме или локально, не синхронизирует данные с облаком и не требует входа в учетную запись в Сети. Таким образом, вы снижаете риск предоставления конфиденциальных данных общественности.

Получение сообщений из SAP

В следующем примере рабочий процесс приложения логики активируется, когда триггер SAP рабочего процесса получает сообщение от сервера SAP.

Добавление триггера SAP

В зависимости от того, есть ли рабочий процесс потребления в мультитенантных Azure Logic Apps или стандартный рабочий процесс в Azure Logic Apps с одним клиентом, выполните соответствующие действия.

  1. В портал Azure откройте приложение логики потребления и пустой рабочий процесс в конструкторе.

  2. В конструкторе выполните следующие общие действия, чтобы добавить триггер управляемого соединителя SAP с именем "При получении сообщения".

  3. При появлении запроса укажите следующие сведения о подключении для локального сервера SAP. По завершении нажмите Создать. В противном случае перейдите к следующему шагу, чтобы настроить триггер SAP.

    Параметр Обязательное поле Описание
    Имя подключения Да Введите имя для подключения.
    Шлюз данных Да 1. Для подписки выберите подписку Azure для ресурса шлюза данных, созданного в портал Azure для установки шлюза данных.

    2. Для шлюза подключений выберите ресурс шлюза данных в Azure.
    Клиент Да Идентификатор клиента SAP, используемый для подключения к серверу SAP
    Тип проверки подлинности Да Тип проверки подлинности, используемый для подключения, который должен быть базовым (имя пользователя и пароль). Сведения о создании подключения SNC см. в разделе "Включение безопасной сетевой связи" (SNC).
    Имя пользователя SAP Да Имя пользователя для сервера SAP
    Пароль SAP Да Пароль для сервера SAP
    Тип входа Да Выберите сервер приложений или группу (сервер сообщений), а затем настройте соответствующие необходимые параметры, даже если они отображаются необязательными:

    Сервер приложений:
    - Узел AS: имя узла для сервера приложений SAP
    - Служба AS: имя службы или номер порта для сервера приложений SAP
    - Системный номер AS: системный номер сервера SAP, который составляет от 00 до 99.

    Группа:
    - Узел СЕРВЕРА MS Server: имя узла сервера сообщений SAP
    - Имя службы MS или номер порта: имя службы или номер порта для сервера сообщений SAP
    - Ms System ID: идентификатор системы для сервера SAP
    - Группа входа в MS: группа входа для сервера SAP. На сервере SAP можно найти или изменить значение группы входа, открыв диалоговое окно CCMS: Обслуживание групп входа (T-Code SMLG). Дополнительные сведения см. в примечании SAP 26317: настройка группы входа для автоматической балансировки нагрузки.
    Безопасный ввод No Этот параметр доступен для обратной совместимости и проверяет только длину строки. По умолчанию строгая типизация используется для проверки на предмет недопустимых значений путем выполнения проверки XML для схемы. Такое поведение поможет обнаруживать проблемы раньше. Дополнительные сведения о параметре безопасного ввода.
    Использование SNC No Сведения о создании подключения SNC см. в разделе "Включение безопасной сетевой связи" (SNC).

    Дополнительные доступные параметры подключения см. в разделе "Сведения о подключении по умолчанию".

    После настройки и проверки подключения Azure Logic Apps появится поле сведений о триггере. Дополнительные сведения о любых проблемах подключения, которые могут возникнуть, см. в разделе "Устранение неполадок подключений".

  4. В зависимости от конфигурации и сценария сервера SAP укажите необходимые значения параметров для триггера "При получении сообщения" и добавьте другие доступные параметры триггера, которые вы хотите использовать в своем сценарии.

    Примечание.

    Этот триггер SAP является триггером на основе веб-перехватчика, а не триггером опроса и не включает параметры для указания расписания опроса. Например, при использовании управляемого соединителя SAP с локальным шлюзом данных триггер вызывается из шлюза данных только при поступлении сообщения, поэтому опрос не требуется.

    Параметр Обязательное поле Описание
    GatewayHost Да Узел шлюза регистрации для сервера SAP RFC
    GatewayService Да Служба шлюза регистрации для сервера SAP RFC
    ProgramId Да Идентификатор программы шлюза регистрации для сервера SAP RFC.

    Примечание. Это значение учитывает регистр. Убедитесь, что при настройке рабочего процесса приложения логики и сервера SAP последовательно используется тот же формат регистра для значения идентификатора программы. В противном случае при попытке отправить IDoc в SAP монитор tRFC (T-Code SM58) может отобразить следующие ошибки (ссылки требуют входа SAP):

    - Функция IDOC_INBOUND_ASYNCHRONOUS не найдена (2399329)
    - Клиент RFC , отличный от ABAP (тип партнера), не поддерживается (353597)
    DegreeOfParallelism No Число вызовов для параллельного обработки. Чтобы добавить этот параметр и изменить значение, в списке "Добавить новый параметр" выберите DegreeOfParallelism и введите новое значение.
    SapActions No Отфильтруйте сообщения, полученные с сервера SAP, на основе списка действий SAP. Чтобы добавить этот параметр, в списке "Добавить новый параметр" выберите SapActions. В новом разделе SapActions для параметра SapActions — 1 используйте средство выбора файлов, чтобы выбрать действие SAP или вручную указать действие. Дополнительные сведения о действиях SAP см. в статье Схемы сообщений для операций IDoc.
    Формат IDoc No Формат, используемый для получения IDocs. Чтобы добавить этот параметр, в списке "Добавить новый параметр" выберите "Формат IDoc".

    — Чтобы получить IDocs в виде ОБЫЧНОГО XML-файла SAP, в списке форматов IDoc выберите SapPlainXml.

    — Чтобы получить IDocs в виде неструктурированного файла, в списке форматов IDoc выберите FlatFile.

    - Примечание. Если в рабочем процессе также используется действие декодирования неструктурированных файлов, в схеме неструктурированных файлов необходимо использовать свойство early_terminate_optional_fields и задать значение true. Это требование необходимо, так как неструктурированные записи данных IDoc, отправляемые SAP в вызове IDOC_INBOUND_ASYNCHRONOUS tRFC, не заполняются на полную длину поля SDATA. Azure Logic Apps предоставляет исходные данные IDOC неструктурированного файла без заполнения, то есть в том же виде, в котором они получены от SAP. Кроме того, при совмещении этого триггера SAP с действием декодирования неструктурированного файла действию необходимо предоставлять соответствующую схему.
    Получение IDOCS с несвоекратными сегментами No Получение IDocs с неразреченными сегментами или без нее. Чтобы добавить этот параметр и изменить значение, в списке "Добавить новый параметр" выберите "Получить IDOCS" с неразрешимыми сегментами и нажмите кнопку "Да " или "Нет".
    SncPartnerNames No Список партнеров SNC, имеющих разрешения на вызов триггера на уровне клиентской библиотеки SAP. Только перечисленные партнеры авторизованы подключением SNC сервера SAP. Чтобы добавить этот параметр, в списке "Добавить новый параметр" выберите SncPartnerNames. Обязательно введите каждое имя, разделенное вертикальной полосой (|).

    В следующем примере показан базовый управляемый триггер SAP в рабочем процессе потребления:

    Снимок экрана: триггер управляемого соединителя SAP в рабочем процессе потребления.

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

    Снимок экрана: выбор действия SAP для фильтрации сообщений в рабочем процессе потребления.

    Или вручную укажите действие:

    Снимок экрана: ввод действия SAP вручную для фильтрации сообщений в рабочем процессе потребления.

    В следующем примере показано, как действие отображается при настройке триггера для получения нескольких сообщений:

    Снимок экрана: пример триггера, который получает несколько сообщений в рабочем процессе потребления.

  5. Сохраните рабочий процесс, чтобы начать получать сообщения с сервера SAP. На панели инструментов конструктора выберите Сохранить.

    Рабочий процесс теперь готов получать сообщения с сервера SAP.

  6. После запуска триггера и запуска рабочего процесса просмотрите журнал триггеров рабочего процесса, чтобы убедиться, что регистрация триггера выполнена успешно.

Получение пакетов IDoc из SAP

Для получения пакетов IDoc, которые являются пакетами или группами IDocs, триггер SAP не нуждается в дополнительной конфигурации. Однако для обработки каждого элемента в пакете IDoc после получения пакета необходимо выполнить несколько дополнительных шагов, чтобы разделить пакет на отдельные IDocs, настроив SAP для отправки IDocs в пакеты.

В следующем примере рабочего процесса показано, как извлечь отдельные IDocs из пакета с помощью xpath() функции:

  1. Перед началом работы вам потребуется рабочий процесс приложения логики "Потребление" или "Стандартный" с триггером SAP. Если рабочий процесс еще не начинается с этого триггера, выполните предыдущие действия, описанные в этом руководстве, чтобы добавить триггер SAP, который может получать сообщения в рабочий процесс.

  2. Чтобы немедленно ответить на сервер SAP с состоянием запроса SAP, добавьте следующее действие ответа на основе использования управляемого триггера SAP или встроенного триггера SAP:

    • Управляемый триггер SAP: для этого триггера добавьте действие ответа в рабочий процесс.

      В действии ответа используйте один из следующих кодов состояния (statusCode):

      Код состояния Description
      Принято 202 Запрос был принят для обработки, но обработка еще не завершена.
      204 Без содержимого Сервер успешно выполнил запрос, и в тексте полезных данных ответа нет дополнительного содержимого.
      200 ОК Этот код состояния всегда содержит полезную нагрузку, даже если сервер создает тело полезной нагрузки с нулевой длиной.
    • Встроенный триггер SAP: для этого триггера добавьте действие сервера SAP в рабочий процесс.

    Примечание.

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

  3. Получите корневое пространство имен из XML-идентификатора IDoc, который рабочий процесс получает от SAP.

    1. Чтобы извлечь это пространство имен из XML-документа и сохранить пространство имен в локальной строковой переменной, добавьте действие инициализации переменной .

    2. Переименуйте заголовок действия, чтобы получить пространство имен для корневого узла в полученном IDoc.

    3. Укажите имя переменной и задайте для типа String.

    4. В параметре значения действия выберите внутри поля редактирования, откройте редактор выражений или функций и создайте следующее выражение с помощью xpath() функции:

      xpath(xml(triggerBody()?['Content']), 'namespace-uri(/*)')

      Рабочий процесс потребления

      Снимок экрана: выражение для получения пространства имен корневого узла из полученного идентификатора для рабочего процесса потребления.

      Стандартный рабочий процесс

      Снимок экрана: выражение, чтобы получить пространство имен корневого узла из полученного идентификатора для рабочего процесса

      После завершения выражение разрешается и теперь отображается в следующем формате:

      Снимок экрана: разрешенное выражение, которое получает пространство имен корневого узла из полученного идентификатора.

  4. Чтобы извлечь отдельный идентификатор идентификатора, сохраняя коллекцию IDoc в переменной локального массива, выполните следующие действия.

    1. Добавьте другое действие инициализации переменной .

    2. Переименуйте заголовок действия, чтобы получить массив с элементами данных IDoc.

    3. Укажите имя переменной и задайте тип массива.

      Переменная массива делает каждый IDoc доступным для рабочего процесса для обработки по отдельности путем перечисления по коллекции.

    4. В параметре значения действия выберите внутри поля редактирования, откройте редактор выражений или функций и создайте следующее xpath() выражение:

      xpath(xml(triggerBody()?['Content']), '/*[local-name()="Receive"]/*[local-name()="idocData"]')

      После завершения выражение разрешается и теперь отображается в следующем формате:

      Рабочий процесс потребления

      Снимок экрана: выражение для получения массива IDocs для рабочего процесса потребления.

      В этом примере следующий рабочий процесс передает каждый идентификатор на сервер SFTP с помощью действия Control с именем "Для каждого" и действия SFTP-SSH с именем Create file. Каждый IDoc должен включать корневое пространство имен. это причина, по которой содержимое файла упаковывается внутри элемента <Receive></Receive> вместе с корневым пространством имен перед отправкой iDoc в подчиненное приложение, или, в данном случае, на SFTP-сервер.

      Снимок экрана: отправка идентификатора на сервер SFTP из рабочего процесса потребления.

      Примечание.

      Для рабочих процессов потребления этот шаблон доступен как шаблон быстрого запуска, который можно выбрать из коллекции шаблонов при создании ресурса приложения логики потребления и пустого рабочего процесса. Или, когда конструктор рабочих процессов открыт, на панели инструментов конструктора выберите шаблоны.

      Снимок экрана: выбор шаблона для получения пакета IDoc.

      Стандартный рабочий процесс

      Снимок экрана: выражение для получения массива IDocs для рабочего процесса

      В этом примере следующий рабочий процесс передает каждый идентификатор на сервер SFTP с помощью действия Control с именем "Для каждого" и действия SFTP-SSH с именем Create file. Каждый IDoc должен включать корневое пространство имен. это причина, по которой содержимое файла упаковывается внутри элемента <Receive></Receive> вместе с корневым пространством имен перед отправкой iDoc в подчиненное приложение, или, в данном случае, на SFTP-сервер.

      Снимок экрана: отправка идентификатора на сервер SFTP из стандартного рабочего процесса.


Фильтрация полученных сообщений с помощью действий SAP

Если вы используете управляемый соединитель SAP или соединитель SAP с версией ISE, в рабочем процессе настройте способ явно отфильтровать любые нежелательные действия с сервера SAP на основе пространства имен корневого узла в полученной полезных данных XML. Список (массив) можно указать одним или несколькими действиями SAP. По умолчанию этот массив пуст, что означает, что рабочий процесс получает все сообщения от сервера SAP без фильтрации. При настройке фильтра массива триггер получает сообщения только из указанных типов действий SAP и отклоняет все остальные сообщения с сервера SAP. Однако этот фильтр не влияет на то, является ли ввод полученных полезных данных слабым или строгим. Любая фильтрация действий SAP происходит на уровне адаптера SAP для локального шлюза данных. Дополнительные сведения см. в статье о том, как протестировать отправку IDocs в Azure Logic Apps из SAP.

Настройка асинхронного шаблона ответа на запрос для триггеров

Управляемый соединитель SAP поддерживает асинхронный шаблон ответа на запросы Azure для триггеров Azure Logic Apps. Этот шаблон можно использовать для создания успешных запросов, которые в противном случае завершаются сбоем с шаблоном синхронного ответа на запросы по умолчанию.

Примечание.

В рабочих процессах с несколькими действиями ответа все действия ответа должны использовать один и тот же шаблон ответа на запрос. Например, если рабочий процесс использует элемент управления коммутатором с несколькими возможными действиями ответа, необходимо настроить все действия ответа, чтобы использовать один и тот же шаблон ответа на запрос, синхронный или асинхронный.

Если включить асинхронный ответ для действия ответа , рабочий процесс может ответить с ответом 202 Принято после принятия запроса на обработку. Ответ содержит заголовок местонахождения, который можно использовать для получения окончательного состояния запроса.

Чтобы настроить шаблон асинхронного ответа на запросы для рабочего процесса с помощью соединителя SAP, выполните следующие действия.

  1. В конструкторе откройте рабочий процесс приложения логики. Убедитесь, что рабочий процесс начинается с триггера SAP.

  2. В рабочем процессе найдите действие ответа и откройте параметры этого действия.

  3. В зависимости от того, есть ли у вас рабочий процесс "Потребление" или "Стандартный", выполните соответствующие действия.

    • Потребление. В разделе "Асинхронный ответ" включите параметр "Отключить" и нажмите кнопку "Готово".
    • Стандартный: разверните сеть и в разделе "Асинхронный ответ" включите параметр "Отключить".
  4. Сохраните результаты своих действий.

Отправка IDocs в SAP

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

  1. Создайте рабочий процесс приложения логики, который активируется HTTP-запросом.
  2. Добавьте действие SAP в рабочий процесс для отправки IDoc в SAP.
  3. Добавьте действие ответа в рабочий процесс.
  4. Создайте шаблон "запрос-ответ" для удаленного вызова функции (RFC), если вы используете RFC для получения ответов от ABAP SAP.
  5. Протестируйте рабочий процесс.

Добавление триггера "Запрос"

Чтобы рабочий процесс получил IDocs из SAP по XML HTTP, можно использовать встроенный триггер запроса. Этот триггер создает конечную точку с URL-адресом, в котором сервер SAP может отправлять HTTP-запросы POST в рабочий процесс. Когда рабочий процесс получает эти запросы, триггер запускается и выполняет следующий шаг в рабочем процессе.

Сведения о том, как получать IDoc по общему протоколу связи с программными интерфейсами (CPIC) в виде обычного кода XML или неструктурированного файла, представлены в разделе Получение сообщения от SAP.

В зависимости от того, есть ли рабочий процесс потребления в мультитенантных Azure Logic Apps или стандартный рабочий процесс в Azure Logic Apps с одним клиентом, выполните соответствующие действия.

  1. В портал Azure создайте ресурс приложения логики потребления и пустой рабочий процесс в конструкторе.

  2. В конструкторе выполните следующие общие действия, чтобы найти и добавить встроенный триггер запроса с именем "При получении HTTP-запроса".

    Снимок экрана: триггер запроса для рабочего процесса потребления.

  3. Сохраните результаты своих действий. На панели инструментов конструктора выберите Сохранить.

    На этом шаге создается URL-адрес конечной точки, где триггер может получать запросы от сервера SAP, например:

    Снимок экрана: URL-адрес созданной конечной точки триггера запроса для получения запросов в рабочем процессе потребления.

Добавление действия SAP для отправки IDoc

Затем создайте действие для отправки IDoc в SAP при срабатывании триггера запроса рабочего процесса. В зависимости от того, есть ли рабочий процесс потребления в мультитенантных Azure Logic Apps или стандартный рабочий процесс в Azure Logic Apps с одним клиентом, выполните соответствующие действия.

  1. В конструкторе рабочих процессов в триггере запроса выберите новый шаг.

  2. В конструкторе выполните следующие общие действия, чтобы найти и добавить управляемое действие SAP с именем Send message to SAP.

  3. При появлении запроса укажите следующие сведения о подключении для локального сервера SAP. По завершении нажмите Создать. В противном случае перейдите к следующему шагу, чтобы настроить действие SAP.

    Параметр Обязательное поле Описание
    Имя подключения Да Введите имя для подключения.
    Шлюз данных Да 1. Для подписки выберите подписку Azure для ресурса шлюза данных, созданного в портал Azure для установки шлюза данных.

    2. Для шлюза подключений выберите ресурс шлюза данных в Azure.
    Клиент Да Идентификатор клиента SAP, используемый для подключения к серверу SAP
    Тип проверки подлинности Да Тип проверки подлинности, используемый для подключения, который должен быть базовым (имя пользователя и пароль). Сведения о создании подключения SNC см. в разделе "Включение безопасной сетевой связи" (SNC).
    Имя пользователя SAP Да Имя пользователя для сервера SAP
    Пароль SAP Да Пароль для сервера SAP
    Тип входа Да Выберите сервер приложений или группу (сервер сообщений), а затем настройте соответствующие необходимые параметры, даже если они отображаются необязательными:

    Сервер приложений:
    - Узел AS: имя узла для сервера приложений SAP
    - Служба AS: имя службы или номер порта для сервера приложений SAP
    - Системный номер AS: системный номер сервера SAP, который составляет от 00 до 99.

    Группа:
    - Узел СЕРВЕРА MS Server: имя узла сервера сообщений SAP
    - Имя службы MS или номер порта: имя службы или номер порта для сервера сообщений SAP
    - Ms System ID: идентификатор системы для сервера SAP
    - Группа входа в MS: группа входа для сервера SAP. На сервере SAP можно найти или изменить значение группы входа, открыв диалоговое окно CCMS: Обслуживание групп входа (T-Code SMLG). Дополнительные сведения см. в примечании SAP 26317: настройка группы входа для автоматической балансировки нагрузки.
    Безопасный ввод No Этот параметр доступен для обратной совместимости и проверяет только длину строки. По умолчанию строгая типизация используется для проверки на предмет недопустимых значений путем выполнения проверки XML для схемы. Такое поведение поможет обнаруживать проблемы раньше. Дополнительные сведения о параметре безопасного ввода.
    Использование SNC No Сведения о создании подключения SNC см. в разделе "Включение безопасной сетевой связи" (SNC).

    Дополнительные доступные параметры подключения см. в разделе "Сведения о подключении по умолчанию".

    После настройки и проверки подключения Azure Logic Apps появится поле сведений о действии SAP. Дополнительные сведения о любых проблемах подключения, которые могут возникнуть, см. в разделе "Устранение неполадок подключений".

    Снимок экрана: рабочий процесс потребления с управляемым действием SAP с именем

  4. В действии "Отправить сообщение в SAP" найдите и выберите доступное действие SAP на сервере SAP для отправки IDoc.

    Действие отправки в SAP является универсальным и может отправлять сообщение для BAPI, IDoc, RFC или tRFC, но сначала необходимо выбрать тип сообщения и действие SAP для использования.

    1. В поле редактирования параметра действия SAP щелкните значок папки. В открывающемся списке выберите BAPI, IDOC, RFC или TRFC. В этом примере выбирается идентификатор IDOC. Если выбрать другой тип, доступные действия SAP изменяются на основе выбранного варианта.

      Примечание.

      Если вы получаете ошибку "Недопустимый шлюз" (500) или ошибку "Неправильный запрос" (400), см. статью 500 "Недопустимый шлюз" или "400 ошибок " Недопустимый запрос".

      Снимок экрана: выбор идентификатора для рабочего процесса потребления.

    2. Перейдите к папкам типов действий SAP, используя стрелки, чтобы найти и выбрать действие SAP, которое вы хотите использовать.

      В этом примере выбраны заказы>ORDERS05>720>Send.

      Снимок экрана: поиск действия

      Если не удается найти необходимое действие, можно вручную ввести путь, например:

      Снимок экрана: ввод пути к типу действия Orders для рабочего процесса потребления вручную.

      Совет

      Для параметра ДЕЙСТВИЯ SAP можно использовать редактор выражений для предоставления значения параметра. Таким образом, вы можете использовать одно действие SAP для разных типов сообщений.

      Дополнительные сведения о сообщениях IDoc см . в схемах сообщений для операций IDoc.

    3. В действии "Отправить сообщение в SAP" добавьте выходные данные текста триггера запроса.

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

      2. В списке динамического содержимого в разделе "При получении HTTP-запроса" выберите "Текст". Поле "Текст" содержит выходные данные тела триггера запроса .

        Примечание.

        Если поле "Текст" не отображается в списке, рядом с меткой получения HTTP-запроса нажмите кнопку "Дополнительные сведения".

      Снимок экрана: выбор выходных данных триггера запроса с именем Body for Consumption workflow.

      Теперь сообщение "Отправить в SAP" включает содержимое текста из триггера запроса и отправляет выходные данные на сервер SAP, например:

      Снимок экрана: завершенное действие SAP для рабочего процесса потребления.

  5. Сохраните результаты своих действий.

Отправка неструктурированных IDocs файлов на сервер SAP (только управляемый соединитель)

Чтобы отправить идентификатор с помощью плоской схемы файлов при использовании управляемого соединителя SAP, можно упаковать IDoc в XML-конверт и выполнить общие действия, чтобы добавить действие SAP для отправки IDoc, но со следующими изменениями.

Примечание.

Если вы используете встроенный соединитель SAP, убедитесь, что не упаковываете неструктурированный идентификатор файла в XML-конверт.

Обтекание идентификатором с помощью XML-конверта

  1. В действии SAP, используемом для отправки сообщения, используйте следующий URI:

    http://Microsoft.LobServices.Sap/2007/03/Idoc/SendIdoc

  2. Форматирование входного сообщения с помощью конверта XML.

В следующем примере показан пример полезных данных XML:

<SendIdoc xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/">
  <idocData>EDI_DC 3000000001017945375750 30INVOIC011BTSVLINV30KUABCABCFPPC LDCA X004010810 4 SAPMSX LSEDI ABCABCFPPC 000d3ae4-723e-1edb-9ca4-cc017365c9fd 20210217054521INVOICINVOIC01ZINVOIC2RE 20210217054520
E2EDK010013000000001017945375000001E2EDK01001000000010 ABCABC1.00000 0060 INVO9988298128 298.000 298.000 LB Z4LR EN 0005065828 L
E2EDKA1 3000000001017945375000002E2EDKA1 000000020 RS ABCABCFPPC 0005065828 ABCABCABC ABCABC Inc. Limited Risk Distributor ABCABC 1950 ABCABCABCA Blvd ABCABAABCAB L5N8L9 CA ABCABC E ON V-ABCABC LDCA
E2EDKA1 3000000001017945375000003E2EDKA1 000000020 AG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000004E2EDKA1 000000020 RE 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000005E2EDKA1 000000020 RG 0005065828 ABCABCFPPC ABCABC ABCABC ABCABC - FPP ONLY 88 ABCABC Crescent ABCABAABCAB L5R 4A2 CA ABCABC 111 111 1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000006E2EDKA1 000000020 WE 0005001847 41 ABCABC ABCABC INC (ABCABC) DC A. ABCABCAB 88 ABCABC CRESCENT ABCABAABCAB L5R 4A2 CA ABCABC 111-111-1111 E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000007E2EDKA1 000000020 Z3 0005533050 ABCABCABC ABCABC Inc. ABCA Bank Swift Code -ABCABCABCAB Sort Code - 1950 ABCABCABCA Blvd. Acc No -1111111111 ABCABAABCAB L5N8L9 CA ABCABC E ON ABCABCFPPC EN
E2EDKA1 3000000001017945375000008E2EDKA1 000000020 BK 1075 ABCABCABC ABCABC Inc 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDKA1 3000000001017945375000009E2EDKA1 000000020 CR 1075 CONTACT ABCABCABC 1950 ABCABCABCA Blvd ABCABAABCAB ON L5N 8L9 CA ABCABC (111) 111-1111 (111) 111-1111 ON
E2EDK02 3000000001017945375000010E2EDK02 000000020 0099988298128 20210217
E2EDK02 3000000001017945375000011E2EDK02 000000020 00140-N6260-S 20210205
E2EDK02 3000000001017945375000012E2EDK02 000000020 0026336270425 20210217
E2EDK02 3000000001017945375000013E2EDK02 000000020 0128026580537 20210224
E2EDK02 3000000001017945375000014E2EDK02 000000020 01740-N6260-S
E2EDK02 3000000001017945375000015E2EDK02 000000020 900IAC
E2EDK02 3000000001017945375000016E2EDK02 000000020 901ZSH
E2EDK02 3000000001017945375000017E2EDK02 000000020 9078026580537 20210217
E2EDK03 3000000001017945375000018E2EDK03 000000020 02620210217
E2EDK03 3000000001017945375000019E2EDK03 000000020 00120210224
E2EDK03 3000000001017945375000020E2EDK03 000000020 02220210205
E2EDK03 3000000001017945375000021E2EDK03 000000020 01220210217
E2EDK03 3000000001017945375000022E2EDK03 000000020 01120210217
E2EDK03 3000000001017945375000023E2EDK03 000000020 02420210217
E2EDK03 3000000001017945375000024E2EDK03 000000020 02820210418
E2EDK03 3000000001017945375000025E2EDK03 000000020 04820210217
E2EDK17 3000000001017945375000026E2EDK17 000000020 001DDPDelivered Duty Paid
E2EDK17 3000000001017945375000027E2EDK17 000000020 002DDPdestination
E2EDK18 3000000001017945375000028E2EDK18 000000020 00160 0 Up to 04/18/2021 without deduction
E2EDK28 3000000001017945375000029E2EDK28 000000020 CA BOFACATT Bank of ABCABAB ABCABC ABCABAB 50127217 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000030E2EDK28 000000020 CA 026000082 ABCAbank ABCABC ABCABAB 201456700OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000031E2EDK28 000000020 GB ABCAGB2L ABCAbank N.A ABCABA E14, 5LB GB63ABCA18500803115593 ABCABCABC ABCABC Inc. GB63ABCA18500803115593
E2EDK28 3000000001017945375000032E2EDK28 000000020 CA 020012328 ABCABANK ABCABC ABCABAB ON M5J 2M3 2014567007 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000033E2EDK28 000000020 CA 03722010 ABCABABC ABCABABC Bank of Commerce ABCABAABCAB 64-04812 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000034E2EDK28 000000020 IE IHCC In-House Cash Center IHCC1075 ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000035E2EDK28 000000020 CA 000300002 ABCAB Bank of ABCABC ABCABAB 0021520584OLD ABCABCABC ABCABC Inc.
E2EDK28 3000000001017945375000036E2EDK28 000000020 US USCC US Cash Center (IHC) city USCC1075 ABCABCABC ABCABC Inc.
E2EDK29 3000000001017945375000037E2EDK29 000000020 0064848944US A CAD CA ABCABC CA United States US CA A Air Air
E2EDKT1 3000000001017945375000038E2EDKT1 000000020 ZJ32E EN
E2EDKT2 3000000001017945375000039E2EDKT2 000038030 GST/HST877845941RT0001 *
E2EDKT2 3000000001017945375000040E2EDKT2 000038030 QST1021036966TQ0001 *
E2EDKT1 3000000001017945375000041E2EDKT1 000000020 Z4VL
E2EDKT2 3000000001017945375000042E2EDKT2 000041030 0.000 *
E2EDKT1 3000000001017945375000043E2EDKT1 000000020 Z4VH
E2EDKT2 3000000001017945375000044E2EDKT2 000043030 *
E2EDK14 3000000001017945375000045E2EDK14 000000020 008LDCA
E2EDK14 3000000001017945375000046E2EDK14 000000020 00710
E2EDK14 3000000001017945375000047E2EDK14 000000020 00610
E2EDK14 3000000001017945375000048E2EDK14 000000020 015Z4F2
E2EDK14 3000000001017945375000049E2EDK14 000000020 0031075
E2EDK14 3000000001017945375000050E2EDK14 000000020 021M
E2EDK14 3000000001017945375000051E2EDK14 000000020 0161075
E2EDK14 3000000001017945375000052E2EDK14 000000020 962M
E2EDP010013000000001017945375000053E2EDP01001000000020 000011 2980.000 EA 298.000 LB MOUSE 298.000 Z4TN 4260
E2EDP02 3000000001017945375000054E2EDP02 000053030 00140-N6260-S 00000120210205 DFUE
E2EDP02 3000000001017945375000055E2EDP02 000053030 0026336270425 00001120210217
E2EDP02 3000000001017945375000056E2EDP02 000053030 0168026580537 00001020210224
E2EDP02 3000000001017945375000057E2EDP02 000053030 9100000 00000120210205 DFUE
E2EDP02 3000000001017945375000058E2EDP02 000053030 911A 00000120210205 DFUE
E2EDP02 3000000001017945375000059E2EDP02 000053030 912PP 00000120210205 DFUE
E2EDP02 3000000001017945375000060E2EDP02 000053030 91300 00000120210205 DFUE
E2EDP02 3000000001017945375000061E2EDP02 000053030 914CONTACT ABCABCABC 00000120210205 DFUE
E2EDP02 3000000001017945375000062E2EDP02 000053030 963 00000120210205 DFUE
E2EDP02 3000000001017945375000063E2EDP02 000053030 965 00000120210205 DFUE
E2EDP02 3000000001017945375000064E2EDP02 000053030 9666336270425 00000120210205 DFUE
E2EDP02 3000000001017945375000065E2EDP02 000053030 9078026580537 00001020210205 DFUE
E2EDP03 3000000001017945375000066E2EDP03 000053030 02920210217
E2EDP03 3000000001017945375000067E2EDP03 000053030 00120210224
E2EDP03 3000000001017945375000068E2EDP03 000053030 01120210217
E2EDP03 3000000001017945375000069E2EDP03 000053030 02520210217
E2EDP03 3000000001017945375000070E2EDP03 000053030 02720210217
E2EDP03 3000000001017945375000071E2EDP03 000053030 02320210217
E2EDP03 3000000001017945375000072E2EDP03 000053030 02220210205
E2EDP19 3000000001017945375000073E2EDP19 000053030 001418VVZ
E2EDP19 3000000001017945375000074E2EDP19 000053030 002RJR-00001 AB ABCABCABC Mouse FORBUS BLUETOOTH
E2EDP19 3000000001017945375000075E2EDP19 000053030 0078471609000
E2EDP19 3000000001017945375000076E2EDP19 000053030 003889842532685
E2EDP19 3000000001017945375000077E2EDP19 000053030 011CN
E2EDP26 3000000001017945375000078E2EDP26 000053030 00459064.20
E2EDP26 3000000001017945375000079E2EDP26 000053030 00352269.20
E2EDP26 3000000001017945375000080E2EDP26 000053030 01052269.20
E2EDP26 3000000001017945375000081E2EDP26 000053030 01152269.20
E2EDP26 3000000001017945375000082E2EDP26 000053030 0126795.00
E2EDP26 3000000001017945375000083E2EDP26 000053030 01552269.20
E2EDP26 3000000001017945375000084E2EDP26 000053030 00117.54
E2EDP26 3000000001017945375000085E2EDP26 000053030 00252269.20
E2EDP26 3000000001017945375000086E2EDP26 000053030 940 2980.000
E2EDP26 3000000001017945375000087E2EDP26 000053030 939 2980.000
E2EDP05 3000000001017945375000088E2EDP05 000053030 + Z400MS List Price 52269.20 17.54 1 EA CAD 2980
E2EDP05 3000000001017945375000089E2EDP05 000053030 + XR1 Tax Jur Code Level 6795.00 13.000 52269.20
E2EDP05 3000000001017945375000090E2EDP05 000053030 + Tax Subtotal1 6795.00 2.28 1 EA CAD 2980
E2EDP05 3000000001017945375000091E2EDP05 000053030 + Taxable Amount + TaxSubtotal1 59064.20 19.82 1 EA CAD 2980
E2EDP04 3000000001017945375000092E2EDP04 000053030 CX 13.000 6795.00 7000000000
E2EDP04 3000000001017945375000093E2EDP04 000053030 CX 0 0 7001500000
E2EDP04 3000000001017945375000094E2EDP04 000053030 CX 0 0 7001505690
E2EDP28 3000000001017945375000095E2EDP28 000053030 00648489440000108471609000 CN CN ABCAB ZZ 298.000 298.000 LB US 400 United Stat KY
E2EDPT1 3000000001017945375000096E2EDPT1 000053030 0001E EN
E2EDPT2 3000000001017945375000097E2EDPT2 000096040 AB ABCABCABC Mouse forBus Bluetooth EN/XC/XD/XX Hdwr Black For Bsnss *
E2EDS01 3000000001017945375000098E2EDS01 000000020 0011
E2EDS01 3000000001017945375000099E2EDS01 000000020 01259064.20 CAD
E2EDS01 3000000001017945375000100E2EDS01 000000020 0056795.00 CAD
E2EDS01 3000000001017945375000101E2EDS01 000000020 01159064.20 CAD
E2EDS01 3000000001017945375000102E2EDS01 000000020 01052269.20 CAD
E2EDS01 3000000001017945375000103E2EDS01 000000020 94200000 CAD
E2EDS01 3000000001017945375000104E2EDS01 000000020 9440.00 CAD
E2EDS01 3000000001017945375000105E2EDS01 000000020 9450.00 CAD
E2EDS01 3000000001017945375000106E2EDS01 000000020 94659064.20 CAD
E2EDS01 3000000001017945375000107E2EDS01 000000020 94752269.20 CAD
E2EDS01 3000000001017945375000108E2EDS01 000000020 EXT
Z2XSK010003000000001017945375000109Z2XSK01000000108030 Z400 52269.20
Z2XSK010003000000001017945375000110Z2XSK01000000108030 XR1 13.000 6795.00 CX
</idocData>
</SendIdoc>

Добавление действия ответа

Теперь настройте рабочий процесс, чтобы вернуть результаты с сервера SAP на исходный запрос. Для выполнения этой задачи выполните следующие действия.

  1. В конструкторе рабочих процессов, в действии SAP, выберите Новый этап.

  2. В конструкторе выполните следующие общие действия, чтобы найти и добавить встроенное действие запроса с именем Response.

  3. В действии "Ответ" для параметра Body выберите внутри поля редактирования, чтобы открыть список динамического содержимого.

  4. В списке динамического содержимого в разделе "Отправить сообщение в SAP" выберите "Текст". Поле "Тело" содержит выходные данные тела из действия SAP.

    Снимок экрана: выбор выходных данных действия SAP с именем Body для рабочего процесса потребления.

  5. Сохраните результаты своих действий.

Создание шаблона удаленного вызова функции (RFC) запроса-ответа

Для рабочих процессов потребления, использующих управляемый соединитель SAP и соединитель SAP с версией ISE, если необходимо получить ответы с помощью удаленного вызова функции (RFC) в Azure Logic Apps из SAP ABAP, необходимо реализовать шаблон запроса и ответа. Чтобы получить IDocs в рабочем процессе при использовании триггера запроса, убедитесь, что первое действие рабочего процесса — это действие ответа, использующее код состояния 200 OK без содержимого. Этот рекомендуемый шаг немедленно завершает асинхронную передачу sap Logical Unit of Work (LUW) через tRFC, которая оставляет беседу SAP CPIC доступной снова. Затем можно добавить дополнительные действия в рабочий процесс для обработки полученного идентификатора, не блокируя последующие передачи.

Примечание.

Триггер SAP получает IDocs по сравнению с tRFC, который не имеет параметра ответа, по проектированию.

Чтобы реализовать шаблон запроса и ответа, сначала необходимо обнаружить схему RFC с помощью команды generate schema. Созданная схема имеет два возможных корневых узла:

  • Узел запроса, который вызывается из SAP.
  • Узел ответа, который является ответом на SAP

В следующем примере STFC_CONNECTION модуль RFC создает шаблон запроса и ответа. XML-код запроса анализируется для извлечения значения узла, в котором запрашиваются <ECHOTEXT>SAP. Ответ вставляет текущую метку времени как динамическое значение. При отправке RFC STFC_CONNECTION из рабочего процесса приложения логики в SAP вы получаете аналогичный отклик.

<STFC_CONNECTIONResponse xmlns="http://Microsoft.LobServices.Sap/2007/03/Rfc/">
  <ECHOTEXT>@{first(xpath(xml(triggerBody()?['Content']), '/*[local-name()="STFC_CONNECTION"]/*[local-name()="REQUTEXT"]/text()'))}</ECHOTEXT>
  <RESPTEXT>Azure Logic Apps @{utcNow()}</RESPTEXT>
</STFC_CONNECTIONResponse>

Тестирование рабочего процесса

  1. Если ресурс приложения логики потребления еще не включен, в меню приложения логики выберите "Обзор". На панели инструментов щелкните Включить.

  2. На панели инструментов конструктора нажмите кнопку "Запустить">, чтобы запустить рабочий процесс вручную.

  3. Чтобы имитировать полезные данные триггера веб-перехватчика и активировать рабочий процесс, отправьте HTTP-запрос в URL-адрес конечной точки, созданный триггером запроса рабочего процесса, включая метод, который ожидает триггер запроса, с помощью средства HTTP-запроса и его инструкций. Обязательно добавьте содержимое сообщения в запрос.

    В этом примере используется метод POST и URL-адрес конечной точки для отправки IDoc-файла, который должен быть в формате XML и включать пространство имен для выбранного действия SAP, например:

    <?xml version="1.0" encoding="UTF-8" ?>
    <Send xmlns="http://Microsoft.LobServices.Sap/2007/03/Idoc/2/ORDERS05//720/Send">
      <idocData>
        <...>
      </idocData>
    </Send>
    
  4. После отправки HTTP-запроса дождитесь ответа от рабочего процесса.

    Примечание.

    Рабочий процесс может истекать, если все шаги, необходимые для ответа, не завершаются в течение ограничения времени ожидания запроса. Если это произойдет, запросы могут быть заблокированы. Чтобы помочь диагностировать проблемы, узнайте, как проверить и отслеживать рабочие процессы приложения логики.

Теперь вы создали рабочий процесс, который может взаимодействовать с сервером SAP. Теперь, когда вы настроили подключение SAP для рабочего процесса, попробуйте поэкспериментировать с BAPI и RFC.

Надежная типизация

По умолчанию при создании подключения для управляемой операции SAP строгое ввод используется для проверки недопустимых значений, выполняя проверку XML в схеме. Такое поведение поможет обнаруживать проблемы раньше. Параметр Безопасный ввод доступен для обеспечения обратной совместимости и только проверяет длину строки. Если выбрана Надежная типизация, тип DATS и тип TIMS в SAP обрабатываются как строки, а не как их эквиваленты в формате XML, xs:date и xs:time, где xmlns:xs="http://www.w3.org/2001/XMLSchema". Надежная типизация влияет на поведение всех поколений схемы, сообщения отправки для полезных данных "отправлено" и ответа "получено" и триггера.

При использовании строгой типизации (Надежная типизация не включена), схема сопоставляет типы DATS и TIMS с более простыми типами XML:

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true" type="xs:date"/>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true" type="xs:time"/>

При отправке сообщений с помощью строгой типизации ответ DATS и TIMS соответствует формату соответствующего XML-типа:

<DATE>9999-12-31</DATE>
<TIME>23:59:59</TIME>

Если включена Надежная типизация, схема сопоставляет типы DATS и TIMS со строковыми XML-полями с ограничениями длины, например:

<xs:element minOccurs="0" maxOccurs="1" name="UPDDAT" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="8" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="UPDTIM" nillable="true">
  <xs:simpleType>
    <xs:restriction base="xs:string">
      <xs:maxLength value="6" />
    </xs:restriction>
  </xs:simpleType>
</xs:element>

Когда сообщения отправляются с включенной Надежной типизацией, ответ DATS и TIMS выглядит следующим образом:

<DATE>99991231</DATE>
<TIME>235959</TIME>

Расширенные сценарии

Изменение заголовков языка для отправки данных в SAP

При подключении к SAP из Azure Logic Apps английский язык по умолчанию используется подключением SAP для отправки данных на сервер SAP. Однако управляемый соединитель SAP и встроенный соединитель SAP обрабатывают изменение и сохранение языка, используемого различными способами.

  • При создании подключения со встроенным соединителем SAP параметры подключения позволяют указать и сохранить значение параметра языка в составе параметров подключения SAP.

  • При создании соединения с управляемым соединителем SAP параметры подключения не имеют языковых параметров. Таким образом, в течение этого времени вы не можете указать или язык, используемый для отправки данных на сервер SAP. Вместо этого во время разработки рабочего процесса и во время выполнения соединитель использует локальный язык веб-браузера из каждого запроса, отправляемого на сервер. Например, если в браузере задано значение "Португальский", Azure Logic Apps создает и проверяет подключение SAP с португальским языком, но не сохраняет соединение с этим языком.

    Однако вы можете задать язык для подключения с помощью стандартного заголовка Accept-Language HTTP с входящими запросами. Большинство веб-браузеров добавляют Accept-Language заголовок на основе параметров языкового стандарта. Веб-браузер применяет этот заголовок при создании нового подключения SAP в конструкторе рабочих процессов. Таким образом, вы можете обновить параметры веб-браузера, чтобы использовать предпочитаемый язык, или создать подключение SAP с помощью Azure Resource Manager вместо конструктора рабочих процессов.

    Например, можно отправить запрос с Accept-Language заголовком в рабочий процесс приложения логики с помощью триггера запроса с именем "При получении HTTP-запроса". Все действия в рабочем процессе получают заголовок. Затем SAP использует указанные языки в системных сообщениях, например сообщения об ошибках BAPI. Если вы не передаете Accept-Language заголовок во время выполнения, по умолчанию используется английский язык.

    Если вы используете Accept-Language заголовок, вы можете получить следующую ошибку: проверьте сведения о учетной записи и /или разрешения и повторите попытку. В этом случае проверьте журналы ошибок компонента SAP. Ошибка возникает в компоненте SAP, который использует заголовок, поэтому может появиться одно из следующих сообщений об ошибке:

    • "SAP. ПО промежуточного слоя.Connector.RfcLogonException: выберите один из установленных языков"

    • "SAP. ПО промежуточного слоя.Connector.RfcAbapMessageException: выберите один из установленных языков"

Подтверждение транзакции отдельно и явно

При отправке транзакций в SAP из Azure Logic Apps этот обмен выполняется в двух шагах, как описано в документе SAP, транзакционных программах СЕРВЕРА RFC.

По умолчанию действие управляемого соединителя SAP с именем Send message to SAP обрабатывает оба шага для передачи функции и подтверждения транзакции в одном вызове. Вы также можете разделить эти шаги. Возможность отделить шаги передачи и подтверждения полезна для сценариев, в которых не требуется дублировать транзакции в SAP. Такие сценарии включают сбои, которые происходят из-за таких причин, как проблемы с сетью.

Идентификатор можно отправить без автоматического подтверждения транзакции с помощью действия управляемого соединителя SAP с именем [IDOC] Отправить документ в SAP. Затем можно явно подтвердить транзакцию с помощью действия управляемого соединителя SAP с именем [IDOC - RFC] Подтвердить идентификатор транзакции. Когда рабочий процесс отдельно подтверждает транзакцию на другом шаге, система SAP завершает транзакцию только один раз.

В стандартных рабочих процессах встроенный соединитель SAP также имеет действия, которые отдельно обрабатывают этапы передачи и подтверждения, в частности , [IDoc] Отправка документа в SAP и [IDOC - RFC] Подтверждение идентификатора транзакции.

В следующем примере рабочего процесса показан этот шаблон:

  1. Создайте и откройте приложение логики "Потребление" или "Стандартный" с пустым рабочим процессом в конструкторе. Добавьте триггер запроса.

  2. Чтобы избежать отправки повторяющихся идентификаторов IDocs в SAP, выполните следующие альтернативные действия, чтобы создать и использовать идентификатор транзакции IDoc в действиях SAP.

  3. Добавьте действие SAP с именем [IDOC] Отправить документ в SAP в рабочий процесс. Укажите сведения для IDoc, который вы отправляете в систему SAP, а также следующие значения:

    Параметр Стоимость Описание
    Подтверждение TID Нет Не подтверждать идентификатор транзакции автоматически, который явно происходит на отдельном шаге.
    GUID идентификатора транзакции <Идентификатор IDoc-transaction-ID> Если этот параметр не отображается автоматически, откройте список "Добавить новые параметры " и выберите этот параметр.

    Вы можете вручную указать это значение, или соединитель может автоматически создать этот GUID в качестве выходных данных из документа [IDOC] Отправить документ в действие SAP . В этом примере этот параметр остается пустым для автоматического создания GUID.

    Рабочий процесс потребления

    Снимок экрана: рабочий процесс потребления с действием с именем IDOC Send document to SAP.

    Стандартный рабочий процесс

    Снимок экрана: стандартный рабочий процесс с действием с именем IDOC Send document to SAP.

  4. В действии SAP с именем [IDOC] Отправьте документ в SAP, откройте параметры для проверки политики повторных попыток.

    Параметр по умолчанию — это рекомендуемая политика, но вы можете выбрать пользовательскую политику для конкретных потребностей. Если вы решили использовать настраиваемую политику, настройте по крайней мере одну попытку, чтобы преодолеть временные сбои сети.

  5. Теперь добавьте действие SAP с именем [IDOC — RFC] Подтверждение идентификатора транзакции.

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

    2. В списке в разделе [IDOC] Отправьте документ в SAP, выберите значение идентификатора транзакции, которое является выходными данными предыдущего действия SAP.

      Рабочий процесс потребления

      Снимок экрана: рабочий процесс потребления с действием с именем

      Стандартный рабочий процесс

      Снимок экрана: стандартный рабочий процесс с действием с именем

    После выполнения этого шага текущая транзакция помечается как завершенная на обоих концах, на стороне соединителя SAP и на стороне системы SAP.

Избегайте отправки повторяющихся идентификаторов IDocs с переменной идентификатора транзакции

При возникновении проблемы с рабочим процессом отправки повторяющихся IDocs в SAP можно создать строковую переменную, которая служит идентификатором транзакции IDoc. Затем этот идентификатор позволяет предотвратить повторяющиеся сетевые передачи в таких условиях, как временные сбои, проблемы с сетью или потерянные подтверждения.

  1. В конструкторе после добавления триггера запроса и перед добавлением действия SAP с именем [IDOC] Отправить документ в SAP добавьте действие с именем Initialize переменной в рабочий процесс.

  2. Переименуйте действие, чтобы создать идентификатор транзакции IDoc.

  3. В поле сведений о действии укажите следующие значения параметров:

    Параметр Стоимость Описание
    Имя <имя-переменной> Имя переменной, например IDocTransactionID
    Тип String Тип переменной
    Value guid() Выберите внутри поля редактирования, откройте редактор выражений или функций и введите guid(). Сохранение изменений.

    Теперь для параметра Value задана функция GUID(), которая создает GUID.

    Рабочий процесс потребления

    Снимок экрана: рабочий процесс потребления с действием с именем Create transaction ID.

    Стандартный рабочий процесс

    Снимок экрана: стандартный рабочий процесс с действием

    Примечание.

    Системы SAP забывают идентификатор транзакции в течение заданного времени или 24 часов по умолчанию. В результате SAP никогда не сможет подтвердить идентификатор транзакции, если идентификатор или идентификатор GUID неизвестен. Сбой подтверждения для идентификатора транзакции означает, что взаимодействие с системой SAP завершилось сбоем, прежде чем SAP смог выполнить подтверждение.

  4. Добавьте действие SAP с именем [IDOC] Отправить документ в SAP в рабочий процесс. Укажите сведения для IDoc, который вы отправляете в систему SAP, а также следующие значения:

    Параметр Стоимость Описание
    Подтверждение TID Нет Не подтверждать идентификатор транзакции автоматически, который явно происходит на отдельном шаге.
    GUID идентификатора транзакции <Идентификатор IDoc-transaction-ID> Если этот параметр не отображается автоматически, откройте список "Добавить новые параметры " и выберите этот параметр. Чтобы выбрать созданную переменную идентификатора транзакции, выполните следующие действия.

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

    2. В списке в разделе "Переменные" выберите созданную ранее переменную, которая является IDocTransactionID в этом примере.

    Рабочий процесс потребления

    Снимок экрана: рабочий процесс потребления с действием с именем IDOC Send document to SAP.

    Стандартный рабочий процесс

    Снимок экрана: стандартный рабочий процесс с действием с именем IDOC Send document to SAP.

  5. Для управляемого действия SAP с именем [IDOC] Отправьте документ в SAP, откройте параметры, чтобы просмотреть политику повторных попыток.

    Параметр по умолчанию — это рекомендуемая политика, но вы можете выбрать пользовательскую политику для конкретных потребностей. Если вы решили использовать настраиваемую политику, настройте по крайней мере одну попытку, чтобы преодолеть временные сбои сети.

    Примечание.

    В настоящее время только управляемые действия соединителей имеют параметр политики повторных попыток, а не встроенные соединители на основе поставщика услуг.

  6. Теперь добавьте действие SAP с именем [IDOC — RFC] Подтверждение идентификатора транзакции.

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

    2. В списке в разделе "Переменные" введите имя созданной переменной, которая является IDocTransactionID в этом примере.

      Рабочий процесс потребления

      Снимок экрана: рабочий процесс потребления с действием с именем

      Стандартный рабочий процесс

      Снимок экрана: стандартный рабочий процесс с действием с именем

  7. При необходимости проверьте дедупликацию в тестовой среде.

    1. Добавьте другое действие SAP с именем [IDOC] Отправить документ в SAP. В параметре идентификатора транзакции выберите GUID идентификатора транзакции, который использовался на предыдущем шаге.

    2. Чтобы проверить, какой номер IDoc назначается после каждого вызова действия с именем [IDOC] Отправить документ в SAP, добавьте действие с именем [IDOC] Получить список IDOC для транзакции в рабочий процесс с тем же идентификатором транзакции и направление получения .

      Если для обоих вызовов возвращается один и тот же номер IDoc, идентификатор был дедупликирован.

При отправке одного и того же идентификатора дважды можно проверить, что SAP может идентифицировать дублирование вызова tRFC и разрешить два вызова одному входящего сообщения IDoc.

Устранение неполадок

Проблемы с подключением

При создании подключения при возникновении следующей ошибки возникает проблема с установкой клиентской библиотеки SAP NCo:

Сбой проверки подключения. Ошибка "Не удалось обработать запрос". Сведения об ошибке: "не удалось загрузить файл или сборку sapnco, Version=3.0.0.42, Culture=neutral, PublicKeyToken 50436dca5c7f7d23 или одну из ее зависимостей. Системе не удается найти указанный файл".

Обязательно установите требуемую версию клиентской библиотеки NCo SAP и выполните все остальные предварительные требования.

Ошибка 500 bad Gateway или 400 Bad Request

Если возникнет ошибка 500 Bad Gateway или 400 Bad Request с сообщением вроде служба 'sapgw00' неизвестна, это означает, что не удается выполнить разрешение имени службы в сети к номеру порта по одной из описанных ниже причин.

{
   "body": {
      "error": {
         "code": 500,
         "source": "EXAMPLE-FLOW-NAME.eastus.environments.microsoftazurelogicapps.net",
         "clientRequestId": "00000000-0000-0000-0000-000000000000",
         "message": "BadGateway",
         "innerError": {
            "error": {
               "code": "UnhandledException",
               "message": "\nERROR service 'sapgw00' unknown\nTIME Wed Nov 11 19:37:50 2020\nRELEASE 721\nCOMPONENT NI (network interface)\nVERSION 40\nRC -3\nMODULE ninti.c\nLINE 933\nDETAIL NiPGetServByName: 'sapgw00' not found\nSYSTEM CALL getaddrinfo\nCOUNTER 1\n\nRETURN CODE: 20"
            }
         }
      }
   }
}
  • Вариант 1. В подключении API и конфигурации триггера замените имя службы шлюза на номер ее порта. В примере ошибки необходимо заменить sapgw00 на фактический номер порта, например 3300. Это единственный доступный вариант для ISE.

  • Вариант 2. Если используется локальный шлюз данных, вы можете добавить имя службы шлюза к сопоставлению порта в %windir%\System32\drivers\etc\services, а затем перезапустите службу локального шлюза данных. Пример:

    sapgw00  3300/tcp
    

Подобная ошибка может возникнуть, когда имя сервера приложений или сообщений SAP разрешается в IP-адрес. Для ISE необходимо указать IP-адрес сервера приложений или сообщений SAP. Для локального шлюза данных можно добавить имя к сопоставлению IP-адреса в %windir%\System32\drivers\etc\hosts. Пример:

10.0.1.9 SAPDBSERVER01 # SAP System Server VPN IP by computer name
10.0.1.9 SAPDBSERVER01.someguid.xx.xxxxxxx.cloudapp.net # SAP System Server VPN IP by fully qualified computer name

Ошибки, отправляющие пакеты IDoc из SAP в триггер

Если вы не можете отправлять пакеты IDoc из SAP в триггер, просмотрите сообщение об отклонении вызова транзакций RFC (tRFC) в диалоговом окне SAP tRFC (T-Code SM58). В интерфейсе SAP могут появиться следующие сообщения об ошибках, которые обрезаются из-за ограничений подстроки в поле Состояние текста.

Определение сегмента или группы E2EDK36001 не найдено в метаданных IDoc

Это сообщение об ошибке означает ожидаемые ошибки, возникающие при других ошибках. Например, сбой при создании полезных данных XML IDoc, так как SAP не освобождает его сегменты. В результате отсутствуют метаданные типа сегмента, необходимые для преобразования.

Чтобы эти сегменты были выпущены SAP, обратитесь к инженеру ABAP для вашей системы SAP.

RequestContext для IReplyChannel был закрыт без отправки ответа.

Для управляемого соединителя SAP и соединителя SAP с версией ISE это сообщение об ошибке означает, что непредвиденные сбои происходят, когда обработчик catch-all для канала завершает канал из-за ошибки и перестраивает канал для обработки других сообщений.

Примечание.

Управляемый триггер SAP и триггеры SAP с версией ISE — это веб-перехватчики, использующие адаптер SAP на основе SOAP. Однако встроенный триггер SAP — это триггер на основе Функции Azure, который не использует адаптер SOAP SAP и не получает это сообщение об ошибке.

  • Чтобы подтвердить, что рабочий процесс получил IDoc, добавьте действие ответа, которое возвращает код состояния 200 OK. Оставьте текст пустым и не изменяйте и не добавляйте в заголовки. IDoc передается через tRFC, что не допускает ответа с полезными данными.

  • Чтобы отклонить IDoc вместо этого, ответьте на любой код состояния HTTP, отличный от 200 OK. Адаптер SAP тогда возвратит исключение обратно в SAP от вашего имени. Следует только отклонить IDoc, чтобы сообщить об ошибках транспорта обратно SAP, например, в случае неверно перенаправленного IDoc, который приложение не может обработать. Не следует отклонять IDoc для ошибок уровня приложения, таких как проблемы с данными, содержащимися в IDoc. При задержке приема транспорта для проверки на уровне приложения может возникнуть отрицательное влияние на производительность из-за блокирования соединения в связи с передачей других iDoc.

  • Если вы получаете это сообщение об ошибке и возникает системные сбои, вызывающие Azure Logic Apps, убедитесь, что вы настроили параметры сети для локальной службы шлюза данных для конкретной среды. Например, если сетевая среда требует использования прокси-сервера для вызова конечных точек Azure, необходимо настроить локальную службу шлюза данных на использование прокси-сервера. Дополнительные сведения см. в статье о конфигурации прокси-сервера.

  • Если вы получаете это сообщение об ошибке и периодические сбои, вызывающие Azure Logic Apps, может потребоваться увеличить количество повторных попыток или также интервал повторных попыток, выполнив следующие действия:

    1. Проверьте параметры SAP в файле конфигурации службы локального шлюза данных с именем Microsoft.PowerBI.EnterpriseGateway.exe.config.

      1. В корневом узле configuration добавьте элемент configSections, если он не существует.

      2. configSections В узле добавьте section элемент со следующими атрибутами, если он отсутствует:name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"

        Внимание

        Не изменяйте атрибуты в существующих элементах section, если такие элементы уже существуют.

        Элемент configSections выглядит следующим образом, если в конфигурации службы шлюза не объявлены другие разделы или группы разделов:

        <configSections>
          <section name="SapAdapterSection" type="Microsoft.Adapters.SAP.Common.SapAdapterSection, Microsoft.Adapters.SAP.Common"/>
        </configSections>
        
      3. В корневом узле configuration добавьте элемент SapAdapterSection, если он не существует.

      4. SapAdapterSection В узле добавьте Broker элемент со следующими атрибутами, если он отсутствует:WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2"

        Внимание

        Измените атрибуты элемента Broker, даже если элемент уже существует.

        Элемент SapAdapterSection выглядит так, как показано в следующей версии, если в конфигурации адаптера SAP нет другого элемента или атрибута:

        <SapAdapterSection>
          <Broker WebhookRetryDefaultDelay="00:00:00.10" WebhookRetryMaximumCount="2" />
        </SapAdapterSection>
        

        Параметр счетчика повторных попыток выглядит следующим образом: WebhookRetryMaximumCount="2". Параметр интервала повторных попыток выглядит как WebhookRetryDefaultDelay="00:00:00.10", где формат TimeSpan — HH:mm:ss.ff.

      Примечание.

      Дополнительные сведения о файле конфигурации см. в статье Схема файла конфигурации для .NET Framework.

    2. Сохранение изменений.

    3. Если вы используете локальный шлюз данных, перезапустите шлюз.

Следующие шаги