Погляд IT-фахівця на SAP ERP

У цій статті я не буду розповідати про плюси і сильних сторонах цієї системи з погляду функціональності – нехай цим займаються маркетологи. Я, як IT-спеціаліст, хочу поділитися з вами своїми враженнями щодо реалізації цього продукту.

Стаття буде корисна в першу чергу тим, хто планує почати працювати з SAP ERP як IT-спеціаліста (консультанта/програміста), так і в якості кінцевого користувача.

Інтуїтивно-зрозумілий інтерфейс
Бувають такі інтерфейси, на які дивишся і відразу стає зрозуміло, куди треба натиснути, щоб виконати ту чи іншу дію. Так от… це не про SAP. Перший раз, коли я побачив стартовий екран SAP, подумав, що це просто дуже-дуже стара версія, яку я якось випадково запустив. Ан ні, це була цілком сучасна версія. Інтерфейс розробляли десь в 90-х, там він і залишився до цих пір.

Для роботи з системою потрібно запускати так звані транзакції (до транзакцій БД вони відношення не мають). Транзакція SAP – це щось типу «ярлика» для виклику програми, за допомогою якої можна виконати якусь дію в системі (наприклад, переглянути список замовлень на поставку або відредагувати будь-який документ). Імена у транзакцій абсолютно нічого неговорящие (ME21, IW33, MIRO...). Запустити транзакцію можна двома способами: з деревоподібного меню ліворуч або ввівши код транзакції в спеціальне поле. В меню можна заблукати, тому найчастіше транзакції виконуються шляхом введення коду. Тому у кожного користувача є блокнотик, у якому всі ці коди записані.


Стартовий екран SAP ERP

Запускаю я, значить, транзакцію для перегляду списку об'єктів ремонту, абияк заповнюю селекційний екран, тисну «Виконати» і отримую… дамп (так в SAP називається критична помилка, що перериває виконання програми без можливості продовжити її роботу).



Вчитуюсь у цей страшний, скоєно незрозумілий простому користувачеві, екран і розумію, що передав занадто багато вхідних даних.
Це я зараз знаю, що не можна передавати дуже багато значень в поля селекційного екрану, так як SQL-запит перевищує якийсь там допустимий розмір у кілобайтах і з-за цього програма переривається з виключенням DBIF_RSQL_INVALID_RSQL. Причому, немає жодної конкретної цифри, все залежить від довжини передаваних значень, але експериментальним шляхом отримана цифра дорівнює приблизно 1500-1800 значень. Але як все це пояснити користувачеві? Як пояснити, що він має 4 рази запустити транзакцію, якщо йому хочеться отримати відфільтрований по 5000 значень списку. До того ж, в одних транзакції немає ніяких обмежень, а в інших є.
Матюкаюся, перезавантажується транзакцію, заново заповнюю селекційний екран, зменшивши обсяг вхідних даних, і, нарешті, почекавши 15 хвилин, отримую список об'єктів. Виділяю потрібну мені рядок списку і відчайдушно намагаюся знайти кнопку «Редагувати». Ага, розмріявся. Для редагування, виявляється, існує окрема транзакція, в яку я, в більшості випадків, не можу потрапити з транзакції перегляду списку об'єктів. Мені треба скопіювати системний номер потрібного мені об'єкта зі списку, запустити окреме вікно SAP (яке називається режимом), відкрити там транзакцію для редагування об'єкта і вставити туди скопійований номер. Таких режимів я можу відкрити за замовчуванням не більше шести. Якщо всі 6 вже відкриті, а мені треба відредагувати об'єкт, то доведеться якимось режимом пожертвувати. Для перегляду, створення і навіть видалення об'єкта теж існують окремі транзакції.

Ще ситуація. Відкриваю я транзакцію «MIRO – створення вхідного рахунку-фактури», довго заповнюю шапку, вказую системний номер документа входить поставки, на підставі якого автоматично заповнюється позиціями таблична частина рахунку-фактури. З тисячі позицій мені потрібно було 100 видалити. Я знаходжу ці позиції, довго виділяю їх і тисну кнопку «Видалити». Як гадаєте, що має статися після виділення позицій і натискання кнопки «Видалити»? От я теж так подумав. А розробники SAP думали якось по-іншому – віддалилося 900 невиділених позицій. «Гаразд», — подумав я, — «зараз натисну CTRL+Z і все поверну назад». Ну, ви вже зрозуміли, так? Відмінити цю дію неможливо, тому довелося перезапускати транзакцію і заново забивати всі дані.

Це я вже потім прочитав текст подсказу до кнопки «Видалити», де було сказано, що втечуть невиділені позиції. Така поведінка кнопки тільки в цій транзакції. В інших транзакції кнопка «Видалити» видаляє виділені позиції.
Повідомлення про помилки не несуть взагалі ніякого смислового навантаження. Ось що може означати помилка «Код податку V0 ще існує»? Спочатку я подумав, що це якийсь кривий переклад, але англійський варіант «Tax code V0 also exist» і німецький «Es existiert noch das Steuerkennzeichen V0» теж неінформативні. А означає вона те, що код податку в табличній частині не збігається з кодом податку в шапці. Часто на профільних форумах можна знайти теми «У мене така-то помилка. Що вона означає?», в яких люди грають в угадайку, поки той, хто вже наступив на граблі, не дасть відповідь.

