SAP Управление таблицей ABAP с примерами

⚡ Умное резюме

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

  • 🖥️ Основное определение: Элемент управления «Таблица» — это усовершенствованный цикл пошагового выполнения, который отображает данные таблицы, придавая ей внешний вид и функциональность сетки, как в настольных приложениях.
  • 🧰 Встроенные функции: Прокрутка, изменение размера столбцов, переупорядочивание столбцов, выделение строк и сохранение настроек отображения обрабатываются модулем. SAPграфический интерфейс пользователя (gui frontend).
  • 📜 Линейка с одной линией: Строка цикла шагов может занимать несколько строк экрана, тогда как строка элементов управления таблицы всегда должна помещаться на одной строке.
  • ⌨️ Декларация: КОНТРОЛЬ TYPE TABLEVIEW USING SCREEN связывает элемент экрана с программой ABAP.
  • 🎯 Обработка курсора: Команда SET CURSOR устанавливает курсор в точке PBO, а команда GET CURSOR считывает поле и строку в точке PAI.
  • 🔁 Обмен данными: Цикл LOOP AT … USING CONTROL выполняется в PBO, а обычный цикл LOOP AT выполняется в PAI, при этом данные перемещаются между экраном и внутренней таблицей внутри этих циклов.
  • 🎨 Динамические атрибуты: Стол SCREEN и -cols structure изменяет видимость и форматирование столбцов во время выполнения.

SAP Управление таблицей ABAP

Что такое элемент управления «Таблица» в SAP АБАП?

Табличные элементы управления и пошаговые циклы — это объекты для отображения экранной таблицы, которые вы добавляете на экран в разделе «Экран». Painter.

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

Особенности управления таблицами ABAP

С помощью элементов управления таблицей пользователь может:

  • Прокрутка таблицы по вертикали и горизонтали
  • Изменение размера ширины столбца
  • Прокрутка внутри поля (когда содержимое поля шире поля)
  • Выберите строки или столбцы таблицы
  • Переупорядочить последовательность столбцов
  • Сохраните текущие настройки дисплея для использования в будущем.

Элементы управления таблицами также предлагают специальные функции форматирования (некоторые автоматические, некоторые дополнительные), которые упрощают просмотр и использование таблиц. Table Control обеспечивает –

  • автоматическое изменение размера таблицы (по вертикали и горизонтали), когда пользователь изменяет размеры окна
  • линии-разделители между строками и между столбцами (вертикальные и горизонтальные)
  • поля заголовков столбцов для всех столбцов

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

Пример (транзакция TZ60)

SAP Управление таблицей ABAP

Приведенная выше транзакция 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

Чтобы создать элемент управления «Таблица»

  1. Добавьте элемент управления таблицей на свой экран.
  2. Присвойте имя элементу управления таблицей. В программе ABAP объявите структуру с тем же именем (CONTROLS). type TABLEVIEW USING SCREEN )
  3. Для создания полей перейдите в функцию «Поля словаря/программы».
    • Введите имя структуры, поля которой вам нужны. (Если вы хотите, чтобы он выбрал его из словаря вашей программы, нажмите соответствующую кнопку).
    • В списке полей выберите нужные поля и нажмите «ОК».
    • Нажмите в области управления столом.

Если вам нужен столбец выбора, установите соответствующий флажок в атрибутах и ​​дайте ему имя. Создайте поле в 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, чтобы скрыть или защитить столбец для определенной роли пользователя, вместо создания второго экрана.

Часто задаваемые вопросы (FAQ)

Фронтенд обрабатывает горизонтальную прокрутку, но вертикальная прокрутка закодирована в PAI. Проанализируйте SY-UCOMM на предмет кодов функций прокрутки и переместите поле top_line структуры управления перед следующим запуском PBO.

An Сетка ALV Он обеспечивает сортировку, фильтрацию, подсчет итогов и экспорт без дополнительного кода, поэтому подходит для отображения списков. Элемент управления «таблица» предпочтительнее, когда экрану требуется настраиваемая логика ввода и полный контроль над каждой ячейкой.

SY-STEPL содержит индекс строки, обрабатываемой в данный момент в цикле отображения на экране, а SY-LOOPC содержит количество строк, видимых на экране. Оба параметра заполняются только внутри цикла LOOP … ENDLOOP элемента управления.

Да. Искусственный интеллект в инструментах разработки ABAP создает объявление CONTROLS, циклы обработки экрана и логику прокрутки на основе описания внутренней таблицы. Сгенерированная логика потока еще нуждается в тестировании на экране. Painter.

Инструменты анализа на основе ИИ считывают логику потока выполнения на экране Dynpro, перечисляют поля и коды функций и предлагают эквивалентный проект на основе Fiori или ALV. Это предложение сокращает этап анализа проекта модернизации.

Подведем итог этой публикации следующим образом: