惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Full Disclosure
V
Vulnerabilities – Threatpost
Attack and Defense Labs
Attack and Defense Labs
N
News and Events Feed by Topic
SecWiki News
SecWiki News
S
Security @ Cisco Blogs
Schneier on Security
Schneier on Security
B
Blog
TaoSecurity Blog
TaoSecurity Blog
The Last Watchdog
The Last Watchdog
H
Hacker News: Front Page
Hacker News - Newest:
Hacker News - Newest: "LLM"
博客园_首页
D
Docker
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Y
Y Combinator Blog
W
WeLiveSecurity
N
News and Events Feed by Topic
F
Fortinet All Blogs
PCI Perspectives
PCI Perspectives
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Recent Announcements
Recent Announcements
Forbes - Security
Forbes - Security
T
Tailwind CSS Blog
Hacker News: Ask HN
Hacker News: Ask HN
爱范儿
爱范儿
腾讯CDC
Last Week in AI
Last Week in AI
月光博客
月光博客
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
Help Net Security
Help Net Security
V
V2EX
C
Cyber Attacks, Cyber Crime and Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
H
Heimdal Security Blog
L
LINUX DO - 最新话题
GbyAI
GbyAI
The Hacker News
The Hacker News
罗磊的独立博客
S
SegmentFault 最新的问题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 【当耐特】
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V2EX - 技术
V2EX - 技术
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
O
OpenAI News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Интеграционный хаб в SAP HR — строим гибкость в ритме трансформаций
Дмитрий Батов · 2026-05-14 · via Все публикации подряд на Хабре

Сложный

7 мин

6.8K

Как с помощью Clean ABAP и Low‑code ускорить выгрузки в 5 раз

Привет, Хабр! Меня зовут Дмитрий, я работаю ведущим разработчиком в Lenta tech («Группа Лента»). В этой статье я разберу архитектуру решения, где технические инструменты — наследование классов и абстрактные типы данных — работают на конкретные бизнес‑цели. Я поделюсь нашими принципами по созданию гибкого ядра, способного за считанные дни подключать новых потребителей без риска для стабильности системы.

Когда «просто выгрузка» превращается в кошмар

Представьте типичный ИТ‑ландшафт крупного ретейлера: десятки тысяч сотрудников, сотни магазинов и постоянно растущий список внешних систем. Сегодня бизнесу нужно передавать данные в WFM для планирования графиков, завтра — в Directum для кадрового ЭДО, послезавтра — на платформу DORS и количество систем‑получателей только растет.

Стандартный путь «одна система — одна программа выгрузки» быстро превращается в «спагетти‑код». Поддержка копится как снежный ком, логика сбора данных дублируется, а нагрузка на шину SAP PI становится непредсказуемой. Каждое внедрение новой системы превращается в проект на месяц с бесконечным тестированием, а риск поломать старые интерфейсы при обновлении общих функций растет в геометрической прогрессии. Для решения этой сложной задачи мы пошли путем создания внутреннего продукта.

Нам требовался универсальный «движок», который позволит:

  1. Сократить Time‑to‑Market новых интеграций в 5 раз: с недель до дней на новый поток, не переписывая ядро;

  2. Гарантировать производительность: 10 000 объектов за 7 минут;

  3. Обеспечить надежность: пакетная передача, обработка дельт и строгий контроль дублей;

  4. Гибкость: переход к модели Low‑code и управление через настроечные таблицы.

Ниже представлена целевая архитектура решения в сравнении с классическим подходом

Эволюция интеграционной модели: переход от разрозненных Point-to-Point выгрузок к универсальному ABAP-движку на базе SAP HR

Эволюция интеграционной модели: переход от разрозненных Point‑to‑Point выгрузок к универсальному ABAP‑движку на базе SAP HR

Конфигурация: управление потоками без переписывания ядра

В основе системы лежит принцип «Конфигурация важнее кода». Чтобы запустить новый поток данных, нам не нужно создавать новую Z‑программу — все ключевые параметры вынесены в настроечные таблицы:

  • Идентификатор потока: Уникальный ключ системы‑потребителя (WFM, Directum, DORS).

  • Класс‑обработчик: Имя ABAP‑класса, наследуемого от базового.

  • Параметры пакетирования: Размер пакета (например, по 1000 объектов) для оптимальной нагрузки на шину PI.

  • Режим работы: Выбор «Срез», «Дельта», «Отложенные события».

Бизнес‑ценность: Такой подход превращает интеграцию в Low‑code инструмент. Консультант может оперативно перенастроить параметры или добавить новую систему, просто создав запись в таблице. Это исключает риск сломать работающие интеграции.

Процесс развертывания нового потока: переход от кастомной разработки к Low-code конфигурированию параметров

Процесс развертывания нового потока: переход от кастомной разработки к Low‑code конфигурированию параметров

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

Архитектура классов: полиморфизм и магия «REF TO DATA»

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

Базовый класс: универсальный «транспортер» Родительский класс инкапсулирует в себе около 80% кода и отвечает за инфраструктуру. Сердце родителя — метод SEND_CONTENT.

  • Слепая отправка: благодаря использованию абстрактного типа данных (REF TO DATA), метод отправки абсолютно всеяден. Он не знает структуру данных конкретного потока — он просто упаковывает контент в прокси‑структуры и обеспечивает доставку.

  • Единый контракт: это гарантирует, что при изменении структуры данных в SAP или на стороне приемника нам не нужно переписывать логику транспорта.

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

