Создание пользовательской таблицы и ракурса ее ведения
Создание пользовательской таблицы и ракурса ее ведения в системе SAP
Спросите любого консультанта, как часто ему приходится создавать пользовательские таблицы, и ракурсы их ведения. Ну а если не создавать, то как часто приходится писать спецификации на разработку оных? Если он ответит, что не часто, знайте — перед вами лжеконсультант. Хотя... Нет, точно лжеконсультант!
В зависимости от специфики проекта, ключи разработчика могут быть созданы только для «официальных» разработчиков, в то время как функциональные консультанты останутся без таковых. Но бывают и исключения из правил, и тогда функциональный консультант может начинать шалить выполнить определенные задачи без вмешательства разработчика. Об одной из таких задач и пойдет речь в данной заметке, а именно, создание пользовательской таблицы и ракурса ее ведения.
Поставим перед собой задачу: создать пользовательскую таблицу, в которой предполагается хранение пары двузначный идентификатор и текстовое значение. Для удобства работы с этой таблицей необходимо создать ракурс ведения. Поехали.
1. Создание таблицы
В транзакции SE11 определяем наименование новой таблицы и нажимаем на кнопку Создать:
![](https://signatov.com/content/images/2015/09/ztable-11.png)
На следующем экране необходимо определить Класс поставки таблицы, активировать свойство возможности ведения/просмотра данной таблицы, и придумать ее название:
![](https://signatov.com/content/images/2015/09/ztable-2.png)
На вкладке Поля определим поля, которые будут использоваться в таблице:
![](https://signatov.com/content/images/2015/09/ztable-8.png)
Нажмите на кнопку **Технические параметры настройки, **и на открывшемся экране заполните поля по аналогии с тем, что указано на Рисунке №4:
![](https://signatov.com/content/images/2015/09/ztable-4.png)
Затем выберите в меню **Дополнительная информация -> Категория расширений **и отметьте свойство Любое расширение возможно:
![](https://signatov.com/content/images/2015/09/ztable-5.png)
Активируйте таблицу.
2. Создание ракурса ведения
Находясь в режиме обработки созданной таблицы (после выполнения активации) выберите в меню Утилиты -> Генератор ведения таблиц
![](https://signatov.com/content/images/2015/09/ztable-6.png)
Заполните поля, по аналогии с тем, что указано на Рисунке №7, и нажмите на кнопку Создать
![](https://signatov.com/content/images/2015/09/ztable-7.png)
3. Проверка
Запустите транзакцию SM30, введите наименование ракурса, который был создан, и нажмите на кнопку Ведение:
![](https://signatov.com/content/images/2015/09/ztable-10.png)
Введите какие-нибудь данные и сохраните
![](https://signatov.com/content/images/2015/09/ztable-111.png)
Данные сохранены. Ракурс ведения отрабатывает без замечаний. Но тем не менее, обратим внимание на несколько интересных моментов, описанных ниже.
FAQ
Рассмотрим несколько вопросов, часто возникающих при работе с пользовательскими таблицами и ракурсами их ведения.
Вопрос #1. В пользовательской таблице текстовые данные сохраняются в верхнем регистре. Как это исправить?
В примере, который описан в данной заметке (см. Рисунок №9), можно обратить внимание, что текстовое значение для поля Text сохранено в верхнем регистре (хотя текст был набран в нижнем регистре). Все последующие записи, созданные в данной таблице, также будут автоматически сохранены в верхнем регистре. Для того, чтобы это исправить необходимо посмотреть на домен, который определен для этого поля. В нашем случае, это домен ZUSER_VALUES_TEXT, типом данных которого является CHAR(40)
![](https://signatov.com/content/images/2015/09/ztable-12.png)
По стандартной логике, данный тип данных не поддерживает строчный формат для текста. Таким образом, чтобы исправить данную ситуацию, необходимо изменить тип данных на тот, который поддерживает строчный формат. К таким типам относится, например, домен TEXT40:
![](https://signatov.com/content/images/2015/09/ztable-13.png)
Применим данный тип данных для элемента **ZUSER_VALUES_TEXT. **Не забудьте активировать элемент данных, после внесенных изменений.
![](https://signatov.com/content/images/2015/09/ztable-14.png)
Снова зайдите в созданный ранее ракурс, заведите запись в нижнем регистре, и нажмите на сохранить:
![](https://signatov.com/content/images/2015/09/ztable-15.png)
![](https://signatov.com/content/images/2015/09/ztable-16.png)
Вопрос #2. Что нужно сделать, чтобы в момент сохранения данных в пользовательской таблице, в системе формировался запрос на перенос?
Пользовательские таблицы можно разделить на несколько типов:
- Пользовательская таблица ведется напрямую в продуктивной системе. Соответственно, никаких пользовательских запросов в момент сохранения, формироваться не должно;
- Пользовательская таблица ведется только в одной системе (системе разработки), а в системе Q/A и продуктивной — доступна на просмотр. Для данного типа таблиц необходимо формирование транспортного запроса в момент сохранения.
Попробуем добиться того, чтобы в таблице, описанной в данной заметке, в момент сохранения система формировала запрос на перенос.
Для этого необходимо в транзакции SE11 выбрать созданную таблицу, затем выбрать в меню **Утилиты -> Генератор ведения таблиц **(в таблицу необходимо зайти в режиме изменения). В разделе Указания для переноса данных диалога необходимо выбрать пункт Стандартная Программа Записи,затем нажать на кнопку
![](https://signatov.com/content/images/2015/09/ztable-18.png)
В открывшемся окне отметьте пункт Новое создание модулей и нажмите Enter
![](https://signatov.com/content/images/2015/09/ztable-19.png)
В системе начнется генерация пользовательского ракурса. После завершения данной операции, попробуем еще раз зайти в ракурс через транзакцию SM30, внести новую запись, и нажать на кнопку Сохранить, в результате чего система предложит сохранить внесенные изменения в транспортный запрос:
![](https://signatov.com/content/images/2015/09/ztable-20.png)