Tag Archives: SAPGUI

Краткая история SAP GUI

Мы все знаем, что GUI расшифровывается как Graphical User Interface (графический интерфейс пользователя) и основная функция GUI – предоставлять пользователю возможности подключения к информационной системе, отображать текущие процессы, принимать вводимые данные и т.д. Предшественником GUI была командная строка – CLI (Command Line Interfaces, интерфейс командной строки). В качестве примера командной строки мы можем вспомнить первые компьютеры, DOS. Затем была доавлена поддержка мыши и в итоге это все вылилось в разработку GUI.
SAP AG методично совершенствовала графический интерфейс своего флагманского продукта – ERP.
Первым шагом в этом направлении можно считать интерфейс версии R/2, основанный на работе в терминале.

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

Следующим шагом была версия R/2 с типовым пользовательским интерфейсом IBM CUA. CUA предоставляла меню и “кликабельную” панель инструментов с наиболее важными функциональными клавишами.

Такая ранняя версия SAP R/3 как 1.0 обладала следующими возможностями: точка в начале подписи поля, длина поля никак не обозначалась, строка меню, и внизу окна шла строка с наиболее важными функциональными клавишами.

В версии 1.1 добавили: длина поля обозначалась цветом, быстрые пути в меню (для доступа через клавиатуру).

