Кратко
Claude отвечает на бизнес-вопросы по SAP S/4HANA on-premise или Private Cloud прямо из HANA, со словарём данных SAP как инструментами. Только чтение, без BTP.
Попробуй спросить
Примеры промптов для SAP S/4HANA (HANA SQL)
Кликни по промпту — он скопируется. Вставь в Claude, ChatGPT, Cursor, Gemini, Copilot или OpenClaw и запусти через этот коннектор.
Claude — это AI, он может ошибаться. Проверяйте ответы.
Коротко: Коннектор SAP S/4HANA (HANA SQL) позволяет Claude читать систему S/4HANA напрямую из её базы данных HANA. Прежде чем написать запрос, Claude смотрит в собственном словаре данных SAP, что означают BUKRS, HSL или VBRK, и поэтому выбирает правильную таблицу, правильное поле валюты и правильный мандант. Сессия работает только на чтение на уровне самой HANA, результаты ограничены 1000 строками, а у каждого запроса есть тайм-аут. Вам нужен пользователь базы данных HANA от команды SAP Basis и AnythingMCP на своём сервере с доступом к SQL-порту HANA.
| Основное | |
|---|---|
| Коннектор | SAP S/4HANA (HANA SQL), 10 инструментов |
| Системы | S/4HANA on-premise, Private Cloud (RISE), HANA Enterprise Cloud |
| Доступ | Только чтение: один SELECT за вызов, SET TRANSACTION READ ONLY, не более 1000 строк, тайм-аут 60 с |
| Драйвер | hdb входит в комплект; @sap/hana-client от SAP по желанию, устанавливается вами |
| Размещение | На своём сервере в сети, из которой доступна HANA (AnythingMCP распространяется с открытым исходным кодом, AGPL-3.0) |
| Проверено | Каждый инструмент проверен на работающей системе SAP S/4HANA 2025 |
- 10 инструментов sap_*
- Роли и доступ к инструментам
- По умолчанию только чтение
- Журнал аудита
Почему обычного SQL-коннектора для SAP недостаточно
Таблицы и поля SAP называются короткими немецкими сокращениями: ACDOCA означает Универсальный журнал, RBUKRS балансовую единицу, HSL сумму в валюте балансовой единицы, VBRK заголовок документа фактуры. Модель, которая видит только имена столбцов, угадывает, а SAP за догадки наказывает: валюта суммы хранится в отдельном столбце, каждая таблица разделена по мандантам (MANDT), даты хранятся как строки YYYYMMDD, а номера документов содержат ведущие нули.
Коннектор даёт Claude собственный словарь SAP в виде инструментов. Он читает таблицы, которыми SAP описывает сам себя (DD02L, DD03L, DD04T, DD07T, DD08L и аннотации CDS), поэтому Claude видит бизнес-название каждого поля, какое поле валюты или единицы измерения относится к каждой сумме, что означают коды поля, как соединяются таблицы и какие CDS-представления SAP выпущены и являются аналитическими. Только после этого он пишет запрос.
Как Claude находит данные
sap_guideобъясняет модель данных SAP применительно к SQL: мандант, даты в форматеYYYYMMDD, валюты, Универсальный журнал. Вызов ничего не стоит и не затрагивает данные.sap_org_structureвыводит балансовые единицы с валютой и вариантом финансового года, заводы и сбытовые организации. Почти любой вопрос ограничен одной из них.sap_search_cds_viewsиsap_search_tablesнаходят, где лежат данные, и отдают предпочтение выпущенным аналитическим CDS-представлениям SAP, в которых соединения, валюты и знаки уже учтены.sap_describe_tableдаёт каждому полю его бизнес-название, поле валюты или единицы для каждой суммы и контрольную таблицу для каждого кода.sap_queryвыполняет одинSELECTтолько на чтение с фильтром по манданту, организационной единице и периоду и с агрегацией в SQL.
Что можно спросить
Три вопроса от начала до конца. SQL взят из рецептов в sap_guide; замените мандант 100, балансовую единицу 1010 и даты на свои. Claude называет сделанные допущения, например какие счета считаются выручкой, и просит вас их подтвердить.
“Какой была наша выручка по периодам проводки в 2025 году?”
HANA SQLsap_guidesap_org_structuresap_queryACDOCAУниверсальный журнал, ведущий леджер 0L
SELECT POPER, RHCUR AS CURRENCY, -SUM(HSL) AS REVENUE
FROM ACDOCA
WHERE RCLNT = '100' AND RLDNR = '0L' AND RBUKRS = '1010' AND GJAHR = '2025'
AND RACCT BETWEEN '0040000000' AND '0049999999' -- счета выручки: уточните диапазон
GROUP BY POPER, RHCUR ORDER BY POPER;
Одна строка на период проводки, в валюте балансовой единицы. Выручка проводится по кредиту, поэтому сумма берётся с обратным знаком.
“У каких клиентов есть счета, просроченные более чем на 60 дней, и на какую сумму?”
HANA SQLsap_guidesap_org_structuresap_queryACDOCAУниверсальный журнал, строки по дебиторам (KOART = D)
SELECT KUNNR, RHCUR AS CURRENCY,
SUM(HSL) AS OPEN_AMOUNT,
SUM(CASE WHEN NETDT >= '20251231' THEN HSL ELSE 0 END) AS NOT_DUE,
SUM(CASE WHEN NETDT < '20251231' AND NETDT >= '20251101' THEN HSL ELSE 0 END) AS OVERDUE_1_60,
SUM(CASE WHEN NETDT < '20251101' THEN HSL ELSE 0 END) AS OVERDUE_OVER_60
FROM ACDOCA
WHERE RCLNT = '100' AND RLDNR = '0L' AND RBUKRS = '1010' AND KOART = 'D' AND POPER <> '000'
AND BUDAT <= '20251231' AND (AUGDT = '00000000' OR AUGDT > '20251231')
GROUP BY KUNNR, RHCUR ORDER BY OVERDUE_OVER_60 DESC LIMIT 20;
Открытые позиции на ключевую дату, распределённые по срокам просрочки от нетто-срока оплаты. Позиции, выровненные после ключевой даты, на эту дату всё ещё считаются открытыми.
“Какие 10 клиентов принесли нам больше всего чистой выручки в 2025 году?”
HANA SQLsap_guidesap_field_valuessap_queryVBRKЗаголовок документа фактурыVBRPПозиции документа фактурыKNA1Основная запись клиента
SELECT k.KUNAG, c.NAME1, k.WAERK, SUM(p.NETWR) AS NET_SALES
FROM VBRK k JOIN VBRP p ON p.MANDT = k.MANDT AND p.VBELN = k.VBELN
LEFT JOIN KNA1 c ON c.MANDT = k.MANDT AND c.KUNNR = k.KUNAG
WHERE k.MANDT = '100' AND k.FKDAT BETWEEN '20250101' AND '20251231'
AND k.FKSTO = '' AND k.VBTYP = 'M'
GROUP BY k.KUNAG, c.NAME1, k.WAERK ORDER BY NET_SALES DESC LIMIT 10;
Десять строк с номером клиента, названием, валютой и чистой выручкой. Клиенты ранжируются по документам фактуры, а не по журналу: в ACDOCA клиент указан в строке дебиторской задолженности, а не в строке выручки. Сначала Claude читает значения VBTYP, чтобы отличить счета от кредит-авизо и сторно.
HANA SQL или OData?
AnythingMCP подключается к S/4HANA on-premise и Private Cloud двумя способами. Выберите один или используйте оба параллельно.
| HANA SQL (это руководство) | OData | |
|---|---|---|
| Что читает | Любую таблицу или CDS-представление, доступные пользователю базы данных | OData-сервисы, которые может вызывать пользователь SAP |
| Полномочия SAP | Не применяются: границу задают права в базе данных | SAP проверяет их при каждом вызове |
| Сильные стороны | Итоги по миллионам строк, финансы и сквозной анализ по модулям | Опубликованные API, представления бизнес-объектов, собственные проверки SAP |
| Что нужно | Пользователь базы данных HANA, сетевой доступ к SQL-порту, лицензия, которая это допускает | Технический пользователь SAP, активные сервисы Gateway |
Что понадобится
- Администратор SAP Basis, который может создать пользователя в базе данных тенанта со схемой ABAP (обычно
SAPHANADBилиSAPABAP1). - Параметры подключения: хост, SQL-порт тенанта (
3<instance>15для первого тенанта,3<instance>41и выше для следующих), имя тенанта, схема, трёхзначный мандант SAP и язык SAP для текстов (Eанглийский,Dнемецкий). - AnythingMCP на своём сервере с доступом к этому порту. SQL-порт HANA обычно доступен только внутри корпоративной сети или в landing zone частного облака SAP.
- Проверка лицензии. Прямой SQL-доступ стороннего приложения к схеме ABAP регулируется вашей лицензией SAP HANA. Runtime-лицензия, поставляемая вместе с S/4HANA, обычно его не покрывает, а full-use-лицензия покрывает. Прежде чем подключать продуктивную систему, уточните это у своего менеджера по работе с клиентами в SAP. В частных облачных предложениях SAP пользователя базы данных и сетевой доступ запрашивают у SAP.
Настройка
Шаг 1: Создайте пользователя базы данных только для чтения
В тенанте со схемой ABAP:
CREATE USER AMCP_READER PASSWORD "<strong password>" NO FORCE_FIRST_PASSWORD_CHANGE;
ALTER USER AMCP_READER DISABLE PASSWORD LIFETIME;
-- инструменты словаря
GRANT SELECT ON SAPHANADB.DD02L TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD02T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD03L TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD03T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD03ND TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD04T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD07T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD08L TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD05S TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DDHEADANNO TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DDFIELDANNO TO AMCP_READER;
GRANT SELECT ON SAPHANADB.ARS_W_API_STATE TO AMCP_READER;
-- организационная структура
GRANT SELECT ON SAPHANADB.T001 TO AMCP_READER;
GRANT SELECT ON SAPHANADB.T001K TO AMCP_READER;
GRANT SELECT ON SAPHANADB.T001W TO AMCP_READER;
GRANT SELECT ON SAPHANADB.TKA01 TO AMCP_READER;
GRANT SELECT ON SAPHANADB.TVKO TO AMCP_READER;
GRANT SELECT ON SAPHANADB.TVKOT TO AMCP_READER;
GRANT SELECT ON SAPHANADB.T024E TO AMCP_READER;
-- затем бизнес-таблицы и CDS-представления, нужные для ваших сценариев, например
GRANT SELECT ON SAPHANADB.ACDOCA TO AMCP_READER;
GRANT SELECT ON SCHEMA SAPHANADB проще для широкой аналитики, но тогда читается всё содержимое схемы, включая кадровые данные. SQL не применяет прикладные полномочия SAP (балансовая единица, сбытовая организация, проверки HR): всё, что может прочитать пользователь базы данных, может прочитать и Claude.
При желании ограничьте запросы пользователя и на стороне сервера:
CREATE WORKLOAD CLASS "AMCP_READER_WC" SET 'STATEMENT TIMEOUT' = '60', 'STATEMENT MEMORY LIMIT' = '20';
CREATE WORKLOAD MAPPING "AMCP_READER_WM" WORKLOAD CLASS "AMCP_READER_WC" SET 'USER NAME' = 'AMCP_READER';
Шаг 2: Запустите AnythingMCP внутри сети
На хосте, у которого есть доступ к SQL-порту HANA:
mkdir anythingmcp && cd anythingmcp
curl -fsSLo docker-compose.yml \
https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d # → http://localhost:3000
Добавьте хост HANA в SSRF_ALLOWED_HOSTS в файле .env: по умолчанию AnythingMCP отклоняет частные адреса.
Шаг 3: Установите коннектор
Откройте Connectors → Marketplace, найдите S/4HANA и установите SAP S/4HANA (HANA SQL):

