Erscheinungsbild
Table
Tabellarische Darstellung mehrerer Zeilen mit gleichem Schema. Unterstützt Mehrfachauswahl, Datenbindung an interne Tabellen aus ABAP und individuell konfigurierbare Spalten.
Designer-Attribute
| Attribut | Beschreibung | Default |
|---|---|---|
controlId | Eindeutige ID | automatisch generiert |
mode | None, SingleSelect, SingleSelectMaster, MultiSelect | None |
growing | Stufenweises Nachladen | true |
growingThreshold | Anzahl Zeilen pro Ladestufe | 20 |
noDataText | Text bei leerer Tabelle | leer |
width | Breite (CSS-Wert) | – |
visible | Sichtbar | true |
spanS / spanM / spanL / spanXL | Grid-Layout | 12 |
Im View-Tree werden ausschließlich die Spalten als Kind-Komponenten (TableColumn) gepflegt. Die Zeilen werden nicht als ColumnListItem angelegt – sie entstehen zur Laufzeit aus den Spalten und der Datenbindung (bind). Ein manuell angelegtes ColumnListItem führt zum Laufzeitfehler „Element sap.m.ColumnListItem is not valid for aggregation 'columns'".
ABAP-API
Zugriff über me->get_table( '<controlId>' ).
| Methode | Zweck |
|---|---|
BIND | Interne Tabelle als Datengrundlage setzen |
GET_ROWS | Alle Zeilen-Referenzen |
GET_SELECTED_ROWS | Selektierte Zeilen |
GET_MODE / SET_MODE | Auswahlmodus |
GET_NO_DATA_TEXT / SET_NO_DATA_TEXT | „Keine Daten"-Text |
INIT | Auswahl zurücksetzen |
Geerbte Methoden: siehe Control.
BIND
| Übergabe | Typ | Beschreibung |
|---|---|---|
lt_data | beliebige interne Tabelle | Wird als Datenquelle hinterlegt – pro Eintrag entsteht eine Tabellenzeile. |
Zeilen-API (TableRow)
get_rows( ) und get_selected_rows( ) liefern Referenzen auf einzelne Zeilen:
| Methode | Zweck |
|---|---|
GET_DATA | Liefert die ABAP-Strukturdaten der Zeile (über CHANGING co_data = ls_data) |
GET_SELECTED / SET_SELECTED | Selektionsstatus der Zeile |
GET_INDEX | Position in der Tabelle |
Beispiel: /mobbuild/cl_ex_table
Das Beispiel füllt die Tabelle mit Test-Daten, selektiert eine Zeile vor und gibt beim Submit die selektierten Zeilen als Toast aus:
abap
METHOD on_pbo.
DATA(lt_data) = /mobbuild/cl_ex_test_data=>get_material_table( iv_count = 50 ).
DATA(lo_table) = me->get_table( 'tblExample' ).
lo_table->bind( lt_data ).
" Beispiel-Vorauswahl: Zeile mit matnr = 'MATERIAL2' markieren
LOOP AT lo_table->get_rows( ) ASSIGNING FIELD-SYMBOL(<fs_row>).
DATA ls_data TYPE /mobbuild/cl_ex_test_data=>ty_material.
<fs_row>->get_data( CHANGING co_data = ls_data ).
IF ls_data-matnr EQ 'MATERIAL2'.
<fs_row>->set_selected( abap_true ).
ENDIF.
ENDLOOP.
ENDMETHOD.abap
METHOD on_pai.
DATA(lo_table) = me->get_table( 'tblExample' ).
DATA(lt_selected_row) = lo_table->get_selected_rows( ).
DATA(lv_msg) = CONV string( 'selected:' ).
LOOP AT lt_selected_row INTO DATA(ls_selected_row).
DATA ls_data TYPE /mobbuild/cl_ex_test_data=>ty_material.
ls_selected_row->get_data( CHANGING co_data = ls_data ).
lv_msg = |{ lv_msg }{ ls_data-matnr };|.
ENDLOOP.
me->set_message_toast( me->create_message_toast( iv_text = lv_msg ) ).
ENDMETHOD.Spaltenbindung
Die Felder Ihrer ABAP-Strukturzeile werden anhand des Spaltennamens auf die TableColumn-Kinder gemappt. Achten Sie darauf, dass die controlId der Spalte mit dem ABAP-Feldnamen übereinstimmt – oder pflegen Sie das Mapping über die BINDING-Property der Spalte.
Events im Designer
| Event | Auslöser |
|---|---|
onSelectionChange | Selektion einer Zeile geändert |
Nächste Schritte
- List – einfache Liste ohne Spalten
- Backend – API-Zugriff – Daten ermitteln und an Tabellen binden