Erscheinungsbild
Komponenten
Dieser Bereich dokumentiert alle Komponenten, die der Mobile Builder im Designer und in der ABAP-API zur Verfügung stellt. Pro Komponente finden Sie:
- Beschreibung – wofür die Komponente gedacht ist
- Designer-Attribute – Attribute, die im Eigenschaften-Panel verfügbar sind
- ABAP-API – Methoden zum Lesen und Setzen aus der gebundenen Klasse heraus
- Beispiel – ABAP-Code aus dem ausgelieferten Beispiel-Paket
/mobbuild/example
ABAP-Klassen-Pattern
Jede an eine View gebundene Klasse erbt von /mobbuild/cl_request_base und redefiniert die zwei Lifecycle-Methoden:
abap
CLASS /<NAMESPACE>/cl_my_view DEFINITION
PUBLIC
INHERITING FROM /mobbuild/cl_request_base
FINAL
CREATE PUBLIC.
PUBLIC SECTION.
METHODS on_pai REDEFINITION.
METHODS on_pbo REDEFINITION.
ENDCLASS.| Methode | Auslöser | Zweck |
|---|---|---|
on_pbo | Process Before Output – Aufruf vor dem Anzeigen der View | Daten ermitteln, Komponenten initialisieren, Listen befüllen |
on_pai | Process After Input – Aufruf nach Benutzeraktion | Eingaben auswerten, Backend-Logik aufrufen, navigieren |
Komponenten-Zugriff aus ABAP
Über me->get_<typ>( '<controlId>' ) erhalten Sie eine Referenz auf eine konkrete Komponente:
abap
DATA(lo_button) = me->get_button( 'btnSave' ).
DATA(lo_input) = me->get_input( 'txtName' ).
DATA(lo_label) = me->get_label( 'lblMessage' ).
DATA(lo_combo_box) = me->get_combo_box( 'cbCountry' ).
DATA(lo_table) = me->get_table( 'tblItems' ).Die getypte Referenz erlaubt anschließend Methodenverkettung und Code-Vervollständigung:
abap
me->get_input( 'txtName' )->set_value( 'Hallo' ).
me->get_button( 'btnSave' )->set_enabled( abap_false ).Event auswerten
In on_pai ermitteln Sie über me->get_event( ), welche Aktion den Aufruf ausgelöst hat:
abap
DATA(lo_event) = me->get_event( ).
DATA(lv_key) = lo_event->get_event_key( ). " z.B. 'Submit', 'Change'
DATA(lv_sender) = lo_event->get_sender( ). " controlId der auslösenden Komponente
CASE lv_key.
WHEN 'Submit'. " ...
WHEN 'Change'. " ...
ENDCASE.Der event_key ist immer der Text, den Sie im Designer in das Ereignis-Attribut der Komponente (onPress, onChange, onSubmit, …) eingetragen haben; sender ist die controlId der auslösenden Komponente. Reservierte Werte gibt es nicht – 'Submit' und 'Change' in den Beispielen sind frei gewählte Einträge. Einzige Ausnahme ist die MessageBox: dort ist sender fest 'MessageBox' und der event_key die gewählte Aktion.
Globale Hilfen
Eine kleine Auswahl an Helfern, die direkt auf me verfügbar sind:
| Methode | Zweck |
|---|---|
me->set_focus( '<controlId>' ) | Setzt den Tastatur-Fokus auf eine Komponente |
me->init_controls( ) | Ruft init( ) jeder Komponente der View auf und setzt damit alle Eingabekomponenten zurück (Eingabefelder, TextArea, ComboBox, CheckBox, Switch, RadioGroup, SegmentedButton, Barcode, Upload, SignaturePad, Table, DynamicFlexBox, ProgressIndicator). Reine Anzeigekomponenten wie Label, Text oder Image bleiben unverändert. |
me->set_message_toast( me->create_message_toast( iv_text = '...' ) ) | Zeigt einen MessageToast |
me->set_message_box( lo_message_box ) | Zeigt eine modale MessageBox |
me->get_controls_by_type( iv_control_type = ... ) | Liefert alle Komponenten eines Typs der View |
Geerbte Methoden
Alle Komponenten-Klassen erben von Control. Dort sind die generischen Methoden wie set_visible, set_property_value, get_control_id dokumentiert. In den einzelnen Komponenten-Seiten wiederholen wir diese Methoden nicht.
ValueState-Konstanten
Eingabe-Komponenten unterstützen Status-Hervorhebungen über die Konstanten in /mobbuild/cl_value_state:
| Konstante | Wirkung |
|---|---|
co_none | Standard, keine Markierung |
co_information | Blau |
co_success | Grün |
co_warning | Gelb |
co_error | Rot |
abap
me->get_input( 'txtEmail' )->set_value_state( /mobbuild/cl_value_state=>co_error ).
me->get_input( 'txtEmail' )->set_value_state_text( 'Bitte gültige E-Mail eingeben' ).Übersicht aller Komponenten
Die Spalte Palette nennt den Namen, unter dem die Komponente im Designer in der Komponenten-Palette erscheint; ABAP-Zugriff den Getter der gebundenen Klasse.
| Bereich | Komponente | Palette | ABAP-Zugriff |
|---|---|---|---|
| Eingabe | Input | Input | get_input |
| TextArea | TextArea | get_text_area | |
| StepInput | StepInput | get_step_input | |
| TimePicker | Time Picker | get_time_picker | |
| CheckBox | CheckBox | get_check_box | |
| ComboBox | ComboBox | get_combo_box | |
| RadioGroup | RadioGroup | get_radio_group | |
| SegmentedButton | Segmented Button | get_segmented_button | |
| Switch | Switch | get_switch | |
| Anzeige | Label | Label | get_label |
| Title | Title | get_title | |
| Text | Text | get_text_control | |
| Link | Link | get_link | |
| Icon | Icon | get_icon | |
| Image | Image | get_image | |
| InfoLabel | Info Label | get_control | |
| ObjectStatus | Object Status | get_control | |
| ObjectIdentifier | Object Identifier | get_control | |
| GenericTag | Tag | get_generic_tag | |
| ProgressIndicator | ProgressIndicator | get_progess_indicator | |
| MessageStrip | MsgStrip | get_message_strip | |
| Interaktion | Button | Button | get_button |
| Barcode-Scanner | Barcode | get_barcode | |
| SignaturePad | SignaturePad | get_signature_pad | |
| Upload | File Uploader | get_upload | |
| Listen & Tabellen | List | List | get_list |
| Table | Table | get_table | |
| Grid Table (ohne eigene Seite) | Grid Table | get_ui_table (Klasse /mobbuild/cl_ui_table) | |
| Container | FlexBox | FlexBox | get_control |
| DynamicFlexBox (im Designer kein Container) | DynamicFlexBox | get_dynamic_flex_box | |
| Panel | Panel | get_control | |
| IconTabBar | IconTabBar | get_icon_tab_bar | |
| Scroll Container (ohne eigene Seite) | Scroll Container | get_control | |
| SimpleForm (ohne eigene Seite) | SimpleForm | get_control | |
| Spacer (ohne eigene Seite) | Spacer | get_control | |
| Tiles | Tile | Tile, Tile Numeric Content, Tile Image / Icon, Tile Feed Content | get_tile, get_tile_numeric, get_tile_image, get_tile_feed |
| Numeric Content (ohne eigene Seite) | Numeric Content | get_numeric_content (Klasse /mobbuild/cl_numeric_content) | |
| Dialoge | MessageToast | – (nur aus ABAP) | create_message_toast |
| MessageBox | – (nur aus ABAP) | create_message_box |
Komponenten ohne eigene ABAP-Klasse (FlexBox, Panel, Scroll Container, SimpleForm, Spacer, InfoLabel, ObjectStatus, ObjectIdentifier) erreichen Sie über me->get_control( '<controlId>' ) als /mobbuild/cl_control-Referenz und setzen ihre Attribute mit set_property_value – siehe Control (Basis).
Nächste Schritte
- Control (Basis) – geerbte Methoden für alle Komponenten
- Backend-Anbindung – ABAP-Klasse mit der View verbinden