Skip to content

Table

Tabellarische Darstellung mehrerer Zeilen mit gleichem Schema. Unterstützt Mehrfachauswahl, Datenbindung an interne Tabellen aus ABAP und individuell konfigurierbare Spalten.

Designer-Attribute

AttributBeschreibungDefault
controlIdEindeutige IDautomatisch generiert
modeNone, SingleSelect, SingleSelectMaster, MultiSelectNone
growingStufenweises Nachladentrue
growingThresholdAnzahl Zeilen pro Ladestufe20
noDataTextText bei leerer Tabelleleer
widthBreite (CSS-Wert)
visibleSichtbartrue
spanS / spanM / spanL / spanXLGrid-Layout12

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>' ).

MethodeZweck
BINDInterne Tabelle als Datengrundlage setzen
GET_ROWSAlle Zeilen-Referenzen
GET_SELECTED_ROWSSelektierte Zeilen
GET_MODE / SET_MODEAuswahlmodus
GET_NO_DATA_TEXT / SET_NO_DATA_TEXT„Keine Daten"-Text
INITAuswahl zurücksetzen

Geerbte Methoden: siehe Control.

BIND

ÜbergabeTypBeschreibung
lt_databeliebige interne TabelleWird als Datenquelle hinterlegt – pro Eintrag entsteht eine Tabellenzeile.

Zeilen-API (TableRow)

get_rows( ) und get_selected_rows( ) liefern Referenzen auf einzelne Zeilen:

MethodeZweck
GET_DATALiefert die ABAP-Strukturdaten der Zeile (über CHANGING co_data = ls_data)
GET_SELECTED / SET_SELECTEDSelektionsstatus der Zeile
GET_INDEXPosition 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

EventAuslöser
onSelectionChangeSelektion einer Zeile geändert

Nächste Schritte