До нас звернувся клієнт Miniso Україна з потребою по розробці та впровадженню Підсистеми обміну даними між Корпоративною Інформаційною Системою Замовника на базі програмного продукту 1С:Підприємство (надалі КІС) та програмним продуктом SAP (надалі SAP)
В ході проекту було успішно реалізовано обмін даними між системами. Короткий опис проведених робіт наведено нижче:
Адміністрування інтеграційної платформи
В рамках підсистеми «Сервіс» для управління та налаштування інтеграційної платформи був реалізований відповідний функціонал в системі Управління торгівлі, а саме додано ролі.
Логування.
Для аналізу зміни даних та операції вивантаження даних в інтеграційну платформу додано ряд сервісних підсистем для логування.
Кожний с записів SAP (елемент відповідного довідника) має відповідний запис Log в якому фіксуються всі операції та помилки. Запис Log можна відкрити як безпосередньо с запису SAP так і через загальний інтерфейс.
Сервісні команди.
Для можливості ручного виконання дій с записами SAP розроблені сервісні команди. Перелік сервісних команд залежить від типу запису SAP – для записів Майстер дати це один перелік команд, для вхідних записів – другий перелік, для вихідних записів – третій перелік команд і так далі.
Майстер дата (Master Data)
Підсистема «Майстер дата» обробляє вхідні дані з SAP і перетворює її в нормативно-довідкову інформацію в УТ. Автоматично створюються і оновлюються тільки ті дані, які пов’язані з товарами, цінами та продуктовими категоріями. Інша нормативно-довідкова інформація така як склади, дані покупців та постачальників синхронізується з існуючими об’єктами вручну адміністратором системи.
Синхронізація номенклатури (SAP1, SAP5).
До початку роботи в SAP вся номенклатура в УТ була згрупована по основних групах номенклатури. Крім того, в додаткових реквізитах номенклатури зберігалася розгорнута класифікація та додаткові реквізити. Після запуску інтеграції УТ з SAP управління категоріями та групами номенклатури було передано в SAP. SAP вивантажує дані через довідник SAP5, після чого УТ обробляє дані і створює відповідні групи номенклатури, також створюються нові значення в додаткових реквізитах. Таким чином, значення категорій створюються автоматично.
Синхронізація роздрібних цін (SAP8).
При завантажені даних про зміни цін номенклатури у записі SAP, система вираховує за який день були внесені зміни і виконує оновлення даних в регістрі SAP8: Product price(a) за необхідний день. Після чого, змінюється статус з «Processed» на «Updated».
На основі завантажених даних в SAP8: Product price(a) виконується регламентне завдання «SAP: Обробити ціни (а)», яке обробляє усі записи SAP8, вибирає ті записи в яких оновилися дані по цінам та виконує встановлення цін номенклатури. Вся процедура встановлення і оновлення цін номенклатури виконується автоматично у відповідності з розкладом регламентного завдання «SAP: Обробити ціни (а)».
Синхронізація складів та кас ККМ (SAP7).
Після створення нового складу в УТ необхідно виконати синхронізацію. Для цього потрібно вказати (вибрати) відповідний реквізит в довіднику «Склади» з довідника SAP7.
Після того як адміністратор системи зазначить цей реквізит в довіднику «Склад», система автоматично заповнить необхідні додаткові реквізити, такі як вид номенклатури ( обладнання, товари), SAP ІD складу, тип магазину.
Синхронізація каси ККМ виконуються в ручному режимі при первинному створенні елемента довідника. Адміністратору системи необхідно вручну заповнити поле SAP id. Значення формується як SAP id магазину + латинська літера : a/b/c
Синхронізація постачальників (SAP6)
Для синхронізації постачальників необхідно в регістрі відомостей «Параметри заповнення документів постачальників» створити запис та вказати наступні дані:
- «Період» - період з якого діє запис;
- «Запис сап» - вказати посилання SAP;
- Партнера та контрагента в системі УТ;
- Договір, який буде підставлятись в документи замовлень, що будуть завантажуватися з SAP.
Синхронізація покупців (SAP27).
Для синхронізації покупців необхідно заповнити регістр «Параметри заповнення документів покупців» та вказати в ньому посилання на запис SAP27.
Синхронізація франчайзі та комісіонерів.
В системі УТ операції відвантаження франчайзі та комісіонерам виглядають так само, як відвантаження стороннім покупцям, тобто необхідно вказати контрагента та договір. Але в системі SAP відсутні такі дані, які зв’язують магазин, контрагента і договір. Для опису схеми відвантаження на магазини франчайзі та комісіонерів в УТ розроблено регістр відомостей «Параметри заповнення документів Франчайзі». В залежності від типу договору ( комісіонер чи франчайзі) система буде створювати документи на реалізацію з відповідним видом операції.
Продажі (Sales Reports)
Підсистема «Продажі» виконує передачу даних про роздрібні продажі та підсумкові звіти про роздрібні продажі в SAP.
Підсистема використовує: таблиці SAP14 (інформація про чеки), SAP15 та SAP16 (підсумкові звіти за день).
Також підсистема використовує регламенті завдання та спеціалізований план обміну.
Для генерації даних про роздрібні продажі у форматі записів SAP14 використовуються чеки (а не звіти про роздрібні продажі як в УТ). Для цього розроблено спеціалізований обмін даними між Роздріб та УТ, який перевантажує чеки з Роздріб в УТ.
Повторна передача даних таблиці SAP14 в SAP недопустима і викликає дублювання даних про продажі в SAP. Повторна передача даних підсумкових звітів (SAP15, SAP16) є нормальним функціонуванням системи передачі даних.
Процедура передачі даних про роздрібні продажі в SAP відбувається в декілька етапів:
Етап1: Перенесення чеків з Роздрібу в УТ. Виконується автоматично по плану обміну з періодичністю, яка налаштована в регламентному завданні.
Етап2: Створення записів SAP14. Відбувається автоматично при завантаженні чека в УТ по плану обміну.
Етап3: Створення записів підсумкових звітів SAP15 та SAP16. Створюються (оновлюються) автоматично при запису елемента SAP14. При створенні записів SAP15 та SAP16 по відповідному бізнес дню у записів знімається прапорець «Зміна закрита».
Етап4: Автоматичне вивантаження SAP14 у відповідності до налаштування регламентного завдання.
Етап5: Автоматичне заповнення даних в таблицях SAP15 та SAP16 після завершення робочого дня та автоматичне вивантаження в SAP у відповідності до налаштування регламентного завдання.
Зарплата (HR+Salary)
Підсистема «Зарплата» виконує передачу даних про працівників та нараховану заробітну плату.
В підсистемі задіяні об’єкти конфігурацій УТ: довідники SAP28 (інформація про працівників) та SAP29 (дані про нарахування заробітної платні); план обмін УТ- Зарплата і управління персоналом (ЗУП) та відповідні регламенті завдання.
Формування даних таблиць SAP28, SAP29 виконується в базі ЗУП та переноситься в базу УТ за допомогою обміну даними, який був розроблений в рамках проекту інтеграції. Для формування таблиць SAP та перенесення їх в УТ в базі ЗУП виконана розробка необхідних об’єктів інтеграції.
Процедура передачі даних про працівників та нараховану заробітну плату в SAP відбувається в декілька етапів:
Етап1: Формування таблиць SAP28 та SAP29 в базі ЗУП. Формування виконується в автоматичному режимі у відповідності ро розкладу регламентного завдання (зараз це один раз в кінці дня). Підставою для формування даних таблиці SAP28 є зміни в регістрі відомостей «Робітники організацій». Підставою для заповнення даних таблиці SAP29 є дані проведених документів «ВІдображення зарплати в регл. обліку», «Платіжні доручення», «Нарахування резервів відпусток»
Етап2: Перенесення даних довідників SAP28 та SAP29 з ЗУП в УТ. Виконується автоматично по плану обміну з періодичністю, яка налаштована в регламентному завданні. Наразі щодня ввечері.
Етап3: Вивантаження даних таблиць SAP28 та SAP29 в систему SAP. Виконується автоматично у відповідності до розкладу регламентного завдання.
Бізнес процеси (Business Workflow)
Підсистема складається з двох основних розділів «Вхідні документи» та «Вихідні документи» та додаткового розділу «Онлайн запити».
Підсистема також використовує ряд регламентних завдань для автоматичної обробки отриманих даних з SAP та вивантаження даних в SAP.
Згідно з інтеграційним планом бізнес-процеси, що відображають рух товарів ініціюються в SAP та передаються в УТ інтерфейсами ID10 (Delivery Note), ID12(Inbound delivery note), ID18 (Reservation), ID21(Stock transfer order).
Залежно від бізнес-процесу вхідні записи SAP однозначно визначаються даними вхідного запису та конвертуються в відповідні документи УТ.
Для кожного запису, отриманого з SAP формується один документ УТ, що починає бізнес-процес. Підтверджуючі документи УТ, які свідчать про те, що операція в УТ успішно відбулась або не відбулась, для кожного виду бізнес-процесу різні та відповідають реальним процесам прийомки/відвантаження. Ці документи (в певному стані та статусі) формують вихідні записи для відправлення в SAP.
Якщо в бізнес-процесі беруть участь документи що створюються в базі Роздріб, то підтверджуючих (вихідних) документів, а відповідно і записів SAP, буде два – один з яких створено в УТ, а другий створений в Роздіб та переданий в УТ.
Треба розуміти, що документообіг SAP в значній мірі відрізняється від документообігу УТ, тому не всі документи, що створюються в УТ передаються в SAP. З описаного вище прикладу про приймання товарів на склад, документ «Поступлення товарів» не передається в SAP.
Вхідні документи (Incoming Docs)
Для отримання вхідних записів SAP в програмі УТ розроблено HTTP-cервіси (асинхронні). За допомогою яких система SAP виконує підключення для системи УТ та створює або оновлює відповідні вхідні записи. Інформація приходить в УТ в тілі http-запиту, що містить дані у вигляді тексту - назви полів та їх значень. Всі отримані вхідні дані завжди записуються в базу даних УТ незважаючи на те, чи виконана їх обробка, чи ні. Всі зміни вхідних даних реєструються в підсистемі логування.
Конвертація вхідних записів SAP в документи УТ відбувається в повністю автоматичному режимі - документи створюються, заповнюються і проводяться. Користувачі програми УТ працюють з вхідними документами без редагування переліку номенклатури, кількості, сум, складів, партнерів. Повне обмеження на редагування вхідних документів не застосовується через специфіку взаємодії УТ та SAP.
Якщо майстер-даних для конвертації вхідного запису недостатньо при обробці вхідного запису, буде зроблений запис про помилку у Лог вхідного запису і документ УТ створено не буде. Наприклад, якщо запис SAP містить артикул номенклатури, яка ще не отримана з SAP або з якихось причин не оброблена, то статус помилки такого запису є некритичним для обробки. Отже, якщо тільки номенклатура по цьому артикулу буде успішно оброблена, в наступному регламентному обході буде оброблений і запис SAP, який вона затримувала.
Загалом обробку вхідної інформація від SAP можна розділити на декілька етапів.
Етап1 Обробка http-запиту та створення запису SAP. При запису дані не аналізуються та не перевіряються, додатково формуються службові поля, виставляються статуси для позначення готовності для обробки, визначається вид бізнес-сценарія.
Етап2 Обробка записів SAP в статусах «Created» та «Updated» та створення документів УТ у відповідності з видами бізнес-сценаріїв.
Користувач УТ за посиланнями на вхідні записи SAP може переглянути та проаналізувати лог кожного запису, за потреби примусово викликати обробку запису повторно (див. Сервісні команди).
В формі запису користувач може переглянути стан обробки запису та послідовність пов’язаних записів SAP та документів УТ.
Вихідні документи (Outcoming Docs)
Сформовані документи УТ (на основі записів SAP) відображають вхідні точки бізнес-процесів руху товарів та обладнання. Підпорядковані їм документи УТ, що відображають відвантаження та прийняття на складах товару, безпосередньо впливають на значення залишків на складах УТ, і мають бути відображені в SAP, для цього розроблені механізми формування пакетів даних, що відправляються в SAP.
Вихідна таблиця формується на основі документу УТ, коли той перебуває в певному «стані», тобто відповідає сукупності умов. Наприклад, для документу «Реалізація товарів і послуг» виконуються наступні перевірки при записі:
- Дата документу більша дати початку обміну
- Відповідність статусу документу («Реалізовано»)
- Склад входить в підсистему інтеграції (має заповнений реквізит СапІд)
- Реалізація відбувається по головному складу товарів або обладнання
- Документ проведений
- Хоча б один елемент номенклатури з Товарів входить в підсистему інтеграції (має заповнений реквізит СапІд)
Якщо для документу будуть виконані всі ці перевірки, на його основі сформується вихідна таблиця SAP з статусом «Created» і буде відправлена черговим регламентним завданням.
Після відправлення в SAP документ УТ є доступним для редагування, обмежень для користувачів немає, але реєстрації запису SAP повторно не відбувається, він не оновлюється, натомість зміни вважаються помилковими і всі пов’язані записи SAP отримають статус помилки «Документ УТ змінений після відправлення». Таку ситуацію можна виправити лише відміною введених змін, тобто приведенням документу до стану в якому сформувався вихідний запис на момент першого відправлення.
Загалом відправку даних SAP можна розділити на декілька етапів.
Етап1 Створення та проведення документу системі Роздріб або УТ у відповідному кінцевому статусі. Перенесення за допомогою типового обміну документа з системи Роздріб в систему УТ.
Етап2 Генерування при запису документа запису SAP. Користувач з відповідними правами може самостійно виконати генерацію даних черес сервісні команди.
Етап3 Відправка запиту SAP в програму SAP. Відправка відбувається автоматично у відповідності до розкладу регламентного завдання.
Запити до SAP для всіх процесів є асинхронними, тобто запит з однієї сторони не очікує відповіді одразу від іншої, відправлення даних не пов’язане з отриманням. Відправлення даних з обох сторін налаштовано окремо, з власною частотою і регламентними завданнями.
Онлайн запити (Online Request)
Для певного переліку операцій запит до SAP на отримання даних може бути зроблений користувачами в онлайн-режимі – відповідь приходить одразу та результат зберігається в таблицях SAP30 та SAP31:
Таблиця SAP30 зберігає результати запитів відміни таблиці SAP11 та викликається з команд списку таблиці або форми елемента SAP11. При виклику запит виконує відміну раніше відправленої таблиці Goods issue, що в УТ відповідає процесам відправки товару з головного складу.
Це може бути потрібним в двох випадках:
- Потрібно відредагувати документ відправки (відвантажили іншу кількість, ніж провели в документі); Якщо запит виконався успішно, таблиця SAP11 сформується ще раз і буде відправлена в SAP з наступним черговим відправленням даних.
- Потрібно відмінити замовлення разом з документом переміщення. В такому випадку слід послідовно виконати відміну таблиці SAP11 онлайн-запитом, та помітити на вилучення документ замовлення УТ.
Таблиця SAP31 зберігає результати онлайн-запитів до SAP, що повертають результати балансу клієнта по конкретному замовленню та дозвіл його відвантаження. Викликається з меню документу УТ, сформованого на основі запису SAP10 (Delivery Note)