Копирование данных из таблицы SAP и обратно с помощью Фабрики данных Azure или Azure Synapse Analytics

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Совет

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

В этой статье описывается, как с помощью действия копирования в Фабрике данных Azure и конвейерах Azure Synapse Analytics копировать данные из таблицы SAP. Дополнительные сведения см. в статье Общие сведения о действии копирования.

Совет

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

Поддерживаемые возможности

Соединитель таблиц SAP поддерживает следующие возможности:

Поддерживаемые возможности IR
Действие копирования (источник/-) (2)
Действие поиска (2)

① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции

Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия копирования, приведен в таблице Поддерживаемые хранилища данных.

В частности, данный соединитель таблиц SAP поддерживает:

  • Копирование данных из таблицы SAP в:

    • SAP ERP Central Component (SAP ECC) версии 7.01 или более поздней (в последнем стеке пакетов поддержки SAP, выпущенном после 2015 г.).
    • SAP Business Warehouse (SAP BW) версии 7.01 или более поздней (в последнем стеке пакетов поддержки SAP, выпущенном после 2015 г.).
    • SAP S/4HANA.
    • Другие продукты SAP Business Suite версии 7.01 или более поздней (в последнем стеке пакетов поддержки SAP, выпущенном после 2015 г.).
  • Копирование данных из прозрачной таблицы SAP, таблицы из пула, кластеризованной таблицы и представления.

  • Копирование данных с использованием обычной проверки подлинности или защищенного сетевого подключения (SNC), если установлен SNC.

  • Подключение к серверу приложений SAP или серверу сообщений SAP.

  • Извлечение данных с помощью RFC — пользовательского или по умолчанию.

Версия 7.01 или более поздняя относится к версии SAP NetWeaver, а не к версии SAP ECC. Например, SAP ECC 6.0 EHP 7 обычно имеет версию NetWeaver >=7.4. Если неизвестно, какую версию имеет используемая система SAP, выполните следующие действия, чтобы выяснить это.

  1. С помощью графического интерфейса SAP подключитесь к системе SAP.
  2. Выберите Система ->Состояние.
  3. Проверьте выпуск SAP_BASIS, убедитесь, что он больше или равен 701.
    Проверьте SAP_BASIS

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

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

  • Настройте локальную среду выполнения интеграции (версии 3.17 или более поздней). Дополнительные сведения см. в разделе Создание и настройка локальной среды выполнения интеграции.

  • Загрузите 64-разрядную версию соединителя SAP для Microsoft .NET 3.0 с веб-сайта SAP и установите ее на машине, где установлена локальная среда выполнения интеграции. Во время установки убедитесь, что в окне Необязательные шаги установки выбран параметр Установить сборки в глобальный кэш сборок.

    Установите соединитель SAP для .NET

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

    • Авторизация для использования назначений удаленного вызова функций (RFC).
    • Разрешения на действие "Выполнить" для объекта авторизации S_SDSAUTH. Большинство объектов авторизации описано в примечании SAP 460089. Некоторые RFC являются обязательными для базового соединителя NCo, например RFC_FUNCTION_SEARCH.

Начать

Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:

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

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

  1. Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":

  2. Найдите SAP и выберите соединитель таблицы SAP.

    Снимок экрана: соединитель таблицы SAP.

  3. Настройте сведения о службе, проверьте подключение и создайте связанную службу.

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

Сведения о конфигурации соединителя

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

Свойства связанной службы

Следующие свойства поддерживаются для связанной службы SAP BW Open Hub:

Свойство Описание: Обязательное поле
type Свойство type должно иметь значение SapTable. Да
server Имя сервера, на котором расположен экземпляр SAP.
Используйте для подключения к серверу приложений SAP.
No
systemNumber Номер системы SAP.
Используйте для подключения к серверу приложений SAP.
Допустимые значения: двузначное десятичное число, представленное в виде строки.
No
messageServer Имя узла сервера сообщений SAP.
Используйте для подключения к серверу сообщений SAP.
No
messageServerService Имя службы или номер порта сервера сообщений.
Используйте для подключения к серверу сообщений SAP.
No
systemId Идентификатор системы SAP, в которой находится таблица.
Используйте для подключения к серверу сообщений SAP.
No
logonGroup Группа входа для системы SAP.
Используйте для подключения к серверу сообщений SAP.
No
clientId Идентификатор клиента в системе SAP.
Допустимые значения: трехзначное десятичное число, представленное в виде строки.
Да
language Язык, используемый в системе SAP.
Значение по умолчанию: EN.
No
userName Имя пользователя, получающего доступ к серверу SAP. Да
password Пароль пользователя. Присвойте этому полю метку типа SecureString для безопасного хранения или добавьте ссылку на секрет, хранящийся в Azure Key Vault. Да
sncMode Индикатор активации SNC для доступа к серверу SAP, на котором расположена таблица.
Используйте в том случае, если нужно использовать SNC для подключения к серверу SAP.
Допустимые значения: 0 (Выкл., по умолчанию) или 1 (Вкл.).
No
sncMyName Имя SNC инициатора для доступа к серверу SAP, на котором расположена таблица.
Действует, если включен sncMode.
No
sncPartnerName Имя партнера SNC для доступа к серверу SAP, на котором расположена таблица.
Действует, если включен sncMode.
No
sncLibraryPath Внешняя библиотека безопасности продукта для доступа к серверу SAP, на котором расположена таблица.
Действует, если включен sncMode.
No
sncQop Применяемый уровень качества защиты SNC.
Действует, если включен sncMode.
Допустимые значения: 1 (проверка подлинности), 2 (целостность), 3 (конфиденциальность), 8 (по умолчанию), 9 (максимум).
No
connectVia Среда выполнения интеграции, используемая для подключения к хранилищу данных. Требуется локальная среда IR, как уже говорилось в разделе Предварительные требования. Да