Інтерфейс ніяк не стандартизований. Десь меню зліва, десь праворуч. Десь кнопки зверху, десь знизу. Де-то взагалі ніяких кнопок немає, а всі дії виконуються через головне меню. Десь іконки на кнопках одні, десь на тих же кнопках інші. Навіть гарячі клавіші в різних транзакції для одних і тих же дій відрізняються. І це стосується не тільки кнопок, але і табличних частин, вкладок і т. д. – немає єдності, скрізь усе по-різному. Видно, що кожен розробник ліпив інтерфейс, як йому заманеться, і ніякого контролю за цим не велося. Дизайнерів в команді не було. Схоже, це з-за того, що в момент розробки особливо серйозних конкурентів на ринку не спостерігалося, тому вирішили, що потрібно розвивати функціональність, а інтерфейс користувачі «проковтнуть» будь.



З цим інтерфейсом можна навчитися працювати двома способами: або хто-то довго буде вас навчати цьому, розповідаючи тонкощі кожної транзакції і показуючи підводні камені, або самостійно, не перестаючи наступати на нескінченні граблі. Найчастіше навчання проходить по комбінованому сценарієм: консультанти пишуть операційні інструкції з мінімально необхідними для роботи відомостями, а далі користувач сам блукає в цьому дрімучому лісі, постійно забезпечуючи консультантів зарплатою звертаючись до консультантів за допомогою.

Останнім часом в SAP зрозуміли, що сіли попою в калюжу з приходом ефективних менеджерів, розпещених айфонами і вибирають софт за зовнішнім виглядом, потрібно щось змінювати в інтерфейсі. Тим більше, що конкуренти вже давно підтяглися по функціональності. Тому SAP намагається робити якісь кроки в цьому напрямку і створює замість старих транзакцій нові, які називаються enjoy-транзакції. З'являються якісь нові теми оформлення з кнопками в стилі Android, але поки, як кажуть, «скільки на осла бантиків не вішай...».

Розповідати про принади інтерфейсу можна нескінченно, але давайте підемо далі…

Локалізація
Складається враження, що на російську мову інтерфейс переводився наступним чином. Спочатку в якому-небудь Magic Gooddy перевели всі фрази з німецької на англійську, потім там же з англійської на російську. Потім розподілили перекладені фрази між людьми і вони почали їх вручну передруковувати SAP ERP, іноді вносячи правки. Причому, частина людей або взагалі російська мова не розуміли, або вони були настільки ледачі, що ніяких змін не вносили.

Чому переводили в Magic Gooddy? Тому що не може людина перевести пункт налаштувань «Country-specific requirements» як «Країнові вимоги».



Чому передруковували вручну? Тому що зустрічаються помилки і граматичні помилки. Наприклад, «Оапрос на перенесення», «налогооблАження» і «тим уважне прочитанняІльно» явно друкували руками. Зустрічаються також скорочення слів, щоб не виходити за рамки допустимої довжини тексту.



Чому люди не розуміли російську мову? Тому що навіть при передруці російськомовний чоловік повинен був засумніватися, побачивши фразу «Пушномолочная свиня-несучка» — так до певного часу називалася програма RAIMEWMS (зараз назву вже виправили). В оригіналі вона називається «Eierlegende Wollmilchsau», що перекладається як «Майстер на всі руки», але розумний Magic Gooddy порахував, що Wollmilchsau – це 3 окремих слова (Woll, milch, sau) і переклав фразу «Eierlegende Woll milch sau» як «Яйце укладання вовни молока свиноматки». Залишається тільки гадати, як це потім перетворилося в «Пушномолочная свиня-несучка».



Так-так, я все ще розповідаю про те самому SAP ERP, ліцензії якого стоять багато тисяч доларів і за впровадження якого організації викладають сотні мільйонів рублів.

Довідкова інформація, література
У відкритому доступі немає практично жодної офіційної довідкової інформації. Немає ні посібник користувача, ні опису програмних модулів, ні специфікацій. Хочеш навчитися користуватися SAP – ласкаво просимо на малоефективні курси (3-5 днів) вартістю 1500-2000$ кожен, де тобі розкажуть, яку кнопку натиснути. Роздатковий матеріал на цих курсах найчастіше англійською мовою. Зрозуміти що-то тільки з роздаткового матеріалу можна, але дуже поверхнево. Курсів багато (і для користувачів, і для консультантів, і для програмістів), але навіть вони не дають всебічну інформацію. SAP не соромиться «впарювати» на курсах застарілий матеріал, цінність якого щодо нових версій SAP ERP дорівнює нулю.

