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.

  • 🖥️ Definiția de bază: Un control tabelar este o buclă pași îmbunătățită care afișează datele tabelare cu aspectul și funcționalitatea unei grile de aplicații desktop.
  • 🧰 Caracteristici încorporate: Derularea, redimensionarea coloanelor, reordonarea coloanelor, selectarea rândurilor și salvarea setărilor de afișare sunt gestionate de SAPinterfață grafică.
  • 📜 Regula unei singure linii: Un rând de buclă pas cu pas se poate întinde pe mai multe linii de ecran, în timp ce un rând de control din tabel trebuie să se încadreze întotdeauna pe o singură linie.
  • ⌨️ Declaraţie: CONTROLE TABELUL DE TIPĂRIT UTILIZÂND ECRANUL leagă elementul de ecran la programul ABAP.
  • 🎯 Gestionarea cursorului: SET CURSOR poziționează cursorul la PBO, iar GET CURSOR citește câmpul și rândul la PAI.
  • 🔁 Transfer de date: BUCLA LA … USING CONTROL rulează la PBO, iar o BUCLA simplă LA rulează la PAI, iar datele se mută între ecran și tabelul intern în interiorul acelor bucle.
  • 🎨 Atribute dinamice: Tabelul SCREEN și Structura -cols modifică vizibilitatea și formatarea coloanelor în timpul execuției.

SAP Controlul mesei ABAP

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)

SAP Controlul mesei ABAP

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

  1. Adăugați un element de control tabelar pe ecran
  2. 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 )
  3. 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.

Întrebări frecvente

Frontend-ul gestionează derularea orizontală, dar derularea verticală este codificată în PAI. Evaluați SY-UCOMM pentru codurile funcției de derulare și mutați câmpul top_line al structurii de control înainte de rularea următorului PBO.

An Grilă ALV oferă sortare, filtrare, totaluri și export fără cod suplimentar, deci se potrivește listelor de afișare. Un control tabelar este preferat atunci când ecranul necesită o logică de introducere personalizată și control deplin asupra fiecărei celule.

SY-STEPL păstrează indexul rândului procesat în prezent în bucla ecranului, iar SY-LOOPC păstrează numărul de rânduri vizibile pe ecran. Ambele sunt umplute doar în interiorul buclei LOOP ... ENDLOOP a controlului.

Da. Asistenții AI din instrumentele de dezvoltare ABAP redactează declarația CONTROLS, ambele bucle de ecran și logica de derulare dintr-o descriere a tabelului intern. Logica fluxului generată trebuie încă testată în Ecran. Painter.

Instrumentele de analiză bazate pe inteligență artificială citesc logica de flux a unui dynpro, listează câmpurile și codurile funcțiilor și propun un design echivalent bazat pe Fiori sau ALV. Propunerea scurtează faza de analiză a unui proiect de modernizare.

Rezumați această postare cu: