Erscheinungsbild
Barcode
Aktiviert die Geräte-Kamera zum Scannen von Barcodes und QR-Codes. Jeder erfolgreiche Scan hängt den erkannten Wert an die Werteliste der Komponente an (getrennt durch valueDelimiter). Die ABAP-Schicht liest diese Liste über get_values( ) als Tabelle und entscheidet selbst, ob nur der erste Wert (Einzel-Scan) oder alle Werte (Mehrfach-Scan) verwendet werden.
Designer-Attribute
| Attribut | Beschreibung | Default |
|---|---|---|
controlId | Eindeutige ID | automatisch generiert |
width | Breite (CSS-Wert) | – |
valueDelimiter | Trennzeichen zwischen mehreren gescannten Werten | ; |
dialogTitle | Titel des Scan-Dialogs | – |
frameRate | Bildrate der Kamera (Bilder pro Sekunde) | 30 |
zoom | Kamera-Zoom | 1 |
preferFrontCamera | Frontkamera bevorzugen | true |
provideFallback | Eingabefeld als Rückfallebene anbieten, wenn keine Kamera verfügbar ist | true |
visible | Sichtbar | true |
spanS / spanM / spanL / spanXL | Grid-Layout | 12 |
ABAP-API
Zugriff über me->get_barcode( '<controlId>' ).
| Methode | Zweck |
|---|---|
GET_VALUES | Tabelle der gescannten Werte (STANDARD TABLE OF string) |
SET_PREFER_FRONT_CAM | Frontkamera bevorzugen |
GET_PREFER_FRONT_CAM | Liefert aktuelle Einstellung |
INIT | Setzt die Wertetabelle zurück |
GET_DIALOG_TITLE / SET_DIALOG_TITLE | Titel des Scan-Dialogs |
GET_FRAME_RATE / SET_FRAME_RATE | Bildrate der Kamera |
GET_PROVIDE_FALLBACK / SET_PROVIDE_FALLBACK | Eingabefeld als Rückfallebene |
GET_WIDTH / SET_WIDTH | Breite |
GET_ZOOM / SET_ZOOM | Kamera-Zoom |
Geerbte Methoden: siehe Control.
Beispiel: /mobbuild/cl_ex_barcode (Auszug)
Das Beispiel zeigt drei Patterns: Einzel-Scan in ein Eingabefeld, Mehrfach-Scan in eine ComboBox und das Umschalten der Kamera per Switch.
abap
METHOD on_pai.
CASE me->get_event( )->get_event_key( ).
WHEN 'ScanSingle'. me->handle_scan_single( ).
WHEN 'ScanMultiple'. me->handle_scan_multiple( ).
WHEN 'ScanPreferFront'. me->handle_scan_prefer( ).
WHEN 'PreferFront'. me->handle_prefer_front( ).
ENDCASE.
ENDMETHOD.Einzel-Scan
abap
METHOD handle_scan_single.
DATA(lt_value) = me->get_barcode( 'btnScanSingle' )->get_values( ).
IF lines( lt_value ) > 0.
me->get_input( 'txtScanSingle' )->set_value( lt_value[ 1 ] ).
ENDIF.
me->get_barcode( 'btnScanSingle' )->init( ).
ENDMETHOD.Mehrfach-Scan
abap
METHOD handle_scan_multiple.
DATA(lt_value) = me->get_barcode( 'btnScanMultiple' )->get_values( ).
me->get_combo_box( 'cbScanMultiple' )->remove_all_items( ).
LOOP AT lt_value INTO DATA(lv_value).
me->get_combo_box( 'cbScanMultiple' )->add_item(
iv_key = lv_value
iv_text = lv_value ).
ENDLOOP.
me->get_barcode( 'btnScanMultiple' )->init( ).
ENDMETHOD.Kamera dynamisch umschalten
abap
METHOD handle_prefer_front.
me->get_barcode( 'btnScanPreferFront' )->set_prefer_front_cam(
me->get_switch( 'switchPreferFront' )->get_state( ) ).
me->get_input( 'txtPreferFront' )->init( ).
ENDMETHOD.Init nach Scan
Nach dem Auswerten der Werte sollten Sie init() auf der Barcode-Komponente aufrufen – die Methode leert die Werteliste. Sonst bleiben die bisher gescannten Werte in der View erhalten und werden beim nächsten PAI zusammen mit dem neuen Wert erneut geliefert.
Events im Designer
| Event | Auslöser |
|---|---|
onScanSuccess | Scan erfolgreich (Wert(e) erkannt) |
onScanFail | Scan fehlgeschlagen / abgebrochen |