Большая частина знань консультантів і розробників або передається у спадок від старшого покоління до молодшого, або виходить методом «тику». Якщо пощастить, то можна щось знайти на профільних форумах та у приватних блогах, якщо немає – колупати сам, відладчик тобі в допомогу.

Оновлення і патчі
Якщо консультант знаходить якусь помилку у функціоналі SAP (а вони зустрічаються у величезних кількостях), то першим ділом він намагається знайти підходящу SAP Note (ноту) для її виправлення. Немає конкретного визначення, що таке нота. Нота – це або патч, що виправляє помилку в стандартному функціоналі, інструкція, яку користувач повинен виконати в системі, або опис налаштувань, або доробка функціональності під змінене законодавство, або просто пояснення деяких моментів.

Якщо знайти потрібну ноту праці не становить, то установка може виявитися цілком нетривіальним завданням. Ноти можуть бути залежні один від одного і перед установкою однієї ноти потрібно встановити з десяток інших нот, які теж мають залежності. В процесі установки нот може знадобитися виконати які-небудь дії вручну. Наприклад, принести яйце дракона з печери на вершині гори. Утрирую, звичайно, але часом встановити ноти, виправляють помилки, важче, ніж самому ці помилки виправити. Нещодавно на Гиктаймс стаття, в якій говорилося про те, що люди через чат Arch Linux встановлювали. Так от, деякі ноти (особливо пов'язані із зміною функціональності під законодавство) встановлюються так само: люди на форумі колективно намагаються пройти квест (так, а тепер давайте натиснемо всі разом на рахунок три ось цю кнопку...). Причому, ноти встановлюються в декількох системах з однаковою версією і скрізь виникають різні помилки.

Розробка
Розробка в SAP ERP здійснюється мовою ABAP. Для звернення до бази даних використовуються Open SQL-запити, які дуже схожі на SQL-запити. Синтаксис тут обговорювати не буду – суб'єктивна річ. Він мені не подобається, але звик до нього швидко.

Назви таблиць, полів і змінних, як і назви транзакцій, ніякого сенсу в собі не несуть. Дивлячись на Open SQL-запит SELECT, неможливо навіть близько здогадатися, що за дані він вибирає з бази. Потрібно заздалегідь знати, що зберігається в оброблюваній таблиці, або по ходу дії в цю таблицю лізти через браузер даних і намагатися зрозуміти, що в ній.



У SAP передбачена можливість доопрацювання стандартної функціональності. Правити стандартний код, попередньо отримавши спеціальний ключ розробника для стандартного об'єкта, можна, але вкрай небажано. Замість цього розробнику пропонується використовувати так звані USER-EXIT. По суті, це пусті функції з наперед заданими вхідними та вихідними параметрами, розкидані по стандартним кодом. Ці функції викликаються до або після якоїсь події. Для редагування коду цих функцій спеціального ключа не потрібно. Пізніше до USER-EXIT додалася ще одна можливість розширювати стандартну функціональність – BADI. Це те ж саме, що USER-EXIT, тільки об'єктно-орієнтоване. Навіщо воно з'явилося і чому, раз воно з'явилося, не відмовилися від USER-EXIT – мені незрозуміло, тільки зайвої плутанини додалося.

Так як ніякої офіційної документації по USER-EXIT і BADI немає, то, щоб знайти відповідне місце, куди можна дописати свій код, потрібно було або сидіти в налагоджувач в пошуках цих порожніх функцій, або вивчати форуми в надії, що хтось вже стикався з такою необхідністю. Часто буває, що для однієї і тієї ж задачі підходять різні USER-EXIT і BADI. З-за цього трапляється так, що на одному проекті різні розробники/консультанти вибирають різні USER-EXIT/BADI, і код, який мав би логічно бути в одному місці, розкиданий по декількох місцях.

Хочеться ще згадати про відладчик. Їх два: старий і новий. У старому налагоджувач є функції, яких немає в новому, а в новому є функції, яких немає в старому. Наприклад, у старому налагоджувач є функція перегляду ABAP Memory і SAP Memory, у новому – ні. Перемикатися між старим і новим можна прямо в процесі налагодження. Хоча слово «новий» тут не дуже доречне, так як він існує вже майже 10 років. Чому за цей час його не допрацювали і не позбулися старого – загадка.



Висновок
Складається враження, що цей продукт робили якісь інші німці: не ті, що роблять BMW, Mercedes і AUDI. Процес розробки якийсь абсолютно безконтрольний: в коді безліч помилок, які можуть роками не виправлятися; кожен розробник називає змінні, як йому заманеться; оновлення криві; нові інструменти з'являються недопрацьованими і такими залишаються, поки не стануть старими;… продовжувати можна довго.

Тим не менш, я не хочу, щоб моя стаття виглядала як обливання SAP брудом. У будь-якого продукту є плюси і мінуси. На кожен мій абзац можна написати такий же про плюси SAP ERP і я погоджуся з ними. Але мені хочеться, щоб люди, що вирішили пов'язати свою роботу з SAP ERP, знали трішки більше, ніж «SAP ERP – це така крута німецька програма, яка коштує багато грошей».

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.