SAP ABAP Table Control с примери

⚡ Умно обобщение

SAP ABAP Table Control показва вътрешна таблица като превъртаща се решетка на екран, вграден в Screen. PainterТази страница обяснява неговите характеристики, декларацията CONTROLS, обработката на курсора, циклите PBO и PAI и атрибутите на колоните.

  • Основна дефиниция: Табличният контрол е подобрен цикъл на стъпки, който показва таблични данни с външния вид и усещането на мрежа от настолно приложение.
  • 🧰 Вградени функции: Превъртането, преоразмеряването на колоните, пренареждането на колоните, изборът на редове и запазените настройки за показване се обработват от SAPграфичен интерфейс.
  • 📜 Правило за един ред: Редът от стъпка цикъл може да обхваща няколко реда на екрана, докато редът за табличен контрол винаги трябва да се побира на един ред.
  • Декларация: КОНТРОЛ ТИП TABLEVIEW С ИЗПОЛЗВАНЕ НА SCREEN свързва екранния елемент с ABAP програмата.
  • 🎯 Работа с курсора: SET CURSOR позиционира курсора на PBO, а GET CURSOR чете полето и реда на PAI.
  • 🔁 Трансфер на данни: LOOP AT … USING CONTROL се изпълнява на PBO, а обикновен LOOP AT се изпълнява на PAI, като данните се преместват между екрана и вътрешната таблица вътре в тези цикли.
  • 🎨 Динамични атрибути: Таблицата SCREEN и Структурата -cols променя видимостта и форматирането на колоните по време на изпълнение.

SAP ABAP Table Control

Какво е табличен контрол в SAP ABAP?

Контролите на таблицата и стъпковите цикли са обекти за показване на екранна таблица, които добавяте към екран в екрана Painter.

От гледна точка на програмирането контролите на таблицата и стъпковите цикли са почти напълно еднакви. Контролите на таблицата са просто подобрени стъпкови цикли, които показват данни с вида и усещането, свързани с таблиците в настолните приложения.

Характеристики на ABAP Table Control

С табличните контроли потребителят може:

  • Превъртете таблицата вертикално и хоризонтално
  • Преоразмерете ширината на колона
  • Превъртане в рамките на поле (когато съдържанието на полето е по-широко от полето)
  • Изберете редове или колони на таблицата
  • Пренаредете последователността от колони
  • Запазете текущите настройки на дисплея за бъдеща употреба

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

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

Като цяло, много от функциите, предоставени от контролата на таблицата, се управляват локално от вашата система SAPgui frontend, така че не е необходимо да ги програмирате сами. Единственото забележимо изключение от това е вертикалното превъртане.

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

SAP ABAP Table Control

Транзакция TZ60 по-горе показва крайния резултат: решетка със заглавки на колони, разделителни линии и колона за избор. Разликите от по-стария цикъл на стъпките са обобщени по-долу.

Контрол на таблицата срещу стъпков цикъл

Една от характеристиките на стъпковите цикли е, че редовете в таблицата им могат да обхващат повече от един ред на екрана. Ред на табличен контрол, от друга страна, винаги трябва да се съдържа в един ред (въпреки че е възможно превъртане). Таблицата по-долу сравнява двата елемента на екрана.

Критерии Контрол на таблицата Стъпков цикъл
Разположение на редове Един ред винаги е един ред на екрана Един ред може да обхваща няколко реда на екрана
Обработка на колони Колоните могат да бъдат преоразмерявани, пренареждани и скривани от потребителя Фиксирано оформление на колоните, дефинирано на екрана
Превъртане Хоризонтално скролиране от фронтенда, вертикално скролиране, програмирано в PAI Програмиран изцяло в ABAP кода
Декларация КОНТРОЛИТЕ ... ВЪВЕДЕТЕ TABLEVIEW, ИЗПОЛЗВАЙКИ SCREEN Няма контролна структура в програмата
Настройки на дисплея Потребителят може да запази лично оформление Не е налично

Тъй като табличният контрол е модерният елемент, останалата част от тази страница програмира точно него.

Как да създадете и програмирате табличен контрол

Табличен контрол се нуждае от екранен елемент, контролна структура в програмата и цикъл както в 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 тип TABLEVIEW с помощта на екрана )
  3. За да създадете полета, отидете на функцията Dict./Program fields.
    • Въведете името на структурата, чиито полета искате. (Ако искате да го избере от речника на вашата програма, щракнете върху съответния бутон).
    • В списъка с полета изберете желаните полета и изберете OK.
    • Щракнете в зоната за управление на таблицата

Ако искате колона за избор, поставете отметка в съответното квадратче в атрибутите и дайте име. Създайте полето в ABAP програма.

Кодиране на PBO и PAI контурите

В PBO трябва да имате извлечението

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, за да скриете или защитите колона за дадена потребителска роля, вместо да изграждате втори екран.

Въпроси и Отговори

Фронтендът обработва хоризонталното скролиране, но вертикалното скролиране е кодирано в PAI. Оценете SY-UCOMM за кодовете на функцията за скролиране и преместете полето top_line на контролната структура, преди да се изпълни следващото PBO.

An ALV решетка предоставя сортиране, филтриране, сумиране и експортиране без допълнителен код, така че е подходящ за показване на списъци. Табличният контрол е за предпочитане, когато екранът се нуждае от персонализирана логика за въвеждане и пълен контрол над всяка клетка.

SY-STEPL съдържа индекса на реда, който се обработва в момента в цикъла на екрана, а SY-LOOPC съдържа броя на редовете, видими на екрана. И двата елемента се запълват само в рамките на LOOP … ENDLOOP на контролата.

Да. AI асистентите в ABAP инструментите за разработка изготвят декларацията CONTROLS, двата цикъла на екрана и логиката за превъртане от описание на вътрешната таблица. Генерираната логика на потока все още се нуждае от тестване в Screen. Painter.

Инструментите за анализ с изкуствен интелект разчитат логиката на потока на dynpro, изброяват полетата и функционалните кодове и предлагат еквивалентен дизайн, базиран на Fiori или ALV. Предложението съкращава фазата на анализ на проект за модернизация.

Обобщете тази публикация с: