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.

  • 🖥️. Definicja podstawowa: Kontrolka tabeli to udoskonalona pętla krokowa, która wyświetla dane w tabeli w sposób przypominający siatkę aplikacji komputerowej.
  • 🧰 Wbudowane funkcje: Przewijanie, zmiana rozmiaru kolumn, zmiana kolejności kolumn, wybór wierszy i zapisywanie ustawień wyświetlania są obsługiwane przez SAPinterfejs graficzny.
  • 📜 Zasada pojedynczej linii: Wiersz pętli kroków może rozciągać się na kilka wierszy ekranu, natomiast wiersz sterujący tabelą musi zawsze mieścić się w jednym wierszu.
  • ⌨️. Deklaracja: STEROWNICA WPISZ TABLEVIEW UŻYWAJĄC SCREEN łączy element ekranu z programem ABAP.
  • 🎯 Obsługa kursora: SET CURSOR umieszcza kursor w PBO, a GET CURSOR odczytuje pole i wiersz w PAI.
  • 🔁 Transfer danych: PĘTLA AT … USING CONTROL działa w PBO, a zwykła PĘTLA AT działa w PAI, a dane przemieszczają się pomiędzy ekranem a wewnętrzną tabelą wewnątrz tych pętli.
  • 🎨 Atrybuty dynamiczne: Tabela SCREEN i Struktura -cols zmienia widoczność i formatowanie kolumn w czasie wykonywania.

SAP Kontrola tabeli ABAP

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)

SAP Kontrola tabeli ABAP

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

  1. Dodaj element sterujący tabelą do ekranu
  2. Nadaj nazwę kontrolce tabeli. W programie ABAP zadeklaruj strukturę z tą samą nazwą (CONTROLS wpisz TABLEVIEW USE SCREEN )
  3. 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.

FAQ

Interfejs użytkownika obsługuje przewijanie w poziomie, ale przewijanie w pionie jest zakodowane w PAI. Oblicz wartość SY-UCOMM dla kodów funkcji przewijania i przenieś pole top_line struktury sterującej przed uruchomieniem kolejnego PBO.

An Siatka ALV Zapewnia sortowanie, filtrowanie, sumowanie i eksport bez dodatkowego kodu, dzięki czemu nadaje się do wyświetlania list. Kontrolka tabeli jest preferowana, gdy ekran wymaga niestandardowej logiki wprowadzania i pełnej kontroli nad każdą komórką.

SY-STEPL przechowuje indeks wiersza aktualnie przetwarzanego w pętli ekranowej, a SY-LOOPC przechowuje liczbę wierszy widocznych na ekranie. Oba są wypełniane tylko w pętli LOOP … ENDLOOP kontrolki.

Tak. Asystenci AI w narzędziach programistycznych ABAP tworzą deklarację CONTROLS, obie pętle ekranowe i logikę przewijania na podstawie opisu tabeli wewnętrznej. Wygenerowana logika przepływu nadal wymaga przetestowania w środowisku Screen. Painter.

Narzędzia do analizy AI odczytują logikę przepływu w DynPro, wyświetlają pola i kody funkcji oraz proponują równoważny projekt oparty na Fiori lub ALV. Taka propozycja skraca fazę analizy projektu modernizacyjnego.

Podsumuj ten post następująco: