SAP Control tabele ABAP cu exemple
Controalele de tabel și buclele de pas sunt obiecte pentru afișarea tabelului pe ecran pe care le adăugați la un ecran din Ecran Painter.
Din punct de vedere al programării, controalele de masă și buclele de pas sunt aproape exact aceleași. Controalele tabelelor sunt pur și simplu bucle de pași îmbunătățite care afișează date cu aspectul și senzația asociate cu tabelele din aplicațiile desktop.
Caracteristicile ABAP Table Control
Cu comenzile de masă, utilizatorul poate:
- Derulați tabel pe verticală și pe orizontală
- Redimensionați lățimea unei coloane
- Derulați într-un câmp (când conținutul câmpului este mai larg decât câmpul)
- Selectați rânduri sau coloane din tabel
- Reordonați secvența de coloane
- Salvați setările curente de afișare pentru utilizare ulterioară
Comenzile pentru tabel oferă, de asemenea, funcții speciale de formatare (unele automate, altele opționale) care fac tabelele mai ușor de vizualizat și utilizat. Table Control oferă -
- redimensionarea automată a tabelului (verticală și orizontală) atunci când utilizatorul redimensionează fereastra
- linii de separare între rânduri și între coloane (verticale și orizontale)
- câmpurile pentru antetul coloanei pentru toate coloanele
O caracteristică a buclelor de pas este că rândurile lor de tabel se pot întinde pe mai mult de o linie de pe ecran. Un rând al unui control de tabel, pe de altă parte, trebuie să fie întotdeauna conținut într-o singură linie (deși derularea este posibilă).
În general, multe dintre caracteristicile oferite de controlul tabelului sunt gestionate local de sistemul dumneavoastră SAPgui frontend, deci nu trebuie să le programați singur. Singura excepție notabilă de la aceasta este defilarea verticală.
Exemplu (Tranzacție TZ60)
Sintaxă
Pentru a gestiona controalele de tabel în programele ABAP, trebuie să declarați un control în partea de declarare a programului pentru fiecare control de tabel folosind următoarea instrucțiune:
CONTROLS <ctrl> TYPE TABLEVIEW USING SCREEN <scr>
Unde este numele controlului tabelului pe un ecran din programul ABAP. Controlul permite programului ABAP să citească atributele controlului tabelului și să influențeze controlul. Aici, este numărul ecranului în care sunt încărcate valorile inițiale ale tabelului.
Poziția cursorului pentru un control de tabel poate fi setată în următoarele moduri:
La PBO puteți seta cursorul pe un anumit câmp al unui anumit rând al unui control tabel.
SET CURSOR FIELD <f> LINE <lin> [OFFSET <off>]
Folosind adăugarea opțională OFFSET, puteți introduce decalajul cursorului în câmpul descris în setarea poziției cursorului.
La PAI puteți citi poziția curentă a cursorului.
GET CURSOR FIELD <f> LINE <lin> ...
Pe lângă informațiile oferite în câmpul Aflarea poziției cursorului conține informații despre ce rând din controlul tabelului se află în prezent cursorul. De asemenea, puteți utiliza
GET CURSOR LINE <lin>.
pentru a determina rândul controlului tabelului. SY-SUBRC vă permite să verificați dacă cursorul este plasat pe un rând al unui control tabel.
Pentru a obține linia corespunzătoare a masa interioara:
GET CURSOR line <lin>. ind = <table_control>-top_line + <lin> - 1. Read table <itab> index ind.
Variabila de sistem stepl – conține indexul curent al liniei de tabel într-o buclă … buclă finală. Loopc – conține un număr de linii vizibile în tabel
Pentru a crea un control de tabel
1.Adăugați un element de control al tabelului pe ecran
2. Dați un nume controlului tabelului. În programul ABAP declarați o structură cu aceeași ( CONTROLS tastați TABLEVIEW UTING SCREEN )
3.Pentru a crea câmpuri, accesați funcția Dict./Program fields.
- Introduceți numele structurii ale cărei câmpuri doriți. (Dacă doriți să o alegeți din dicționarul programului dvs., faceți clic pe butonul relevant).
- În lista de câmpuri alegeți câmpurile dorite și alegeți ok.
- Faceți clic în zona de control al tabelului
Dacă doriți o coloană de selecție, bifați caseta de selectare corespunzătoare din atribute și dați-i un nume. Creați câmpul în program ABAP.
În PBO ar trebui să aveți declarația
LOOP at <itab> USING CONTROL <cntrl_name>. ENDLOOP.
În PAI ar trebui să ai.
LOOP at <itab>. ENDLOOP.
În cadrul buclelor are loc transferul de date între ecran și tabelul intern. Când populați tabelul intern, utilizați DESCRIBE TABLE LINII -linii, pentru a stoca numărul total de linii în control. Declarația FIELD poate fi folosită pentru a controla când are loc transferul de date
Pentru a modifica atributele celulelor individuale, schimbați temporar tabelul SCREEN din PBO. Puteți modifica atributele structurii create de instrucțiunea 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.