Метод GET_CONTENT (Абстрактный): В родителе он пустой. Каждый наследник переопределяет его:

  • Класс «Срез»: Логика формирования слепка данных на текущий момент.

  • Класс «Дельта»: Логика вычисления изменений с момента последней выгрузки.

Инженерный вызов (CDPOS и PCL4): для HR в ретейле критично отслеживать изменения задним числом. Наш Дельта‑наследник работает напрямую с низкоуровневыми логами системы — таблицами CDPOS/CDHDR и кластером PCL4. Мы сканируем логи по конкретным полям, что гарантирует: любое изменение (даже сделанное кадровиком прошлым числом) будет мгновенно подхвачено.

Технический профит: Такой подход позволяет реализовать Event‑driven логику. Мы транслируем события, произошедшие в системе, что критично для WFM (реакция на перевод сотрудника) и Directum (запуск КЭДО по событию приема).

Скорость ретейла: как не уронить систему в пик нагрузок

Скорость и надежность — критические факторы для ретейла. Если интеграция вешает систему на часы, бизнес теряет деньги.

  • Интеллектуальное разбиение на пакеты: программа‑диспетчер отправляет данные порционно (например, по 1000 объектов) через SEND_CONTENT. Это снижает нагрузку на память и исключает таймауты на шине.

  • Фиксация по уникальному ключу: для каждой записи формируется хеш. Это исключает дубли: при повторном запуске система не будет спамить принимающую сторону уже отправленными данными.

Архитектура хаба позволяет избежать избыточной нагрузки при тиражировании с помощью оптимизации один ко многим. Если один и тот же набор данных (например, базовые инфотипы сотрудника) требуется сразу нескольким системам (WFM и Directum), движок выполняет сбор данных единожды. Сформированный контент кэшируется в рамках сессии и транслируется всем подписанным потребителям. Это превращает линейную зависимость нагрузки от количества систем в константу, позволяя подключать новых участников без просадки производительности БД.

Реальные цифры: благодаря типизации через ABAP Proxy (вместо тяжелых IDoc/ALE) исключает избыточные преобразования данных. В результате цикл выгрузки для 10 000 объектов занимает всего 7 минут.

Архитектура на базе REF TO DATA дает нам не только производительность, но и уникальную гибкость: движку фактически все равно, куда поставлять данные — В Directum RX или 1C. Целевая система меняется простым переключением в настройках, при этом тяжелая бизнес‑логика сбора и пакетной обработки в SAP HR остается нетронутой.

В ретейле скорость измеряется не только миллисекундами работы кода, но и скоростью реакции ИТ на запросы бизнеса. Переход к модели low‑code и гибкому фреймворку радикально сократил наш Time‑to‑Market (TТM). Теперь время тратится не на написание программ с нуля, а на финальное тестирование. Это позволяет запускать новые интеграции в разы быстрее, сохраняя стабильность системы

Синергия производительности и бизнес-результата: масштабируемая архитектура как фундамент для ускорения ТТМ

Синергия производительности и бизнес‑результата: масштабируемая архитектура как фундамент для ускорения ТТМ

Главный стратегический эффект перехода на конфигурационную модель — сокращение Time‑to‑Market (TTM) на 80%. Исключив этап написания кода для каждого нового потока, мы трансформировали процесс: теперь путь от бизнес‑заявки до промышленного запуска занимает одну рабочую неделю вместо месяца, а основное время тратится на проверку качества данных, а не на борьбу с кодом.

Эксплуатация: стандартные инструменты

Одним из требований была простота поддержки. Мы интегрировали фреймворк в стандартную экосистему SAP. Мониторинг в одно окно: Вся диагностика (WFM, Directum, DORS) доступна в транзакции SXI_MONITOR. Ошибки видны сразу, а пакеты можно перезапускать стандартными средствами без повторного тяжелого сбора данных в SAP HR.

Анализ рынка: почему не стандарт?

Критерий

Стандартные IDoc / ALE

Наш Фреймворк

Скорость разработки

Медленно (сложные структуры)

Высокая (1–3 дня)

Производительность

Средняя (XML/ALE)

Максимальная (7 мин / 10к)

Гибкость контента

Жесткие сегменты

Любой (через REF TO DATA)

Стоимость поддержки

Высокая (Z‑код в Enhacement‑ах)

Низкая (Clean ABAP)

Почему это важно сегодня? Стандартные экстракторы часто заточены под родные облачные продукты. В условиях миграции на Directum RX или бизнесу нужен инструмент, который не капризничает при смене схемы данных.

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

Заключение

Мы построили адаптивный слой между стабильным SAP HR и динамичным миром внешних систем. Что получил бизнес:

  • Защита инвестиций: Код написан один раз и масштабируется на любые системы.

  • Оперативность: Запуск новых потоков в разы быстрее конкурентов.

  • Архитектурный иммунитет к ретро‑изменениям: Режим «Гарантированной дельты» на базе CDPOS и PCL4 обеспечивает 100% консистентность данных, даже если данные меняются прошлым числом.

Чистота архитектуры сегодня — это не академическая прихоть или просто красота кода. Это прямой рычаг эффективности бизнеса и, что важнее, фундамент технологического суверенитета. Такая гибкость позволяет крупному ретейлу не просто отвечать на вызовы импортозамещения, но и сохранять лидерство в условиях постоянной трансформации.

А готовы ли вы к построению прагматичной архитектуры на благо бизнес‑ценности?