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 | Darstellungsmodus. Werte: None, SingleSelect, SingleSelectLeft, SingleSelectMaster, MultiSelect, Delete | None |
hiddenInPopin | Spalten mit dieser Wichtigkeit werden im Popin ausgeblendet. Werte: None, Low, Medium, High | – |
autoPopinMode | Spalten je nach Bildschirmbreite automatisch in Popins umbrechen (zusammen mit importance je Spalte) | true |
visible | Sichtbar | true |
spanS / spanM / spanL / spanXL | Grid-Layout | 12 |
TableColumn
| Attribut | Beschreibung | Default |
|---|---|---|
controlId | Eindeutige ID der Komponente | automatisch generiert |
name | Feldname der gebundenen Datenzeile | – |
text | Spaltenüberschrift | – |
width | Spaltenbreite (CSS-Wert) | auto |
hAlign | Horizontale Ausrichtung. Werte: Begin, End, Left, Right, Center, Initial | Begin |
importance | Wichtigkeit der Spalte für den Popin-Umbruch. Werte: None, Low, Medium, High | None |
demandPopin | Spalte bei schmalem Bildschirm in ein Popin umbrechen | false |
minScreenWidth | Mindestbreite, ab der die Spalte sichtbar ist | – |
visible | Komponente sichtbar | true |
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 |
INIT | Hebt die Auswahl aller Zeilen auf und entfernt alle Zeilen |
ADD_COLUMN | Spalte hinzufügen (/mobbuild/cl_table_column); eine vorhandene Spalte gleichen Namens wird ersetzt |
ADD_COLUMNS | Mehrere Spalten hinzufügen (Tabelle von /mobbuild/cl_table_column) |
ADD_ITEM | Zell-Template für eine Spalte hinterlegen (siehe unten) |
ADD_ITEMS | Mehrere Zell-Templates hinterlegen (ersetzt die vorhandenen) |
GET_COLUMN | Spalte nach name |
GET_COLUMNS | Alle Spalten |
GET_ITEM | Zell-Template nach Spalten-name |
GET_ITEMS | Alle Zell-Templates |
REMOVE_COLUMN | Spalte nach name entfernen |
REMOVE_COLUMNS | Alle Spalten entfernen |
REMOVE_ITEM | Zell-Template nach Spalten-name entfernen |
REMOVE_ITEMS | Alle Zell-Templates entfernen |
REMOVE_ROWS | Alle Zeilen entfernen |
Geerbte Methoden: siehe Control.
BIND
| Übergabe | Typ | Beschreibung |
|---|---|---|
IT_DATA | beliebige interne Tabelle | Wird als Datenquelle hinterlegt – pro Eintrag entsteht eine Tabellenzeile. |
Zell-Templates (Items)
„Items" einer Table sind keine Datenzeilen, sondern Zell-Templates: Sie legen je Spalte fest, welche Komponente in der Zelle gerendert wird und aus welchem Feld der gebundenen Zeile sie ihren Inhalt bezieht. Die Zuordnung läuft über den Spalten-name. Datenzeilen entstehen ausschließlich über bind; für Spalten ohne Zell-Template setzt die Table ein Label ein, das den gleichnamigen Feldwert anzeigt.
| Klasse | Zelle | Konstruktor |
|---|---|---|
/mobbuild/cl_table_label | Label | iv_name, iv_text_field, optional iv_bold |
/mobbuild/cl_table_status | ObjectStatus mit Indikationsfarbe | iv_name, iv_text_field, optional iv_title_field, io_object_state (Implementierung von /mobbuild/if_object_status, bestimmt Farbe und Invertierung aus dem Text) |
/mobbuild/cl_table_identifier | ObjectIdentifier (Titel + Text) | iv_name, iv_text_field, optional iv_title_field |
abap
DATA(lo_table) = me->get_table( 'tblExample' ).
" Spalte 'matnr' als fette Beschriftung, Spalte 'maktx' als Titel/Text-Paar
lo_table->add_item( NEW /mobbuild/cl_table_label( iv_name = 'matnr' iv_text_field = 'matnr' iv_bold = abap_true ) ).
lo_table->add_item( NEW /mobbuild/cl_table_identifier( iv_name = 'maktx' iv_title_field = 'matnr' iv_text_field = 'maktx' ) ).
lo_table->bind( lt_data ).Die Zell-Templates müssen vor bind hinterlegt sein – bind wertet sie beim Aufbau jeder Zeile aus.
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_CONTROL | Komponente einer Zelle nach Spaltenname (iv_name) |
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 über das Attribut name der TableColumn gemappt (der Designer setzt die controlId der Spalte automatisch gleich name). Achten Sie darauf, dass name mit dem ABAP-Feldnamen übereinstimmt; ohne eigenes Item wird der Feldwert als Text in der Zelle angezeigt.
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