Gaudlitz David
Flexibles Selektionsfenster für ERP-Lösung 'Helper' (Objektorientierte Software-Entwicklung in Omnis
Durchführung: 06.02.2017 bis 10.03.2017
Flexibles Selektionsfenster für ERP-Lösung 'Helper'
Umfeld und Ziel der Arbeit
Als meine individuelle, praktische Arbeit habe ich ein flexibles Suchfenster mit ‚,Omnis Studio' für das Programm ‚,Helper' der Profile GmbH, bei der ich mein einjähriges Praktikum absolvieren darf, erstellt. Der Helper ist eine Enterprise Resource Planning Software, kurz: ERP-Software. Damit können Kunden, Angestellte, Offerten, Aufträge und vieles mehr verwaltet werden. Ein grosses Anliegen meines Chefs war es, dass man Kunden gezielter und effizienter suchen können soll. Bei der Realisierung sollte vor allem auf Flexibilität und Erweiterbarkeit geachtet werden. Das bedeutet, dass die Suchmasken einfach editiert und neue Suchmasken, beispielsweise für Aufträge, mit wenigen Handgriffen erstellt werden können. Um diesen Grad an Flexibilität und Erweiterbarkeit zu erreichen musste ich besonders darauf achten, in welchem Verhältnis die einzelnen Fenster meiner Suchmaske zu einander stehen und dass ich die Methoden so generisch wie möglich programmiere. ‚,Generisch' bedeutet, dass ich meinen Code nicht mit fixen Werten versehe, sondern dass die Methoden auch mit vielen verschiedenen Eingaben vom Benutzer klar kommen. Die folgende Grafik mag auf den ersten Blick etwas verwirrend auf die meisten Leser wirken, aber wenn man sie sich genauer anschaut ergibt sie durchaus Sinn. Bei den Kästchen handelt es sich hier ausschliesslich um Fenster. Die Verbindungen symbolisieren das Verhältnis zwischen den einzelnen Fenstern. Für meine Arbeit habe ich alle Fenster bis auf ‚,FKO_DatumSpot' selbst programmiert. Ich habe einige Fenster und Verhältnisse weggelassen, da sonst der Rahmen dieses Web-Summarys gesprengt wird und die Übersicht darunter leidet.

Beschreibung der Arbeit und der Lösung
Das Fenster ‚,FKU_Selektion' entspricht der Kundensuchmaske. Das ist das Fenster, welches der Benutzer aus einem anderen Fenster mit einem Button aufrufen kann und anschliessend vor sich sieht. Dieses Fenster ist ein sogenanntes ‚,Kind ' von ‚,FSY_Selektion'. Das bedeutet, dass es die grafischen Elemente wie Buttons und Eingabefelder, sowie den Code aus ihrem ‚,Elternfenster' übernimmt. Der gleiche Code muss so nur einmal geschrieben werden, kann jedoch in mehreren Kindern verwendet werden. In der Grafik ist ersichtlich, dass ‚,FSY_SSelekFeldSuper' ebenfalls ein ‚,Elternfenster' ist und seine Methoden und grafischen Elemente an die ‚,Kinderfenster' ,FSY_SSelekFeldText', ‚,FSY_SSelekFeldZahl' und ‚,FSY_SSelekFeldDatum' vererbt. Hier wird der Vergleichsoperator ausgewählt und der Vergleichswert eingegeben. In diesen Fenstern werden die geerbten Methoden erweitert und neue wichtige Methoden erstellt. Im Fenster ‚,FSY_SSelekFeldDatum' wird zum Beispiel eine Methode benötigt, die das Format des eingegebenen Datums überprüft und den Benutzer auf Eingabefehler hinweist. Diese Methode ist in den anderen Fenstern überflüssig, da nur hier ein Datum eingegeben werden soll. Ähnliche Methoden sind auch in den anderen ‚,Kinderfenstern' von ‚,FSY_SSelekFeldSuper' implementiert worden. Bei Zahlenfenstern werden nur numerische Werte akzeptiert und so weiter. Zusätzlich kann im Datumsfenster ‚,FSY_SSelekFeldDatum' ein Kalender ‚,FKO_DatumSpot' mit der Taste ‚,Insert' aufgerufen werden. Damit kann ein Datum ausgewählt werden, welches anschliessend in das Datumsfeld eingetragen wird. So spart man sich das Eingeben des Datums via Tastatur.
Will man nach Kunden suchen, kann man mehrere Kriterien definieren, die die Ergebnisse erfüllen sollen. In meiner Arbeit wären das bei der Kundensuche der Firmenname, die Postleitzahl, der Ort, das Erfassungsdatum, der Kundenstatus, der Kundenbetreuer und der Sachbearbeiter. Meine Subwindows (Kinder von FSY_SSelekFeldSuper) sind so konzipiert, dass das Fenster beliebig erweitert werden kann. Wünscht sich ein Kunde von Profile GmbH, dass man Kunden auch mit Hilfe ihrer E-Mail Adresse finden kann, kann vom Entwickler in ‚,FKU_Selektion' einfach ein weiteres Subwindow (FSY_SSelekFeldText) eingefügt werden.
Um einen Vergleich aufstellen zu können, benötigt es natürlich einen Vergleichsoperator. Ich habe eine Methode geschrieben, die mit Hilfe des Subwindow-Typs (Text,Zahl oder Datum) die passenden Operatoren (z.B. =,!=,,=) in eine Auswahlliste schreibt. So schreibt die Methode in die Liste eines Text-Subwindows nur Operatoren, mit denen man Texteingaben vergleichen kann. Hier gibt es einige spezielle Operator wie zum Beispiel ‚,enthält' und ‚,beginnt mit', mit denen ein Kriterium definiert werden kann. Der Wert, der verglichen bzw. nach dem gesucht werden soll, wird in ein normales Eingabefeld im Subwindow (FSY_SSelekFeldXXXXX) eingegeben.
Man kann so viele Kriterien definieren, wie Subwindows in der Suchmaske vorhanden sind. Bestätigt man seine Eingabe, werden die Operatoren und eingegebenen Werte aus den Subwindows gelesen und von mehreren Methoden im Superfenster ‚,FSY_Selektion' zu einem Select-Befehl ‚,übersetzt'. Dieser könnte zum Beispiel so aussehen:
SELECT * FROM DKunden WHERE KU_FIRMA LIKE ‚,Pr%',
Schickt man diesen Befehl an die Datenbank, in der alle Kunden, Leistungen, Projekte, angestellt usw. enthalten sind, wird eine Liste aller Kunden angezeigt, deren Name mit ‚,Pr' anfängt. Die Ergebnisse wären zum Beispiel ‚,Profile GmbH' oder ‚,Prada'. Diese Select-Befehle können je nach der Anzahl der Kriterien sehr lange werden.
Zusammenfassend kann man sagen, dass der Endbenutzer somit schnell und einfach Kriterien definieren kann und eine Liste der Funde angezeigt bekommt.