Einbinden einer eigenen CSS Styleklasse in SAPUI5® Controls

Die visuelle Darstellung eines SAP UI5 Controls kann mit mehreren Möglichkeiten angepasst werden. Eine Möglichkeit besteht darin, eine eigene CSS Style Klasse zu definieren und an das SAP UI5 Control anzuhängen.

Erweiterung der SAP UI5 INDEX Datei

In der index.html Datei wird die neue Style Klasse hinzugefügt:

democssclass1

Anpassung im SAP UI5 View

Im SAPUI5 View kann die neue CSS Style Klasse nun mit der Methode addStyleClass an ein SAPUI5 Control angehängt werden:

democssclass2

Darstellung des SAP UI5 Controls

Wie erwartet sieht dann das gewünschte Ergebnis (weißer Text, kursiv auf schwarzem Hintergrund) wie folgt aus:

democssclass3

Wie eine Smartwatch mein Leben verändert hat

Pebble TimeIch war schon länger auf der Suche nach einem smarten Begleiter für mein Handgelenk. Aber bisher hat mir keines dieser Dinger so recht zugesagt. Die wenigen, die mir auch optisch halbwegs gefallen haben, sind aus verschiedenen Gründen ausgeschieden:

  • Zu kurze Akkulaufzeit
  • Ungenügender Wasserschutz
  • Zu hoher Preis
  • Nicht kompatibel mit Android Phones

Dann hat aber Pebble die Pebble Time via Kickstarter angekündigt. Ich hätte diese Smartwatch nicht besser für mich designen können. Das Aussehen, die Leistung, die Funktionen – alles ist so ziemlich genau so, wie ich es designen würde. Wer braucht schon ein WLAN in der Uhr oder eine SIM Karte. – Ich jedenfalls nicht. Ich will ein Ding welches mir mein Leben erleichtert und nicht verkompliziert.

Der Bestellprozess bei Kickstarter war eigentlich recht einfach, auch wenn meine Kreditkartenfirma vorsorglich meine Karte gesperrt hat. Ihnen sei das Unternehmen „Kickstarter“ dubios vorgekommen.

Was bringt mir die Pebble?

Welch Überraschung: Die primäre Aufgabe liegt schlichtweg darin, mir die aktuelle Uhrzeit anzuzeigen. In einem von mir ausgewählten Watchface.

Das nächste entscheidende Feature einer Smartwatch liegt für mich darin, mich über verschiedenste Ereignisse – die ich selber steuern kann – am Laufenden zu halten:

  • Eingehende MailsPebble Time
  • Eingehende/Versäumte Anrufe
  • Anstehende Termine
  • Etc.

Auch das gehört natürlich zu den Kern-Funktionen einer Pebbel Time und wurde von Pebble ideal umgesetzt. Pebble ist sogar noch einen Schritt weiter gegangen und hat die Timeline eingeführt. In der Timeline findet man vergangene oder zukünftige Ereignisse chronologisch gereiht.

Dann wären da noch die Apps die mir mein Leben erleichtern. Beispielsweise im Sport, beim Radfahren oder Laufen. – Das Handy ist in der Tasche, die Pebble zeigt mir die wichtigsten Informationen von Runtastic oder Strawa an.

Das Killerargument hat aber nichts mit Features und Funktionen zu tun. Der Akku hält tatsächlich die angekündigten 7 Tage. Und das bei permanenten Farbdisplay. Da kann keine derzeit am Markt befindliche Uhr mithalten.

Aussehen

Normalerweise stelle ich immer den Zweck und die Funktion über das Design. Aber die anderen Smartwatches waren ganz einfach hässlich. Ich bin ein Kind der 80er, bin mit Commodore, Zurück in die Zukunft und VHS Rekordern aufgewachsen. Und diese Uhr erinnert mich einfach an diese sehr coole Zeit.
Ich programmiere wieder C!

Ein nicht unwesentlicher Entscheidungsgrund für die Pebble war die Tatsache, dass man relativ einfach eigene Watchfaces oder Watchapps entwickeln kann. Am Anfang war es etwas holprig, aber nach und nach bin ich wieder in die Entwicklung mit C reingekommen.

Und jetzt, nach 3 Monaten Pebble

