SAP Kontrola tabeli ABAP z przykładami
⚡ Inteligentne podsumowanie
SAP Kontrolka tabeli ABAP wyświetla wewnętrzną tabelę jako przewijalną siatkę na ekranie wbudowanym w Screen PainterNa tej stronie wyjaśniono jego funkcje, deklarację CONTROLS, obsługę kursora, pętle PBO i PAI oraz atrybuty kolumn.

Czym jest kontrolka tabeli w SAP ABAP?
Kontrolki tabeli i pętle krokowe to obiekty do wyświetlania tabeli ekranowej, które dodajesz do ekranu na ekranie Painter.
Z punktu widzenia programowania elementy sterujące tabeli i pętle krokowe są prawie takie same. Elementy sterujące tabelami to po prostu ulepszone pętle krokowe, które wyświetlają dane o wyglądzie i działaniu kojarzącym się z tabelami w aplikacjach komputerowych.
Funkcje kontroli tabeli ABAP
Dzięki kontrolkom tabeli użytkownik może:
- Przewijaj tabelę w pionie i poziomie
- Zmień szerokość kolumny
- Przewijanie w obrębie pola (gdy zawartość pola jest szersza niż samo pole)
- Wybierz wiersze lub kolumny tabeli
- Zmień kolejność kolumn
- Zapisz bieżące ustawienia wyświetlania do wykorzystania w przyszłości
Elementy sterujące tabelami oferują także specjalne funkcje formatowania (niektóre automatyczne, inne opcjonalne), które ułatwiają przeglądanie i używanie tabel. Sterowanie stołem zapewnia –
- automatyczna zmiana rozmiaru tabeli (w pionie i poziomie), gdy użytkownik zmieni rozmiar okna
- linie oddzielające między wierszami i między kolumnami (pionowe i poziome)
- pola nagłówka kolumny dla wszystkich kolumn
Ogólnie rzecz biorąc, wiele funkcji udostępnianych przez kontrolkę tabeli jest obsługiwanych lokalnie przez system SAPinterfejs GUI, dzięki czemu nie musisz ich programować samodzielnie. Jedynym godnym uwagi wyjątkiem jest przewijanie w pionie.
Przykład (Transakcja TZ60)
Transakcja TZ60 powyżej pokazuje gotowy wynik: siatkę z nagłówkami kolumn, liniami rozdzielającymi i kolumną wyboru. Poniżej podsumowano różnice w stosunku do starszej pętli krokowej.
Sterowanie tabelą a pętla krokowa
Jedną z cech pętli krokowych jest to, że wiersze tabeli mogą rozciągać się na więcej niż jedną linię na ekranie. Z drugiej strony, wiersz kontrolki tabeli zawsze musi mieścić się w jednej linii (chociaż przewijanie jest możliwe). Poniższa tabela porównuje te dwa elementy ekranu.
| kryteria | Kontrola tabeli | Pętla krokowa |
|---|---|---|
| Układ wierszy | Jeden rząd to zawsze jedna linia ekranu | Jeden rząd może obejmować kilka linii ekranu |
| Obsługa kolumn | Użytkownik może zmieniać rozmiar kolumn, zmieniać ich kolejność i je ukrywać | Stały układ kolumn zdefiniowany na ekranie |
| przewijanie | Przewijanie poziome przez front-end, przewijanie pionowe zaprogramowane w PAI | Zaprogramowany w całości w kodzie ABAP |
| Deklaracja | STEROWANIE … WPISZ TABLEVIEW UŻYWAJĄC SCREEN | Brak struktury kontrolnej w programie |
| Ustawienia wyświetlania | Użytkownik może zapisać swój własny układ | Niedostępne |
Ponieważ kontrolka tabeli jest elementem nowoczesnym, reszta tej strony ją programuje.
Jak utworzyć i zaprogramować kontrolkę tabeli
Kontrolka tabeli wymaga elementu ekranu, struktury sterującej w programie oraz pętli zarówno w PBO, jak i PAI. Poniższe podsekcje są zgodne z tą kolejnością.
Deklarowanie kontroli
Aby obsługiwać kontrolki tabeli w programach ABAP, należy zadeklarować kontrolkę w części deklaracyjnej programu dla każdej kontrolki tabeli, korzystając z następującego polecenia:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
Gdzie to nazwa kontrolki tabeli na ekranie w programie ABAP. Sterowanie umożliwia programowi ABAP odczytanie atrybutów kontrolki tabeli i wpływanie na sterowanie. Tutaj: to numer ekranu, na którym ładowane są początkowe wartości tabeli.
Ustawianie i odczytywanie pozycji kursora
Pozycję kursora dla kontrolki tabeli można ustawić na następujące sposoby:
W PBO możesz ustawić kursor na konkretnym polu konkretnego wiersza kontrolki tabeli.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
Używając opcjonalnego dodatku OFFSET, możesz wprowadzić przesunięcie kursora w polu, jak opisano w części Ustawianie pozycji kursora.
W PAI możesz odczytać aktualną pozycję kursora.
GET CURSOR FIELD <f> LINE <lin> ...
Oprócz informacji podanych w polu Ustalanie pozycji kursora, pole zawiera informację, w którym wierszu tabeli znajduje się aktualnie kursor. Możesz także użyć
GET CURSOR LINE <lin>.
aby określić wiersz kontrolki tabeli. SY-SUBRC pozwala sprawdzić, czy kursor znajduje się w wierszu kontrolki tabeli.
Odczyt odpowiedniego wiersza tabeli wewnętrznej
Aby uzyskać odpowiednią linię stół wewnętrzny:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
Zmienna systemowa stepl – zawiera bieżący indeks linii tabeli w pętli…endloop. Loopc – zawiera liczbę linii widocznych w tabeli
Tworzenie kontrolki na ekranie Painter
Aby utworzyć kontrolkę tabeli
- Dodaj element sterujący tabelą do ekranu
- Nadaj nazwę kontrolce tabeli. W programie ABAP zadeklaruj strukturę z tą samą nazwą (CONTROLS wpisz TABLEVIEW USE SCREEN )
- Aby utworzyć pola przejdź do funkcji Dict./Program fields.
- Wpisz nazwę struktury, której pola chcesz. (Jeśli chcesz, żeby wybrało go ze słownika Twojego programu, kliknij odpowiedni przycisk).
- Na liście pól wybierz żądane pola i kliknij OK.
- Kliknij obszar kontrolny tabeli
Jeśli chcesz kolumnę wyboru, zaznacz odpowiednie pole wyboru w atrybutach i nadaj jej nazwę. Utwórz pole w programu ABAP.
Kodowanie pętli PBO i PAI
W PBO powinieneś mieć oświadczenie
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
W PAI powinieneś mieć.
LOOP at <itab>. ENDLOOP.
W pętlach odbywa się transfer danych pomiędzy ekranem a tabelą wewnętrzną. Podczas wypełniania tabeli wewnętrznej należy użyć polecenia DESCRIBE TABLE LINES -linii, aby zapisać całkowitą liczbę linii w kontrolce. Polecenie FIELD można wykorzystać do kontrolowania momentu, w którym następuje transfer danych
⚠️ Ostrzeżenie: Pętla PBO musi nadać kontrolce nazwę za pomocą USING CONTROL. Bez tego kontrolka nie wie, ile jest wierszy, a przewijanie w pionie przestaje działać.
Zmiana atrybutów kolumn w czasie wykonywania
Aby zmienić atrybuty poszczególnych komórek należy tymczasowo zmienić tabelę SCREEN w PBO. Możesz zmienić atrybuty struktury utworzonej za pomocą instrukcji STEROWANIE
<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.
💡 Wskazówka: Pętla -cols w PBO, aby ukryć lub chronić kolumnę dla danej roli użytkownika, zamiast tworzyć drugi ekran.

