SAP Control tabele ABAP cu exemple
⚡ Rezumat inteligent
SAP Controlul tabelului ABAP afișează un tabel intern sub forma unei grile derulante pe un ecran încorporat în ecran. PainterAceastă pagină explică caracteristicile sale, declarația CONTROLS, gestionarea cursorului, buclele PBO și PAI și atributele coloanei.
Ce este un control de tip tabel în SAP ABAP?
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
Î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)
Tranzacția TZ60 de mai sus prezintă rezultatul final: o grilă cu anteturi de coloană, linii de separare și o coloană de selecție. Diferențele față de bucla de pași mai veche sunt rezumate în continuare.
Controlul tabelului vs. bucla pas cu pas
O caracteristică a buclelor pas cu pas este că rândurile din tabelul lor se pot întinde pe mai mult de o linie pe ecran. Pe de altă parte, un rând al unui control din tabel trebuie să fie întotdeauna conținut pe o singură linie (deși derularea este posibilă). Tabelul de mai jos compară cele două elemente ale ecranului.
| Criterii | Controlul mesei | Bucla pas cu pas |
|---|---|---|
| Dispunerea rândurilor | Un rând este întotdeauna o linie de ecran | Un rând se poate întinde pe mai multe linii de ecran |
| Manipularea coloanelor | Coloanele pot fi redimensionate, reordonate și ascunse de către utilizator | Aspect fix al coloanelor definit pe ecran |
| scrolling | Derulare orizontală de către frontend, derulare verticală programată în PAI | Programat în întregime în cod ABAP |
| Declarație | CONTROALE … TABEL DE TABEL UTILIZÂND ECRANUL | Nicio structură de control în program |
| Setări de afișare | Utilizatorul poate salva un layout personal | Nu este disponibil |
Deoarece controlul tabel este elementul modern, restul acestei pagini îl programează pe acesta.
Cum se creează și se programează un control de tip tabel
Un control de tip tabel are nevoie de un element de ecran, o structură de control în program și o buclă atât în PBO, cât și în PAI. Subsecțiunile de mai jos respectă această ordine.
Declararea controlului
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.
Setarea și citirea poziției cursorului
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 tabelar. SY-SUBRC vă permite să verificați dacă cursorul este plasat pe un rând al unui control tabelar.
Citirea liniei corespunzătoare din tabelul intern
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
Crearea controlului în ecran Painter
Pentru a crea un control de tabel
- Adăugați un element de control tabelar pe ecran
- Dați un nume controlului din tabel. În programul ABAP declarați o structură cu același nume (CONTROLS tastați TABLEVIEW UTILIZÂND ECRANUL )
- Pentru a crea câmpuri, accesați funcția Câmpuri dicționar/program.
- 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.
Codificarea buclelor PBO și PAI
Î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.
Transferul de date între ecran și tabelul intern are loc în cadrul buclelor. Când populați tabelul intern, utilizați DESCRIBE TABLE. LINES. -linii, pentru a stoca numărul total de linii din control. Instrucțiunea FIELD poate fi utilizată pentru a controla momentul în care are loc transferul de date
⚠️ Atenție: Bucla PBO trebuie să denumească controlul cu USING CONTROL. Fără aceasta, controlul nu știe câte linii există, iar derularea verticală nu mai funcționează.
Modificarea atributelor coloanei în timpul execuției
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.
💡 Sfat: Bucla -cols în PBO pentru a ascunde sau proteja o coloană pentru un anumit rol de utilizator, în loc să construiască un al doilea ecran.