Тогда также было видно и влияние разработок SAP: dynpro (динамические экраны с таблицами и элементами, steploop (обработка dynpro) и технология “списки ABAP” для интерактивных отчетов.

В следующей версии R/3 – 2.0 были впервые представлены следующие функции: поддержка возможностей Windows 3.1 (включая внешний вид) и других поддерживаемых платформ (OSF/Motif, OS/2 и Mac OS), системную панель инструментов со значками, 3D-вид полей ввода, панель инструментов приложения, убрали точки в начале подписей полей.

На смену версии 2.0 пришла 2.1 с такими компонентами, как переключатели, флажки, группировка элементов, кнопки на экране, новые значки, цветные списки. Графический интерфейс пользователя Windows стал ‘стандартным GUI’, стал главным интерфейсом. SAP 2.1 выглядел как настоящее Windows-приложение, несмотря на то, что по-прежнему оставался лишь эмулятором терминала.

В следующем поколении R/3, которое начиналось версией 3.0, были представлены такие элементы, как таблица (технология, основанная на dynpro, пришла на смену steploop), значки на кнопках, панель инструментов приложения и пропорциональный шрифт для полей.

В версии 3.1, которая выглядела в стиле Windows 95, появились плоские кнопки, вкладки (dynpro) и ABAP List Viewer (ALV).

Следующим большим выпуском R/3 была 4.0: чтобы избежать сложной навигации, все больше информации размещается на вкладках – таким образом в транзакциях используется меньшее количество экранов.

В версии 4.5 были использованы компоненты Microsoft ActiveX: разделитель, дерево элементов, текстовые поля, HTML и т.д. ALV стал таблицей (grid control).

В версии 4.6 интерфейс пользователя был обновлен силами дизайнерской студии Frog Design. Когда-то на их веб-сайте существовала страничка, со всеми, впервые использованными элементами в интерефейсе. Нынче она частично доступна лишь в кеше интернета.

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


Во эпоху доткомов существовал сервер ITS, который транслировал экраны SAP в HTML-код и затем отправлял его пользователю в веб-браузер. Разработка ITS началась с mySAP.com Workplace.

На сегодняшний день самые популярные версии SAP GUI для Windows – это 6.2/6.4. (прим. переводчика – уже не совсем). Эти клиенты созрели в универсальные – для доступа к функционалу SAP практически во всех приложениях, как то: mySAP ERP, mySAP Business Suite (mySAP CRM, mySAP SCM и mySAP PLM, …), и компоненты NetWeaver, такие как SAP BW. Функции SAP GUI как у браузера – он получает информацию с сервера SAP так, что, куда, откуда, как и когда, чтобы отобразить эту информацию в своем окне.

SAP GUI делится на три основных ответвления:
SAP GUI для Windows – для платформы в “стиле Windows”, интегрируется с другими приложениями, наподобие Microsoft Office, MS Outlook, основывается на технологиях OLE или ActiveX.
SAP GUI для Java – унифицированный внешний вид SAP для многих платформ.
SAP GUI для HTML – через сервер SAP ITS, элементы управления мапятся к HTML, используя функции HTMLb.

Подытожим данную статью о графических интерфейсах SAP:
Web Dynpro – обеспечивает среду разработки и среды выполнения для создания веб-приложений. Среда разработки Web Dynpro состоит из набора интегрированных инструментов, поддерживающих следующие основные функции: определение диалоговых потоков; проектирование и составление представлений (например, графическое представление страницы); моделирование бизнес-данных и настройка всех этих аспектов.
SAP GUI family (см.выше)
mobile UI – онлайн-технология, в которой мобильное устройство (мобильные телефоны, КПК и т.д.) подключено к веб-серверу на основе таких технологий, как WAP, беспроводные локальные сети, Bluetooth и т.д. Целью является расширение SAP-сервера ITS, предоставляя разработчикам создавать и изменять мобильные приложения.

Original: Martin Maruskin, SAP BW freelancer
via blog.maruskin.eu

Взгляд IT-специалиста на SAP ERP

Сохранено с habrahabr.ru/post/270715 (см. также Холивар – 1С или SAP)

1 В этой статье я не буду рассказывать о плюсах и сильных сторонах этой системы с точки зрения функциональности – пусть этим занимаются маркетологи. Я, как IT-специалист, хочу поделиться с вами своими впечатлениями о реализации этого продукта.

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

Интуитивно-понятный интерфейс

Бывают такие интерфейсы, на которые смотришь и сразу становится понятно, куда нужно нажать, чтобы выполнить то или иное действие. Так вот…это не про SAP. Первый раз, когда я увидел стартовый экран SAP, подумал, что это просто очень-очень старая версия, которую я как-то случайно запустил. Ан нет, это была вполне современная версия. Интерфейс разрабатывали где-то в 90-х, там он и остался до сих пор.

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

2
Стартовый экран SAP ERP

Запускаю я, значит, транзакцию для просмотра списка объектов ремонта, кое-как заполняю селекционный экран, жму «Выполнить» и получаю…дамп (так в SAP называется критическая ошибка, прерывающая выполнение программы без возможности продолжить её работу).

3

Вчитываюсь в этот страшный, совершено непонятный простому пользователю, экран и понимаю, что передал слишком много входных данных.

Это я сейчас знаю, что нельзя передавать слишком много значений в поля селекционного экрана, так как 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» тоже неинформативны. А означает она то, что код налога в табличной части не совпадает с кодом налога в шапке. Часто на профильных форумах можно найти темы «У меня такая-то ошибка. Что она означает?», в которых люди играют в угадайку, пока тот, кто уже наступил на грабли, не даст ответ.

Интерфейс никак не стандартизирован. Где-то меню слева, где-то справа. Где-то кнопки сверху, где-то снизу. Где-то вообще никаких кнопок нет, а все действия выполняются через главное меню. Где-то иконки на кнопках одни, где-то на тех же кнопках другие. Даже горячие клавиши в разных транзакциях для одних и тех же действий отличаются. И это касается не только кнопок, но и табличных частей, вкладок и т.д. – единства нет, везде всё по-разному. Видно, что каждый разработчик лепил интерфейс, как ему вздумается, и никакого контроля за этим не велось. Дизайнеров в команде не было. Похоже, это из-за того, что в момент разработки особо серьезных конкурентов на рынке не наблюдалось, поэтому решили, что нужно развивать функциональность, а интерфейс пользователи «проглотят» любой.

4

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

В последнее время в SAP поняли, что сели попой в лужу с приходом эффективных менеджеров, избалованных айфонами и выбирающих софт по внешнему виду, нужно что-то менять в интерфейсе. Тем более, конкуренты уже давно подтянулись по функциональности. Поэтому SAP пытается делать какие-то шаги в этом направлении и создает взамен старых транзакций новые, которые называются enjoy-транзакции. Появляются какие-то новые темы оформление с кнопками в стиле Android, но пока, как говорится, «сколько на осла бантиков не вешай…».

Рассказывать о прелестях интерфейса можно бесконечно, но давайте пойдём дальше…

Локализация

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

Почему переводили в Magic Gooddy? Потому что не может человек перевести пункт настроек «Country-specific requirements» как «Страновые требования».

5

Почему перепечатывали вручную? Потому что встречаются опечатки и грамматические ошибки. Например, «Щапрос на перенос», «налогооблАжение» и «вниматИльно» явно печатали руками. Встречаются также сокращения слов, чтобы не выходить за рамки допустимой длины текста.

6

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

7

Да-да, я всё ещё рассказываю о том самом SAP ERP, лицензии которого стоят много тысяч долларов и за внедрение которого организации выкладывают сотни миллионов рублей.

Справочная информация, литература

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

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

Обновления и патчи

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

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

Разработка

Разработка в SAP ERP осуществляется на языке ABAP. Для обращения к базе данных используются Open SQL-запросы, которые очень похожи на SQL-запросы. Синтаксис тут обсуждать не буду – субъективная вещь. Он мне не нравится, но привык к нему быстро.

Названия таблиц, полей и переменных, как и названия транзакций, никакого смысла в себе не несут. Глядя на Open SQL-запрос SELECT, невозможно даже близко догадаться, что за данные он выбирает из базы. Нужно либо заранее знать, что хранится в обрабатываемой таблице, либо по ходу действия в эту таблицу лезть через браузер данных и пытаться понять, что в ней.

8

В SAP предусмотрена возможность доработки стандартной функциональности. Править стандартный код, предварительно получив специальный ключ разработчика для стандартного объекта, можно, но крайне нежелательно. Вместо этого разработчику предлагается использовать так называемые USER-EXIT. По сути, это пустые функции с заранее заданными входными и выходными параметрами, разбросанные по стандартному коду. Вызываются эти функции до или после какого-то события. Для правки кода этих функций специального ключа не требуется. Позже к USER-EXIT добавилась еще одна возможность расширять стандартную функциональность – BADI. Это то же самое, что USER-EXIT, только объектно-ориентированное. Зачем оно появилось и почему, раз уж оно появилось, не отказались от USER-EXIT – мне непонятно, только лишней путаницы добавилось.

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

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

9

Заключение

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

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

Keep button – keep results pinned to the screen

The Keep button is available in possible options search pop up windows. You see this pop up window when you click on the Possible Entries button in a field on a criteria selection/definition screen.

Identified by pushpin icon – 

For example, go to MB51. Press the ‘Multiple selection’ button near Material field


Click on the ‘Possible entries’ or hit F4 key to select few materials.

Now, before double clicking on the material, click the Keep button so that it points downwards (i.e. it is pinned). Now double click.

Try to use it in any lists, e.g. ME21N:

When you are finished, click the Keep button to release the list.

NB: if pushpin is not pulled out before exiting the transaction, the screen can become orphaned, causing an error or a window that cannot be closed.