SAP Контроль таблиці ABAP з прикладами
Елементи керування таблицею та покрокові цикли — це об’єкти для відображення екранної таблиці, які ви додаєте до екрана на екрані Painter.
З точки зору програмування, елементи керування таблицею та покрокові цикли майже однакові. Елементи керування таблицею — це просто покращені покрокові цикли, які відображають дані в тому вигляді, у якому вони виглядають і виглядають як таблиці в настільних програмах.
Особливості ABAP Table Control
За допомогою елементів керування таблиці користувач може:
- Прокрутіть таблицю по вертикалі та горизонталі
- Змініть ширину стовпця
- Прокрутка в межах поля (коли вміст поля ширший за поле)
- Виберіть рядки або стовпці таблиці
- Змініть послідовність колонок
- Збережіть поточні налаштування дисплея для подальшого використання
Елементи керування таблицями також пропонують спеціальні функції форматування (деякі автоматичні, деякі додаткові), які полегшують перегляд і використання таблиць. Table Control забезпечує –
- автоматичне змінення розміру таблиці (по вертикалі і горизонталі) при зміні користувачем розміру вікна
- розділові лінії між рядками та між стовпцями (вертикальні та горизонтальні)
- поля заголовків для всіх стовпців
Однією з особливостей покрокових циклів є те, що їхні рядки таблиці можуть охоплювати більше одного рядка на екрані. З іншого боку, рядок елемента керування таблиці завжди має міститися в одному рядку (хоча прокручування можливе).
Загалом, багато функцій, що надаються елементом керування таблицею, обробляються локально вашою системою SAPграфічний інтерфейс, тому вам не потрібно програмувати їх самостійно. Єдиним помітним винятком із цього є вертикальне прокручування.
Приклад (транзакція TZ60)
синтаксис
Щоб обробляти елементи керування таблиці в програмах 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 – містить кількість видимих рядків у таблиці
Щоб створити елемент керування таблицею
1. Додайте на екран елемент керування таблицею
2. Дайте назву елементу керування таблиці. У програмі ABAP оголосите структуру з тим самим ( CONTROLS тип TABLEVIEW ВИКОРИСТАННЯ ЕКРАНУ )
3. Щоб створити поля, перейдіть до функції Dict./Program fields.
- Введіть назву структури, поля якої вам потрібні. (Якщо ви хочете, щоб він вибрав його зі словника вашої програми, натисніть відповідну кнопку).
- У списку полів виберіть потрібні поля та виберіть «ОК».
- Клацніть в області керування таблицею
Якщо вам потрібен стовпець вибору, установіть відповідний прапорець в атрибутах і дайте йому назву. Створіть поле в Програма ABAP.
В ПБО у вас повинна бути заява
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
У PAI ви повинні мати.
LOOP at <itab>. ENDLOOP.
Саме в циклах відбувається передача даних між екраном і внутрішньою таблицею. Коли ви заповнюєте внутрішню таблицю, використовуйте DESCRIBE TABLE ЛІНІЇ -lines, щоб зберегти загальну кількість рядків в елементі керування. Інструкцію FIELD можна використовувати для керування часом передачі даних
Щоб змінити атрибути окремих комірок, тимчасово змініть таблицю 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.