Пример 1. Подключение к серверу приложений SAP

{
    "name": "SapTableLinkedService",
    "properties": {
        "type": "SapTable",
        "typeProperties": {
            "server": "<server name>",
            "systemNumber": "<system number>",
            "clientId": "<client ID>",
            "userName": "<SAP user>",
            "password": {
                "type": "SecureString",
                "value": "<Password for SAP user>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Пример 2. Подключение к серверу сообщений SAP

{
    "name": "SapTableLinkedService",
    "properties": {
        "type": "SapTable",
        "typeProperties": {
            "messageServer": "<message server name>",
            "messageServerService": "<service name or port>",
            "systemId": "<system ID>",
            "logonGroup": "<logon group>",
            "clientId": "<client ID>",
            "userName": "<SAP user>",
            "password": {
                "type": "SecureString",
                "value": "<Password for SAP user>"
            }
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Пример 3. Подключение с использованием SNC

{
    "name": "SapTableLinkedService",
    "properties": {
        "type": "SapTable",
        "typeProperties": {
            "server": "<server name>",
            "systemNumber": "<system number>",
            "clientId": "<client ID>",
            "userName": "<SAP user>",
            "password": {
                "type": "SecureString",
                "value": "<Password for SAP user>"
            },
            "sncMode": 1,
            "sncMyName": "<SNC myname>",
            "sncPartnerName": "<SNC partner name>",
            "sncLibraryPath": "<SNC library path>",
            "sncQop": "8"
        },
        "connectVia": {
            "referenceName": "<name of integration runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Свойства набора данных

Полный список разделов и свойств, доступных для определения наборов данных, см. в разделе Наборы данных. Следующий раздел содержит список свойств, поддерживаемых для набора данных таблицы SAP.

Для копирования данных из связанной службы SAP BW Open Hub и в нее, поддерживаются следующие свойства:

Свойство Описание: Обязательное поле
type Свойство type должно иметь значение SapTableResource. Да
tableName Имя таблицы SAP, из которой копируются данные. Да

Пример

{
    "name": "SAPTableDataset",
    "properties": {
        "type": "SapTableResource",
        "typeProperties": {
            "tableName": "<SAP table name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<SAP table linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

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

Полный список разделов и свойств, доступных для определения действий, см. в разделе Конвейеры. Следующий раздел содержит список свойств, поддерживаемых источниками-таблицами SAP.

Таблица SAP в качестве источника

Для копирования данных из таблицы SAP поддерживаются следующие свойства.

Свойство Описание: Обязательное поле
type Свойство type должно иметь значение SapTableSource. Да
rowCount Количество строк для извлечения. No
rfcTableFields Поля (столбцы) для копирования из таблицы SAP. Например, column0, column1. No
rfcTableOptions Параметры для фильтрации строк в таблице SAP. Например, COLUMN0 EQ 'SOMEVALUE'. См. также таблицу операторов запросов SAP далее в этой статье. No
customRfcReadTableFunctionModule Пользовательский модуль функции RFC, который может использоваться для чтения данных из таблицы SAP.
Пользовательский модуль функции RFC поможет определить, каким образом данные извлекаются из системы SAP и возвращаются в службу. В пользовательском модуле функции должен быть реализован интерфейс (импорт, экспорт, таблицы), подобный интерфейсу /SAPDS/RFC_READ_TABLE2, который используется службой по умолчанию.
No
partitionOption Механизм секционирования для чтения из таблицы SAP. Поддерживаются следующие варианты:
  • None
  • PartitionOnInt (обычные целые или целочисленные значения с нулевым отступом слева, например 0000012345)
  • PartitionOnCalendarYear (4 цифры в формате "ГГГГ")
  • PartitionOnCalendarMonth (6 цифр в формате "ГГГГММ")
  • PartitionOnCalendarDate (8 цифр в формате "ГГГГММДД")
  • PartitionOntime (6 цифр в формате "ЧЧММСС", например 235959)
No
partitionColumnName Имя столбца, используемого для секционирования данных. No
partitionUpperBound Максимальное значение столбца, указанного в partitionColumnName, будет использоваться для продолжения секционирования. No
partitionLowerBound Минимальное значение столбца, указанного в partitionColumnName, будет использоваться для продолжения секционирования. (Примечание. partitionLowerBound не может иметь значение "0", если параметр секционирования имеет значение PartitionOnInt) No
maxPartitionsNumber Максимальное количество секций, на которые разделяются данные. Значение по умолчанию равно 1. No
sapDataColumnDelimiter Отдельный символ, который используется как разделитель, передаваемый для вызова внешней функции SAP с целью разделения выходных данных. No

Совет

Если таблица SAP содержит большой объем данных, например несколько миллиардов строк, используйте partitionOption и partitionSetting для разделения данных на более мелкие секции. В этом случае данные считываются для каждой секции, и каждый раздел данных извлекается с сервера SAP одним вызовом RFC.

Приняв в качестве примера partitionOption в значении partitionOnInt, количество строк в каждой из секций вычисляется по следующей формуле: (всего строк, попадающих в диапазон от partitionUpperBound до partitionLowerBound)/ maxPartitionsNumber.

Чтобы секции данных загружались параллельно для ускорения копирования, степень параллелизма определяется параметром parallelCopies действия копирования. Например, если задать для parallelCopies значение 4, служба одновременно генерирует и запускает четыре запроса на основе указанного вами параметра и настроек раздела, и каждый запрос извлекает часть данных из таблицы SAP. Настоятельно рекомендуется делать maxPartitionsNumber степенью значения свойства parallelCopies. Если копирование данных выполняется в файловое хранилище данных, то также рекомендуется сохранять данные в папку несколькими файлами (указывая только имя папки). Производительность в таком случае будет выше, чем при записи в один файл.

Совет

BASXML включен по умолчанию для этого соединителя таблиц SAP в службе.

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

Operator Description
EQ Равно
NE Не равно
LT Меньше
LE Меньше или равно
GT Больше
GE Больше или равно
IN Как в TABCLASS IN ('TRANSP', 'INTTAB')
LIKE Как в LIKE 'Emma%'

Пример

"activities":[
    {
        "name": "CopyFromSAPTable",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<SAP table input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "SapTableSource",
                "partitionOption": "PartitionOnInt",
                "partitionSettings": {
                     "partitionColumnName": "<partition column name>",
                     "partitionUpperBound": "2000",
                     "partitionLowerBound": "1",
                     "maxPartitionsNumber": 500
                 }
            },
            "sink": {
                "type": "<sink type>"
            },
            "parallelCopies": 4
        }
    }
]

Соединение таблиц SAP

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

  • Напишите пользовательский модуль функции, принимающий запрос в OPTIONS и применяющий собственную логику для извлечения данных.
  • В поле "Пользовательский модуль функции" введите имя модуля пользовательской функции.
  • В параметре "Параметры таблицы RFC" укажите инструкцию JOIN таблицы для передачи в модуль функции в OPTIONS, например "<TABLE1> INNER JOIN <TABLE2> ON COLUMN0".

Ниже приведен пример:

Соединение таблиц SAP

Совет

Можно также рассмотреть возможность объединения данных, агрегированных с помощью VIEW, которые поддерживаются соединителем таблиц SAP. Можно также попробовать извлечь связанные таблицы для подключения к Azure (например, службе хранилища Azure, Базе данных SQL Azure), а затем с помощью Потока данных выполнять их дальнейшее соединение и фильтрацию.

Создание пользовательского модуля функции

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

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

  • Определение:

    Определение

  • Экспортируйте данные в одну из следующих таблиц:

    Таблица экспорта 1

    Таблица экспорта 2

Ниже приведены иллюстрации работы соединителя таблиц SAP с настраиваемым модулем функции.

  1. Создайте подключение к серверу SAP через SAP NCO.

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

    • QUERY_TABLE: имя таблицы, заданное в наборе данных таблицы SAP;
    • Delimiter: разделитель, заданный в источнике таблицы SAP;
    • ROWCOUNT/Option/Fields: счетчик строк/параметр агрегирования/поля, заданные в источнике таблицы.
  3. Получите результат и выполните синтаксический разбор данных следующими способами:

    1. Разберите значение в таблице Fields, чтобы получить схемы.

      Разберите значения в Fields.

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

      Получение значений в выходной таблице

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

Сопоставление типов данных для таблиц SAP

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

Тип данных ABAP в SAP Промежуточный тип данных службы
C (String) String
I (Integer) Int32
F (Float) Double
D (Date) String
T (Time) String
P (BCD Packed, Currency, Decimal, Qty) Decimal
N (Numeric) String
X (Binary и Raw) String

Свойства действия поиска

Подробные сведения об этих свойствах см. в разделе Действие поиска.

Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия Copy, приведен в таблице Поддерживаемые хранилища данных.