SAP Управление таблицей ABAP с примерами
⚡ Умное резюме
SAP ABAP Table Control отображает внутреннюю таблицу в виде прокручиваемой сетки на экране, встроенном в Screen. PainterНа этой странице описаны его функции, объявление CONTROLS, обработка курсоров, циклы PBO и PAI, а также атрибуты столбцов.

Что такое элемент управления «Таблица» в SAP АБАП?
Табличные элементы управления и пошаговые циклы — это объекты для отображения экранной таблицы, которые вы добавляете на экран в разделе «Экран». Painter.
С точки зрения программирования табличные элементы управления и пошаговые циклы практически одинаковы. Табличные элементы управления — это просто улучшенные пошаговые циклы, которые отображают данные так же, как таблицы в настольных приложениях.
Особенности управления таблицами ABAP
С помощью элементов управления таблицей пользователь может:
- Прокрутка таблицы по вертикали и горизонтали
- Изменение размера ширины столбца
- Прокрутка внутри поля (когда содержимое поля шире поля)
- Выберите строки или столбцы таблицы
- Переупорядочить последовательность столбцов
- Сохраните текущие настройки дисплея для использования в будущем.
Элементы управления таблицами также предлагают специальные функции форматирования (некоторые автоматические, некоторые дополнительные), которые упрощают просмотр и использование таблиц. Table Control обеспечивает –
- автоматическое изменение размера таблицы (по вертикали и горизонтали), когда пользователь изменяет размеры окна
- линии-разделители между строками и между столбцами (вертикальные и горизонтальные)
- поля заголовков столбцов для всех столбцов
В общем, многие функции, предоставляемые элементом управления «Таблица», обрабатываются локально вашей системой. SAPграфический интерфейс, поэтому вам не нужно программировать их самостоятельно. Единственное заметное исключение из этого правила — вертикальная прокрутка..
Пример (транзакция TZ60)
Приведенная выше транзакция TZ60 показывает конечный результат: сетку с заголовками столбцов, разделительными линиями и столбцом выбора. Отличия от старого цикла шагов суммированы ниже.
Управление таблицей против пошагового контура
Одна из особенностей циклов шагов заключается в том, что строки таблицы могут занимать более одной строки на экране. Строка элемента управления таблицей, с другой стороны, всегда должна находиться в одной строке (хотя прокрутка возможна). В таблице ниже сравниваются эти два элемента экрана.
| Критерии | Управление столом | Пошаговый цикл |
|---|---|---|
| Расположение строк | Одна строка всегда соответствует одной строке экрана. | Одна строка может занимать несколько строк на экране. |
| Обработка столбцов | Пользователь может изменять размер, порядок и скрывать столбцы. | Фиксированная компоновка столбцов, определенная на экране. |
| Прокрутка | Горизонтальная прокрутка осуществляется фронтендом, вертикальная прокрутка запрограммирована в PAI. | Программирование полностью выполнено на языке ABAP. |
| Декларация | ЭЛЕМЕНТЫ УПРАВЛЕНИЯ… ВВЕДИТЕ TABLEVIEW, ИСПОЛЬЗУЯ ЭКРАН | В программе отсутствуют управляющие структуры. |
| Параметры дисплея | Пользователь может сохранить свой собственный макет. | Недоступен |
Поскольку элемент управления таблицей является современным, остальная часть этой страницы посвящена программированию именно этого элемента.
Как создать и запрограммировать элемент управления таблицей
Для работы с табличным элементом управления необходимы экранный элемент, структура управления в программе и цикл как в PBO, так и в PAI. Подразделы ниже следуют этому порядку.
Объявление контроля
Чтобы обрабатывать элементы управления таблицами в программах ABAP, вы должны объявить элемент управления в части объявления программы для каждого элемента управления таблицей, используя следующий оператор:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
где — это имя элемента управления «Таблица» на экране в программе ABAP. Элемент управления позволяет программе ABAP считывать атрибуты элемента управления таблицей и влиять на элемент управления. Здесь — номер экрана, на который загружаются начальные значения таблицы.
Установка и считывание положения курсора
Позицию курсора для элемента управления «Таблица» можно установить следующими способами:
В PBO вы можете установить курсор на определенное поле определенной строки элемента управления таблицей.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
Используя необязательное дополнение OFFSET, вы можете ввести смещение курсора в поле, как описано в разделе «Установка позиции курсора».
В PAI вы можете прочитать текущую позицию курсора.
GET CURSOR FIELD <f> LINE <lin> ...
В дополнение к информации, приведенной в разделе «Определение положения курсора», поле содержит информацию о том, на какой строке элемента управления таблицей в данный момент находится курсор. Вы также можете использовать
GET CURSOR LINE <lin>.
Для определения строки элемента управления таблицей. SY-SUBRC позволяет проверить, находится ли курсор в строке элемента управления таблицей.
Считывание соответствующей строки внутренней таблицы
Для получения соответствующей строки внутренний стол:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
Системная переменная Stepl – содержит текущий индекс строки таблицы в цикле… endloop. Loopc – содержит количество строк, видимых в таблице.
Создание элемента управления на экране Painter
Чтобы создать элемент управления «Таблица»
- Добавьте элемент управления таблицей на свой экран.
- Присвойте имя элементу управления таблицей. В программе ABAP объявите структуру с тем же именем (CONTROLS). type TABLEVIEW USING SCREEN )
- Для создания полей перейдите в функцию «Поля словаря/программы».
- Введите имя структуры, поля которой вам нужны. (Если вы хотите, чтобы он выбрал его из словаря вашей программы, нажмите соответствующую кнопку).
- В списке полей выберите нужные поля и нажмите «ОК».
- Нажмите в области управления столом.
Если вам нужен столбец выбора, установите соответствующий флажок в атрибутах и дайте ему имя. Создайте поле в ABAP-программа.
Кодирование циклов PBO и PAI
В ПБО у вас должно быть заявление
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
В PAI у вас должно быть.
LOOP at <itab>. ENDLOOP.
Передача данных между экраном и внутренней таблицей происходит внутри циклов. При заполнении внутренней таблицы используйте DESCRIBE TABLE. LINEС -lines используется для хранения общего количества строк в элементе управления. Оператор FIELD можно использовать для управления моментом передачи данных.
⚠️ Предупреждение: Цикл PBO должен присваивать элементу управления имя с помощью USING CONTROL. Без этого элемент управления не будет знать, сколько строк существует, и вертикальная прокрутка перестанет работать.
Изменение атрибутов столбцов во время выполнения
Чтобы изменить атрибуты отдельных ячеек, временно измените таблицу SCREEN в PBO. Вы можете изменить атрибуты структуры, созданной оператором CONTROLS.
<cntrl>-fixed_cols etc are the attributes of the control <cntrl>-cols-index etc are the attributes of the columns. <cntrl>-cols-screen-invisible etc are the screen attributes of each column.
💡 Совет: Зациклить Используйте параметр `-cols` в PBO, чтобы скрыть или защитить столбец для определенной роли пользователя, вместо создания второго экрана.

