SAP Řízení tabulky ABAP s příklady
⚡ Chytré shrnutí
SAP Řízení tabulek ABAP zobrazuje interní tabulku jako posouvatelnou mřížku na obrazovce zabudované v Screen. PainterTato stránka vysvětluje jeho funkce, deklaraci CONTROLS, práci s kurzorem, smyčky PBO a PAI a atributy sloupců.

Co je ovládací prvek tabulky v SAP ABAP?
Ovládací prvky tabulky a smyčky kroků jsou objekty pro zobrazení tabulky na obrazovce, které přidáte na obrazovku na obrazovce Painter.
Z hlediska programování jsou ovládací prvky stolu a krokové smyčky téměř úplně stejné. Ovládací prvky tabulky jsou jednoduše vylepšené smyčky kroků, které zobrazují data se vzhledem a chováním souvisejícím s tabulkami v aplikacích pro stolní počítače.
Vlastnosti ABAP Table Control
Pomocí ovládacích prvků tabulky může uživatel:
- Procházejte tabulkou svisle a vodorovně
- Změňte velikost šířky sloupce
- Posouvání v poli (když je obsah pole širší než pole)
- Vyberte řádky nebo sloupce tabulky
- Změňte pořadí sloupců
- Uložte aktuální nastavení zobrazení pro budoucí použití
Ovládací prvky tabulky také nabízejí speciální funkce formátování (některé automatické, některé volitelné), které usnadňují prohlížení a používání tabulek. Table Control poskytuje –
- automatická změna velikosti tabulky (vertikální a horizontální), když uživatel změní velikost okna
- oddělovací čáry mezi řádky a mezi sloupci (vertikální a horizontální)
- pole záhlaví sloupců pro všechny sloupce
Obecně platí, že mnoho funkcí poskytovaných ovládacím prvkem tabulky je zpracováno lokálně vaším systémem SAPgui frontend, takže je nemusíte programovat sami. Jedinou významnou výjimkou je vertikální rolování.
Příklad (transakce TZ60)
Transakce TZ60 výše ukazuje konečný výsledek: mřížku se záhlavími sloupců, oddělovacími čarami a sloupcem pro výběr. Rozdíly oproti starší smyčce kroků jsou shrnuty dále.
Ovládání tabulky vs. kroková smyčka
Jednou z vlastností krokových smyček je, že řádky jejich tabulky mohou na obrazovce zabírat více než jeden řádek. Řádek ovládacího prvku tabulky musí být naproti tomu vždy obsažen v jednom řádku (i když je možné posouvání). Níže uvedená tabulka porovnává oba prvky obrazovky.
| Kritéria | Ovládací prvek tabulky | Kroková smyčka |
|---|---|---|
| Rozložení řádků | Jeden řádek je vždy jeden řádek obrazovky | Jeden řádek může zabírat několik řádků obrazovky |
| Manipulace se sloupci | Uživatel může změnit velikost, pořadí a skrytí sloupců | Pevné rozvržení sloupců definované na obrazovce |
| Posouvání | Horizontální rolování frontendem, vertikální rolování naprogramované v PAI | Naprogramováno kompletně v kódu ABAP |
| Prohlášení | OVLÁDACÍ PRVKY … TYP TABLEVIEW POUŽITÍM SCREEN | Žádná řídicí struktura v programu |
| Nastavení obrazovky | Uživatel si může uložit vlastní rozvržení | Není k dispozici |
Protože ovládací prvek tabulky je moderním prvkem, zbytek této stránky jej programuje.
Jak vytvořit a naprogramovat ovládací prvek tabulky
Ovládací prvek tabulky potřebuje prvek obrazovky, strukturu ovládacího prvku v programu a smyčku v PBO i PAI. Následující podkapitoly se řídí tímto pořadím.
Deklarace kontroly
Chcete-li ovládat ovládací prvky tabulky v programech ABAP, musíte ovládací prvek deklarovat v deklarační části programu pro každý ovládací prvek tabulky pomocí následujícího příkazu:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
kde je název ovládacího prvku tabulky na obrazovce v programu ABAP. Ovládací prvek umožňuje programu ABAP číst atributy ovládacího prvku tabulky a ovlivňovat ovládací prvek. je číslo obrazovky, kde jsou načteny počáteční hodnoty tabulky.
Nastavení a čtení pozice kurzoru
Pozici kurzoru pro ovládací prvek tabulky lze nastavit následujícími způsoby:
U PBO můžete nastavit kurzor na určité pole určitého řádku ovládacího prvku tabulky.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
Pomocí volitelného přídavku OFFSET můžete zadat offset kurzoru do pole, jak je popsáno v části Nastavení pozice kurzoru.
Na PAI si můžete přečíst aktuální pozici kurzoru.
GET CURSOR FIELD <f> LINE <lin> ...
Kromě informací uvedených v poli Zjištění pozice kurzoru obsahuje informaci, na kterém řádku ovládacího prvku tabulky je aktuálně kurzor. Můžete také použít
GET CURSOR LINE <lin>.
pro určení řádku ovládacího prvku tabulky. SY-SUBRC umožňuje zkontrolovat, zda je kurzor umístěn v řádku ovládacího prvku tabulky.
Čtení odpovídajícího řádku interní tabulky
Pro získání odpovídajícího řádku vnitřní stůl:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
Systémová proměnná stepl – obsahuje aktuální index řádku tabulky ve smyčce … endloop. Loopc – obsahuje počet řádků viditelných v tabulce
Vytvoření ovládacího prvku na obrazovce Painter
Chcete-li vytvořit ovládací prvek tabulky
- Přidání prvku ovládání tabulky na obrazovku
- Pojmenujte ovládací prvek tabulky. V programu ABAP deklarujte strukturu se stejným (CONTROLS typ TABLEVIEW pomocí obrazovky )
- Pro vytvoření polí přejděte k funkci Pole Dict./Program.
- Zadejte název struktury, jejíž pole chcete. (Pokud chcete, aby to vybral ze slovníku vašeho programu, klikněte na příslušné tlačítko).
- V seznamu polí vyberte požadovaná pole a zvolte OK.
- Klikněte do oblasti ovládání tabulky
Pokud chcete sloupec výběru, zaškrtněte příslušné políčko v atributech a pojmenujte jej. Vytvořte pole v program ABAP.
Kódování smyček PBO a PAI
V PBO byste měli mít výpis
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
V PAI byste měli mít.
LOOP at <itab>. ENDLOOP.
Právě v rámci smyček dochází k přenosu dat mezi obrazovkou a interní tabulkou. Při naplňování interní tabulky použijte DESCRIBE TABLE. LINES -lines, pro uložení celkového počtu řádků v ovládacím prvku. Příkaz FIELD lze použít k řízení, kdy dochází k přenosu dat.
Warning️ Varování: Smyčka PBO musí pojmenovat ovládací prvek pomocí příkazu USING CONTROL. Bez něj ovládací prvek neví, kolik řádků existuje, a vertikální rolování přestane fungovat.
Změna atributů sloupců za běhu
Pro změnu atributů jednotlivých buněk dočasně změňte tabulku SCREEN v PBO. Můžete změnit atributy struktury vytvořené příkazem 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.
💡 Tip: Smyčka přes -cols v PBO pro skrytí nebo ochranu sloupce pro danou uživatelskou roli, spíše než pro vytvoření druhé obrazovky.

