Что такое ракурс в sap
Создание пользовательской таблицы и ракурса ее ведения
Создание пользовательской таблицы и ракурса ее ведения в системе SAP
Sergey Ignatov
Спросите любого консультанта, как часто ему приходится создавать пользовательские таблицы, и ракурсы их ведения. Ну а если не создавать, то как часто приходится писать спецификации на разработку оных? Если он ответит, что не часто, знайте — перед вами лжеконсультант. Хотя. Нет, точно лжеконсультант!
В зависимости от специфики проекта, ключи разработчика могут быть созданы только для «официальных» разработчиков, в то время как функциональные консультанты останутся без таковых. Но бывают и исключения из правил, и тогда функциональный консультант может начинать шалить выполнить определенные задачи без вмешательства разработчика. Об одной из таких задач и пойдет речь в данной заметке, а именно, создание пользовательской таблицы и ракурса ее ведения.
Поставим перед собой задачу: создать пользовательскую таблицу, в которой предполагается хранение пары двузначный идентификатор и текстовое значение. Для удобства работы с этой таблицей необходимо создать ракурс ведения. Поехали.
1. Создание таблицы
В транзакции SE11 определяем наименование новой таблицы и нажимаем на кнопку Создать:
На следующем экране необходимо определить Класс поставки таблицы, активировать свойство возможности ведения/просмотра данной таблицы, и придумать ее название:
На вкладке Поля определим поля, которые будут использоваться в таблице:
Нажмите на кнопку **Технические параметры настройки, **и на открывшемся экране заполните поля по аналогии с тем, что указано на Рисунке №4:
2. Создание ракурса ведения
Заполните поля, по аналогии с тем, что указано на Рисунке №7, и нажмите на кнопку Создать
3. Проверка
Запустите транзакцию SM30, введите наименование ракурса, который был создан, и нажмите на кнопку Ведение:
Введите какие-нибудь данные и сохраните
Данные сохранены. Ракурс ведения отрабатывает без замечаний. Но тем не менее, обратим внимание на несколько интересных моментов, описанных ниже.
Рассмотрим несколько вопросов, часто возникающих при работе с пользовательскими таблицами и ракурсами их ведения.
Вопрос #1. В пользовательской таблице текстовые данные сохраняются в верхнем регистре. Как это исправить?
В примере, который описан в данной заметке (см. Рисунок №9), можно обратить внимание, что текстовое значение для поля Text сохранено в верхнем регистре (хотя текст был набран в нижнем регистре). Все последующие записи, созданные в данной таблице, также будут автоматически сохранены в верхнем регистре. Для того, чтобы это исправить необходимо посмотреть на домен, который определен для этого поля. В нашем случае, это домен ZUSER_VALUES_TEXT, типом данных которого является CHAR(40)
По стандартной логике, данный тип данных не поддерживает строчный формат для текста. Таким образом, чтобы исправить данную ситуацию, необходимо изменить тип данных на тот, который поддерживает строчный формат. К таким типам относится, например, домен TEXT40:
Применим данный тип данных для элемента **ZUSER_VALUES_TEXT. **Не забудьте активировать элемент данных, после внесенных изменений.
Снова зайдите в созданный ранее ракурс, заведите запись в нижнем регистре, и нажмите на сохранить:
Вопрос #2. Что нужно сделать, чтобы в момент сохранения данных в пользовательской таблице, в системе формировался запрос на перенос?
Пользовательские таблицы можно разделить на несколько типов:
В открывшемся окне отметьте пункт Новое создание модулей и нажмите Enter
В системе начнется генерация пользовательского ракурса. После завершения данной операции, попробуем еще раз зайти в ракурс через транзакцию SM30, внести новую запись, и нажать на кнопку Сохранить, в результате чего система предложит сохранить внесенные изменения в транспортный запрос:
Добавление ракурса в PPOME
Что такое ракурс в PPOME? Это набор тех объектов и путей анализа, который будет показываться в правой верхней части транзакции. Например, ракурс – организационная структура – в нем не нужны штатные долж-ности и лица, а только организационные единицы. Для этого в стандартной системе есть отдельный ракурс, в котором прописано, что выводить только оргединицы. Если мы делаем свои объекты, то было бы логично для них сделать свои ракурсы, чтобы можно было удобно работать.
Добавление ракурса в PPOME
В настройке заходим в Менедмжент персонала – Организационный менеджмент – Архитектура иерархии – Интеграция нового типа объекта – Просмотр типа объекта в области обзора структуры. Дальше начнем сверху вниз. Слева выбираем «Определение сервис». Здесь мы должны определить свой, так называемый сервис, который будет определять какие объекты должны быть включены в просмотр иерархии в правом окне. Создаем новую запись, пишем ей любое имя. Например ZSRV_FUNC (Функциональная структура), ключ объекта ставим GOWD (внятного описания что это и как с этим бороться я так и не нашел). В атрибутах нашего сервиса прописываем все типы объектов, которые должны выводиться в окне структуры. Поле «Выбор» определяет, можно ли будет одновременно выбирать несколько объектов. Путь анализа говорит, какие объекты и как считывать. Техническая глубина указывает на то, сколько уровней вложенности нужно выводить. Я оставляю пусто – выводить все. Группа столбцов – какие столбцы для каждого объекта выводить. Для начала можно оставить по умолчанию — NF_GEN_OV. Тип заголовков – ORGSTRUC.
Сервис создали, у меня это,
ZSRV_FUNC 04 M Многократный выбор Z04-O
ZSRV_FUNC 05 M Многократный выбор Z05-04-O
ZSRV_FUNC O M Многократный выбор ZO-04
, где 04 – мой объект административного уровня (Отдел, Группа, Компания, Участок), а 05 – группа админист-ративных уровней (один объект, который объединяет под собой все административные уровни, нужен ис-ключительно для удобства).
Теперь нужно прикрепить этот сервис к нашему или стандартному сценарию PPOME, чтобы он там отражался в ракурсе. Выбираем «Определение сценарий (архитектура иерархии)». Если мы добавляем ракурс в стандарт, то выбираем сценарий OME0, в противном случае – наш сценарий. Выбираем «Определение Запрос». В переводе на русский это наш ракурс. Создаем новую запись, пишем в названии как ракурс должен называться в PPOME. И теперь еще одна недокументированная фишка сапа – два сервиса. В сервис 1 мы пишем тот сервис, который мы создали ранее, в сервис 2 пишем «DETAIL (GENERAL)». Почему так – понятия не имею. Но почему-то работает. Например:
ZOME0 ZQUERY_FUNC Административная структура ZSRV_FUNC DETAIL (GENERAL)
Для запроса нужно прописать свои внутренние запросы для каждого типа объекта. Это означает, что система при двойном нажатии на объект будет вызывать наш сервис. Для каждого объекта, который есть у нас в ра-курсе, прописываем запрос:
ZOME0 04 ZQUERY_FUNC
ZOME0 05 ZQUERY_FUNC
ZOME0 O ZQUERY_FUNC
Вот и все. После этих телодвижений в PPOME для наших объектов 04, 05, O появится свой ракурс ведения «Административная структура».