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

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

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

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

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

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

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

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

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

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

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

SAP ABAP Table Control

Синтаксис

За да управлявате таблични контроли в 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.

  • Въведете името на структурата, чиито полета искате. (Ако искате да го избере от речника на вашата програма, щракнете върху съответния бутон).
  • В списъка с полета изберете желаните полета и изберете OK.
  • Щракнете в зоната за управление на таблицата

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

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

LOOP at <itab> USING CONTROL <cntrl_name>.

ENDLOOP.

В PAI трябва да имате.

LOOP at <itab>.

ENDLOOP.

Трансферът на данни между екрана и вътрешната таблица се осъществява в рамките на циклите. Когато попълвате вътрешната таблица, използвайте DESCRIBE TABLE ЛИНИИ -линии, за съхраняване на общия брой редове в контролата. Инструкцията 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.