Abgesehen von ein paar Kratzern bin ich nach wie vor begeistert von der Uhr. Früher hab ich keine Uhren getragen, jetzt bin ich wieder auf den Geschmack gekommen. Bevor ich in der Früh meine Wohnung verlasse, schnalle ich mir die Pebble um. Tag für Tag.

 

Update nach 5 Jahren

In der Zwischenzeit wurde Pebble durch Fitbit (und Fitbit durch Google) gekauft. Die Uhr wurde sofort eingestellt und die Server sind nun auch schon seit einiger Zeit abgedreht. Es hat sich aber ein Fangemeinde gefunden welche unter dem Projekt Rebble die Uhren I(bzw. die Server) am leben hält. Ich verwende die Uhr derzeit unregelmäßig da ich relativ viele Uhren habe und immer wieder wechsle.

ABAP® 7.02 New Features – Neue Stringfunktionen

SAP hat mit SAP NetWeaver 7.02 im ABAP Stack einige neue, interessante Stringfunktionen hinzugefügt. Die neuen Funktionen ersetzen einerseits bestehende ABAP Kommandos, andererseits liefern die Funktionen teilweise völlig neue Funktionalitäten. Nachfolgend gehe ich auf die einzelnen Stringfunktionen näher ein und zeige anhand von Beispielen die Anwendung der Funktionen.

cmax/cmin – Zeichenartige Extremwertfunktion

Mit den neuen Extremwertfunktionen cmax bzw. cmin können bis zu 9 zeichenartige Argumente verglichen werden und man erhält die größte oder das kleinste der übergebenen Zeichen als Ergebnis. Verglichen werden die Zeichen auf Basis der verwendeten Codepage von links nach rechts.

Beispiele:

Ergebnis: AAAD

Ergebnis: AZAB

Ergebnis: AAAB

Ergebnis: 0AAC

condense – Verdichtungsfunktion

Die Zeichenkettenfunktion condense verdichtet den Inhalt einer Zeichenkette. Im Gegensatz zum ABAP Kommando bietet die Funktion darüber hinaus jedoch noch einige weitere Möglichkeiten. Beispielsweise können mit der Funktion auch führende oder endende Zeichen entfernt werden.

Nachfolgendes Beispiel entfernt die führenden und endenden X und verdichtet die X zwischen abc und def auf ein X:

Ergebnis: abcXdef

concat_lines_of – Verkettungsfunktion

Diese Funktion verkettet die Zeilen einer internen Tabelle in eine Zeichenkette. Mit dem Zusatz sep kann ein Separator als Trenner zwischen den Zeilen eingefügt werden. Mit dem folgenden Beispiel werden alle Zeilen der Tabelle TAB in einen String, getrennt durch einen Strichpunkt verkettet:

escape – Fluchtsymbolfunktion

Die Funktion escape ermöglicht das regelbasierte Ersetzen eines Strings durch Fluchtsymbole. Die möglichen Regeln sind in cl_abap_format als Konstanten definiert.

Ergebnis:

insert – Einfügefunktion

Diese Funktion ermöglicht das Einfügen einer Zeichenkette an der ersten oder einer bliebigen Stelle einer anderen Zeichenkette. Nachfolgend ein Beispiel mit dem an der bestehenden Zeichenkette an einer spezifischen Stelle eine andere Zeichenkette eingefügt wird. Nach Ausführen der folgenden Zeilen enthält l_string den Wert ‘News in ABAP‘.

match – Abgleichfunktion

Die Funktion match durchsucht einen Text nach einer bestimmten Regex-Übereinstimmung und liefert die gefundene Teilmenge zurück. Groß-/Kleinschreibung wird standardmäßig berücksichtigt, kann jedoch übersteuert werden. Für weitere Informationen zu Regex in SAP bitte die SAP Online Dokumentation verwenden.

repeat – Wiederholfunktion

Hier wird eine Zeichenkette zurückgegeben, welche den Inhalt einer anderen Zeichenkette beliebig oft wiederholt. Mir fällt aktuell keine sinnvolle Anwendung ein, aber hier jedenfalls ein Beispiel, welches die Zeichenkette ‘ABC‘ 5-mal wiederholt und in das Feld l_string stellt:

replace – Ersetzungsfunktion

