SAP ABAP tabeli juhtimine näidetega
⚡ Nutikas kokkuvõte
SAP ABAP-tabeli juhtelement kuvab sisemise tabeli keritava ruudustikuna ekraanil, mis on ehitatud ekraani sisse. PainterSee leht selgitab selle funktsioone, CONTROLS-deklaratsiooni, kursori käsitsemist, PBO- ja PAI-tsükleid ning veeru atribuute.

Mis on tabeli juhtelement? SAP ABAP?
Tabeli juhtelemendid ja sammusilmused on ekraanitabeli kuvamise objektid, mille lisate ekraanile Painter.
Programmeerimise seisukohast on tabeli juhtnupud ja sammutsüklid peaaegu täpselt samad. Tabeli juhtelemendid on lihtsalt täiustatud sammutsüklid, mis kuvavad andmeid töölauarakenduste tabelitega seotud välimuse ja tunnetusega.
ABAP tabelikontrolli omadused
Tabeli juhtelementidega saab kasutaja:
- Kerige tabelit vertikaalselt ja horisontaalselt
- Muutke veeru laiust
- Kerige väljal (kui välja sisu on väljast laiem)
- Valige tabeli read või veerud
- Järjestage veergude järjestus ümber
- Salvestage praegused kuvaseaded edaspidiseks kasutamiseks
Tabeli juhtelemendid pakuvad ka spetsiaalseid vormindamisfunktsioone (mõned automaatsed, mõned valikulised), mis muudavad tabelite vaatamise ja kasutamise lihtsamaks. Tabelikontroll pakub –
- automaatne tabeli suuruse muutmine (vertikaalne ja horisontaalne), kui kasutaja muudab akna suurust
- eraldusjooned ridade ja veergude vahel (vertikaalne ja horisontaalne)
- veeru päise väljad kõigi veergude jaoks
Üldiselt haldab paljusid tabeli juhtelemendi pakutavaid funktsioone teie süsteem kohapeal SAPgui frontend, nii et te ei pea neid ise programmeerima. Ainus märkimisväärne erand sellest on vertikaalne kerimine.
Näide (tehing TZ60)
Ülaltoodud tehing TZ60 näitab lõpptulemust: ruudustik veerupäiste, eraldusjoonte ja valikuveeruga. Erinevused vanemast sammutsüklist on kokku võetud järgnevalt.
Laua juhtimine vs astmeline silmus
Üks astmeliste tsüklite omadus on see, et nende tabeli read võivad ulatuda ekraanil rohkem kui ühele reale. Tabeli juhtelemendi rida seevastu peab alati asuma ühel real (kuigi kerimine on võimalik). Allolev tabel võrdleb kahte ekraanielementi.
| Kriteeriumid | Tabeli kontroll | Astmeline silmus |
|---|---|---|
| Rea paigutus | Üks rida on alati üks ekraanirida | Üks rida võib hõlmata mitut ekraanirida |
| Veergude käsitlemine | Kasutaja saab veergude suurust muuta, järjekorda muuta ja peita | Ekraanil määratletud fikseeritud veergude paigutus |
| Kerige | Horisontaalne kerimine esiotsa poolt, vertikaalne kerimine programmeeritud PAI-s | Täielikult ABAP-koodis programmeeritud |
| deklaratsioon | JUHTSEADISED … TIPPIGE EKRANI ABIL TABLEVIEW | Programmis puudub juhtimisstruktuur |
| Kuva seaded | Kasutaja saab salvestada isikliku paigutuse | Pole saadaval |
Kuna tabeli juhtelement on moodne element, programmeerib ülejäänud leht seda.
Kuidas luua ja programmeerida tabeli juhtelementi
Tabeli juhtelement vajab ekraanielementi, programmis olevat juhtstruktuuri ja tsüklit nii PBO-s kui ka PAI-s. Allolevad alajaotised järgivad seda järjekorda.
Kontrolli deklareerimine
Tabeli juhtelementide käsitlemiseks ABAP-programmides peate iga tabeli juhtelemendi programmi deklaratsiooniosas juhtelemendi deklareerima, kasutades järgmist lauset:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
kus on tabeli juhtelemendi nimi ABAP programmi ekraanil. Juhtseade võimaldab ABAP-programmil lugeda tabeli juhtelemendi atribuute ja mõjutada juhtelementi. on ekraani number, kuhu laaditakse tabeli algväärtused.
Kursori asukoha määramine ja lugemine
Tabeli juhtelemendi kursori asukohta saab määrata järgmistel viisidel:
PBO-s saate seada kursori tabeli juhtelemendi konkreetse rea konkreetsele väljale.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
Valikulise lisamise OFFSET abil saate sisestada väljale kursori nihke, nagu on kirjeldatud jaotises Kursori asukoha määramine.
PAI-s saate lugeda kursori praegust asukohta.
GET CURSOR FIELD <f> LINE <lin> ...
Lisaks väljal Kursori asukoha väljaselgitamine antud teabele sisaldab teavet selle kohta, millisel tabeli juhtelemendi real kursor parasjagu on. Võite ka kasutada
GET CURSOR LINE <lin>.
tabeli juhtelemendi rea määramiseks. SY-SUBRC võimaldab kontrollida, kas kursor asub tabeli juhtelemendi real.
Vastava sisemise tabeli rea lugemine
Vastava rea saamiseks sisemine laud:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
Süsteemi muutuja stepl – sisaldab praegust tabelirea indeksit tsüklis … endloop. Loopc – sisaldab tabelis nähtavate ridade arvu
Juhtelemendi loomine ekraanil Painter
Tabeli juhtelemendi loomiseks
- Tabeli juhtelemendi lisamine ekraanile
- Andke tabelile juhtelement nimi. ABAP-programmis deklareerige sama nimetusega struktuur (CONTROLS tüüp TABLEVIEW USING SCREEN )
- Väljade loomiseks minge funktsiooni Dict./Program fields (Sõnastiku/Programmi väljad).
- Sisestage selle struktuuri nimi, mille välju soovite. (Kui soovite, et see valiks selle teie programmi sõnastikust, klõpsake vastavat nuppu).
- Valige väljade loendist soovitud väljad ja valige OK.
- Klõpsake tabeli juhtalal
Kui soovite valikuveergu, märkige atribuutides vastav märkeruut ja andke sellele nimi. Looge väljal ABAP programm.
PBO ja PAI ahelate kodeerimine
PBO-s peaks teil olema avaldus
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
PAI-s peaks teil olema.
LOOP at <itab>. ENDLOOP.
Andmeedastus ekraani ja sisemise tabeli vahel toimub tsüklite sees. Sisemise tabeli täitmisel kasutage käsku DESCRIBE TABLE. LINES -read, et salvestada juhtelemendi ridade koguarv. FIELD-lauset saab kasutada andmeedastuse toimumise juhtimiseks.
⚠️ Hoiatus: PBO tsükkel peab juhtelemendi nimetama USING CONTROL abil. Ilma selleta ei tea juhtelement ridade arvu ja vertikaalne kerimine lakkab töötamast.
Veergude atribuutide muutmine käitusajal
Üksikute lahtrite atribuutide muutmiseks muutke ajutiselt PBO tabelit SCREEN. Saate muuta CONTROLS-lausega loodud struktuuri atribuute
<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.
💡 Näpunäide: Tsükkel üle -cols PBO-s, et peita või kaitsta veergu antud kasutajarolli jaoks, selle asemel, et luua teine ekraan.