Затем заполните переменные. Те, из которых складывается адрес подключения, обязательны: без них коннектор не создать.
| Переменная | Пример |
|---|---|
SAP_HANA_HOST | hana.internal |
SAP_HANA_PORT | 30015 |
SAP_HANA_TENANT | S4P |
SAP_HANA_SCHEMA | SAPHANADB |
SAP_CLIENT | 100 |
SAP_LANGUAGE | E |
SAP_HANA_TLS | verify, no-verify для самоподписанного сертификата или off |
SAP_HANA_USER / SAP_HANA_PASSWORD | AMCP_READER и его пароль |

При установке выполняется один тестовый вызов (sap_org_structure), и вы сразу видите, работают ли учётные данные и выданные права. Пароль хранится в зашифрованном виде и никогда не показывается Claude.

Шаг 4: Добавьте MCP-сервер в Claude

На claude.ai или в Claude Desktop: Customize → Connectors → + → Add custom connector, вставьте URL вашего MCP-сервера (он указан в разделе MCP Servers в AnythingMCP) и войдите. Для claude.ai URL должен быть публичным и работать по HTTPS, потому что Claude подключается с серверов Anthropic; публиковать нужно только MCP-эндпоинт, но никогда не порт HANA. В Claude Code подойдёт и локальный экземпляр:
claude mcp add --transport http sap-hana <your MCP server URL> --header "X-API-Key: <key>"
Шаг 5: Задайте вопрос
Начните с вопроса, который ограничивает данные, например «Какие балансовые единицы есть в этой системе и в какой валюте?». Коннектор сообщает Claude, что сначала нужно прочитать sap_guide; дальше Claude сам работает с инструментами словаря.
Доступные инструменты
| Инструмент | Что он даёт Claude |
|---|---|
sap_guide | Модель данных SAP применительно к SQL, по темам: основы (мандант, даты, ведущие нули, валюты), финансы (Универсальный журнал ACDOCA), сбыт, запасы, закупки, операции, подводные камни и рецепты запросов. Вызов ничего не стоит и не затрагивает данные. |
sap_org_structure | Балансовые единицы с валютой, планом счетов и вариантом финансового года; контроллинговые единицы, заводы, сбытовые и закупочные организации. |
sap_search_tables | Таблицы по имени или описанию с числом строк; отмечает представления совместимости S/4HANA, которые обычный SQL прочитал бы неправильно. |
sap_describe_table | Каждое поле с названием, признаком ключа, типом, полем валюты или единицы для каждой суммы и контрольной таблицей. |
sap_find_fields | В каких таблицах есть бизнес-поле, например «нетто-срок оплаты». |
sap_field_values | Что означают коды поля, например категории документов фактуры. |
sap_table_relations | Внешние ключи с условиями соединения и таблица текстов. |
sap_search_cds_views | CDS-представления SAP по имени или названию, с отметкой выпущенных и аналитических. |
sap_describe_cds_view | Столбцы CDS-представления с названиями, показателями, полями валюты и единиц, а также ассоциации. |
sap_query | Один SELECT только на чтение, не более 1000 строк и с тайм-аутом. |