Mit replace wird ein Teilbereich einer Zeichenkette durch eine Übergebene Zeichenkette ersetzt. Einerseits besteht die Möglichkeit den Teilbereich über eine Offset- bzw. Längenangabe oder über ein Regex zu ermitteln.

Beispiele:

Ergebnis: ‘ABAP xISx GOOD‘

Ergebnis: ‘ABAPISGOOD‘

reverse – Umdrehfunktion

Auch diese Funktion klingt zwar sehr interessant, aber in meinem bisherigen ABAP Leben hab ich so eine Funktion noch nicht vermisst. Trotzdem hier kurz ein Beispiel, welches als Ergebnis den Inhalt einer Zeichenkette komplett umdreht:

Ergebnis: ABAP

Für ältere SAP Systeme existiert der Funktionbaustein STRING_REVERSE welcher den gleichen Zweck erfüllt.

shift_left/shift_right – Verschiebefunktion

Diese neuen Funktionen ersetzen im Prinzip das Kommando SHIFT bieten aber mit dem SUB-Zusatz (Substring) eine zusätzliche Funktion.

Beispiele:

Ergebnis: ‘CD‘

Ergebnis: ‘CDAB‘

Ergebnis: ‘CD‘

substring, substring_… – Teilfeldfunktion

Mit Hilfe dieser neuen Funktionen kann aus einer übergebenen Zeichenkette ein Teilfeld ermittelt werden. Ein wesentlicher Vorteil dieser neuen Funktion liegt darin, dass hier auch Regular Expressions verwendet werden können. Nachfolgend Beispiele für alle vorhandenen Substring-Funktionen:

Ergebnis: ‘DEFG‘ – Bei dieser Variante ist es jedoch sinnvoller (und schneller) mit l_result = l_field+3(4) zu arbeiten.

Ergebnis: ‘DEFGH‘

Ergebnis: ‘GH‘

Ergebnis: ‘ABC‘

Ergebnis: ‘ABCDEF‘

to_upper, to_lower, to_mixed, from_mixed – Groß-/Kleinschreibungsfunktionen

Auch hier handelt es sich um Funktionen, die teilweise bestehende Kommandos ersetzen. „to_upper“ und „to_lower“ wandeln die Inhalte einer Zeichenkette in Groß- bzw. Kleinbuchstaben um. Völlig gleiches Ergebnis wie bei dem Kommando TRANSLATE TO UPPER/LOWER CASE.

Neu und interessant sind die beiden Funktionen to_mixed bzw. from_mixed. „to_mixed“ setzt alle Buchstaben ab der 2. Position in Kleinbuchstaben um. „from_mixed“ fügt von links nach rechts ab der 2. Position das erste im Zusatz sep angegebene Zeichen ein. Durch die Zusätze sep, case und min kann auf das Verhalten beider Funktionen Einfluss genommen werden.

Beispiel:

Ergebnis: ‘Cadaxo gmbh‘

translate – Umsetzfunktion

Auch hier wieder eine Funktion, die ähnlich zum bekannten ABAP Kommando TRANSLATE … USING … ist. Die Funktion liefert eine Zeichenkette zurück, bei der die Zeichen, die in FROM vorkommen durch das Zeichen ersetzt werden, welche in TO an der gleichen Stelle wie in FROM vorkommen. (Sorry für den verwirrenden Satz, einfach ein paar Mal durchlesen, dann wird’s klarer J )

Beispiel:

Ergebnis: ‘YBZD‘

distance – Ähnlichkeitsfunktion

Diese Funktion ist sehr interessant. Sie gibt den Editierabstand (Levenshtein-Distanz) zweier Zeichenketten zurück. Das ist die minimale Anzahl von Einfüge-, Lösch- oder Ersetzungsvorgängen, die notwendig sind, um die eine Zeichenkette in die andere Zeichenkette zu überführen. Mit dem Zusatz max kann ein Wert angegeben werden, der die Berechnung abbricht, sobald die Anzahl der Änderungsvorgänge größer wird. Die Verwendung der Funktion könnte z. B. bei Doublettenprüfungen interessant sein.

Beispiele:

Ergebnis: 2 (Ein „C“ und ein Leerzeichen müssen eingefügt werden)

Ergebnis: 4 (Alle Zeichen müssen ausgetauscht werden)