Что обеспечивает коннектор
Нативный драйвер SAP
AnythingMCP поставляется с hdb, драйвером HANA от SAP на чистом JavaScript (Apache-2.0). Он поддерживает вход по имени пользователя и паролю, TLS, многотенантные системы и всё, что делает коннектор. Нативный драйвер SAP, @sap/hana-client, добавляет Kerberos, защищённое хранилище пользователей (hdbuserstore) и пул соединений. Он выпущен под лицензией SAP Developer License, которая не разрешает нам его распространять, поэтому он никогда не входит в образ: вы устанавливаете его в своё развёртывание, расширив образ или подключив драйвер как том, и выбираете его параметром driver=hana-client в строке подключения или HANA_DRIVER=hana-client для всех HANA-коннекторов. Убедитесь, что ваш договор с SAP допускает его использование в продуктиве. На хостах arm64 оставьте встроенный драйвер hdb или соберите собственный образ на базе Debian. Пошагово: SAP HANA в документации AnythingMCP.
Примеры запросов
- «Покажи выручку по периодам проводки для балансовой единицы 1010 за 2025 год»
- «У каких клиентов есть открытая дебиторская задолженность старше 30 дней и сколько по каждому клиенту?»
- «Топ-10 клиентов по чистой выручке за этот год, по документам фактуры»
- «Какие выпущенные аналитические CDS-представления охватывают проводки? Опиши показатели первого из них»
- «Что означают значения поля категории документа фактуры?»
- «Движения материалов по видам движения на заводе 1010 за прошлый месяц»
Устранение неполадок
- CDS-представление не возвращает строк.
SAP_CLIENTне задан или указан неверно; коннектору он нужен, чтобы установитьCDS_CLIENT. - Соединение отклонено или перенаправление на неизвестный хост. Используйте собственный SQL-порт тенанта, а не порт системной базы данных: она может перенаправить на внутреннее имя хоста, которое коннектор не может разрешить.
- «Insufficient privilege». У пользователя базы данных нет прав на эту таблицу. Выдайте их или попросите Claude использовать таблицу или CDS-представление, которые ему доступны.
- Ошибка сертификата. Для самоподписанного сертификата укажите
SAP_HANA_TLS=no-verifyили установите сертификат CA. - Запрос завершается по тайм-ауту. Попросите Claude отфильтровать данные по балансовой единице, периоду или заводу и агрегировать их в SQL; увеличивайте
statementTimeout, только если запрос действительно большой.
FAQ
Может ли Claude изменять данные в SAP через этот коннектор?
Нет. Сессия HANA работает только на чтение, выполняется только один SELECT, а запись и блокирующие чтения отклоняются. Создайте пользователя базы данных только с правами SELECT, и HANA будет соблюдать то же правило.
Учитываются ли полномочия SAP? Нет. SQL обходит прикладные полномочия SAP, поэтому то, что может читать Claude, определяют права в базе данных. Если нужны проверки полномочий SAP, используйте подключение через OData или выдавайте права только на те таблицы и представления, которые можно читать.
Допускает ли моя лицензия SAP прямой SQL-доступ к S/4HANA? Это зависит от вашей лицензии HANA. Runtime-лицензия, поставляемая вместе с S/4HANA, обычно не покрывает SQL-доступ сторонних приложений к схеме ABAP, а full-use-лицензия покрывает. Проверьте договор, прежде чем подключать продуктивную систему.
Работает ли это с S/4HANA Private Cloud (RISE)? Да, если SAP предоставит пользователя базы данных и сетевой доступ к SQL-порту HANA, а AnythingMCP будет работать там, откуда этот порт доступен. Запросите и то и другое у SAP.
Можно ли использовать AnythingMCP Cloud вместо своего сервера? Только если SQL-порт HANA доступен из интернета, а это бывает редко и редко разумно. Разверните AnythingMCP на своём сервере рядом с SAP.
Работает ли это также с ChatGPT и Copilot? Да. Тот же MCP-сервер работает в ChatGPT (режим разработчика, платные тарифы), GitHub Copilot, Cursor и Claude Code, с теми же инструментами и теми же ограничениями только на чтение.
Нужны ли для этого SAP BTP или SAP Joule? Нет. Коннектор обращается к базе данных HANA напрямую, поэтому ему не нужны ни BTP, ни Joule, ни SAP Gateway. Если вы используете и то и другое, он работает и рядом с Joule.
Это MCP-сервер для SAP HANA, который можно запустить самостоятельно? Да. AnythingMCP распространяется с открытым исходным кодом (AGPL-3.0) и запускается через Docker Compose рядом с SAP. Репозиторий sap-hana-mcp-server содержит только этот коннектор, а страница MCP-сервер для SAP HANA описывает его для разработчиков.
Следующие шаги
- MCP-сервер для SAP HANA: тот же коннектор с точки зрения разработчика
- OData в MCP: второй способ подключения к S/4HANA on-premise, с проверками полномочий SAP
- Подключить SAP к Claude: все коннекторы SAP в одном обзоре
- База данных в MCP: SAP HANA как обычный коннектор базы данных, наряду с SQL Server, PostgreSQL и Oracle
- SAP HANA на GitHub: параметры строки подключения и нативный драйвер
Это руководство помогло?