[INFRAOMA]
Die Angaben in dieser Sektion beziehen sich auf den infra-Auftragsassistenten (Order Management Assistant = OMA), der über einen Eintrag in der Sektion [PLUGIN] in infra:NET eingebunden werden kann. Für den Auftragsassistenten ist eine Lizenzierung erforderlich.
Der Auftragsassistent unterstützt den Anwender in der Standardkonfiguration beim Bearbeiten und Erfassen von Angeboten, Kundenaufträgen und Bestellungen. Eine komfortable und intuitive Such- und Sortierfunktion, die bei Bedarf über Einstellungen in der Sektion [INFRAOMA] an die Wünsche eines Anwenders angepasst werden kann, unterstützt den Anwender bei den Arbeitsschritten Angebots-, Auftrags-, Kunden-, Bestellungs-, Lieferanten- und Teileauswahl.
Der Assistent existiert in 2 unterschiedlichen Versionen,
-
einer SQL-Version (infraoma2) und
-
einer Version ohne SQL (infraoma).
Welche Version verwendet wird, bestimmt die in der Sektion [PLUGIN] beim Schlüssel „OMA=…“ angegebene Plugin-DLL:
[PLUGIN]
|
OMA=INFRAOMA;
|
Aktiviert OMA ohne SQL
|
|
OMA=INFRAOMA2;
|
Aktiviert OMA mit SQL
|
Der SQL-basierte Assistent bietet erweiterte Möglichkeiten gegenüber der Version ohne SQL. Die Unterschiede sind weiter unten in einem eigenen Abschnitt beschrieben.
Standardfunktionen (mit und ohne SQL)
Assistance_DialogID = AssistentName, DateiIndex, PfadIndex, Spezial, IMADatei, IMAFeldIndex
Assistance_DialogID.FeldID = …
Der Eintrag bildet die Basis für die Anzeige des infra-Auftragsassistenten. Die Beschreibung des Assistenten legt fest, zu welchem infra-Dialog (DialogID aus GRIT-Editor) das Assistentenfenster angezeigt werden soll, unter welchem Namen die weiteren Konfigurationsdaten des Assistenten in der Sektion [INFRAOMA] beschrieben sind (AssistentName) und aus welcher infra-Datenbankdatei Daten in der Auswahlliste des Assistenten angezeigt werden sollen (DateiIndex).
Ist durch den angezeigten Dialog nicht allein zu entscheiden, ob ein Assistent angezeigt werden soll, so kann auch zusätzlich zur DialogID die FeldID eines Feldes innerhalb des Dialogs angegeben werden. Der Assistent wird dann aufgerufen, sobald der Eingabefokus auf das angegebene Feld gesetzt wird (zum Beispiel beim Programmstart).
Die einzelnen Angaben haben folgende Bedeutung:
|
AssistentName
|
Eindeutiger Name (ohne Sonder- oder Leerzeichen), der als Schlüssel für die weiteren Einstellungen (wie zum Beispiel Filter und anzuzeigende Listenspalten) innerhalb der Sektion [INFRAOMA] dient.
|
|
DateiIndex
|
Index der Leitdatei, aus der die in der Auswahlliste des Assistenten angezeigten Zeilen gelesen werden (Beispiel: 6 = Teilestamm). Der Eintrag PfadIndex bestimmt dabei, über welchen Zugriffspfad und damit in welcher Reihenfolge die Daten aus der Tabelle gelesen werden.
|
|
PfadIndex
|
Index des Zugriffspfades, über den die Daten aus der Leitdatei DateiIndex gelesen werden. Auch wenn die in der Auswahlliste des Assistenten angezeigten Daten beliebig nach jeder Spalte sortiert werden können, bestimmt der Zugriffspfad, in welcher Reihenfolge die Daten aus der Datenbank gelesen werden. Das ist besonders für die Performance und die Wirkung der für den Assistenten definierten Filter zu berücksichtigen: Wird ein Filter über das Schlüsselfeld des verwendeten Zugriffspfades definiert, so ist der Aufbau der Auswahlliste wesentlich performanter, als bei der Verwendung eines Filterfeldes, das nicht dem Schlüssel des benutzten Zugriffspfades entspricht.
|
|
Spezial
|
Hier kann eine fest im Programm beschriebene Sonderbehandlung für den Assistenten verwendet werden. Derzeit sind die Sonderbehandlung "Teil" und "Pos" definiert.
Die Sonderbehandlung "Teil" stellt den Mechanismus für die Auswahl und Übernahme von Teilen in Angebote, Aufträge und Bestellungen zur Verfügung. Außerdem wird im unteren Bereich des Assistenten der teilebezogene Kopftext zum markierten Teil angezeigt.
Die Sonderbehandlung "Pos" blendet im unteren Bereich des Assistenten eine Liste mit Datensätzen aus einer über den Eintrag "TablePosAssistentName" definierbaren Koppeldatei zum jeweils markierten Eintrag der Auswahlliste des Assistenten ein. Das kann zum Beispiel genutzt werden, um die Auftragspositionen des markierten Auftrags anzuzeigen.
|
|
IMADatei
|
Diese IMA-Datei wird bei der Auswahl einer Zeile der Auswahlliste des Auftragsassistenten (zum Beispiel durch Doppelklick oder Entertaste) ausgeführt, um auf die Auswahl zu reagieren. Dazu wird der Inhalt der im Parameter "IMAFeldIndex" angegebenen Spalte aus der ausgewählten Zeile in der Globalvariablen GV_OMA_value zur Verfügung gestellt und kann somit in der IMA verwendet werden.
Ausnahme: Bei der Sonderbehandlung "Teil" (siehe Spezial) wird die IMA-Datei genau einmal für jede ausgewählte Teilezeile aufgerufen. Dabei wird zusätzlich in der Globalvariablen GV_OMA_menge die im Assistenten eingegebene Menge für die jeweilige Teilezeile an die IMA-Datei übergeben. In der Globalvariablen GV_OMA_return kann aus der IMA-Datei im Fehlerfall ein Fehlercode (ungleich 0) an den Assistenten zurückgegeben werden, um die Übergabe der ausgewählten Teilezeilen abzubrechen.
Diese Funktionalität wird genutzt, um im Erfassmodus für Angebote, Kundenaufträge und Bestellungen Angebots-, Auftrags- bzw. Bestellzeilen aus den in der Auswahlliste des Assistenten selektierten Teilen zu generieren.
|
|
IMAFeldIndex
|
Hier wird angegeben, aus welcher Spalte der ausgewählten Zeile ein Wert an die auszuführende IMA-Datei übergeben werden soll. Dabei wird der Feldindex des zu übergebenden Feldes der Leitdatei (DateiIndex) des Assistenten angegeben. Das angegebene Feld muss Bestandteil der angezeigten Auswahlliste sein, also als Spalte definiert sein. Der Inhalt der Spalte wird bei der Auswahl einer Zeile mit Doppelklick (oder Entertaste) in der Globalvariablen GV_OMA_value an die aufzurufende IMA-Datei (siehe IMADatei) übergeben.
|
Beispiel
Für den Dialog AUF435_2 (Kundenauftragsbearbeitung im Modus Ändern) wird der Assistent "Auftrag" definiert, der Kundenaufträge aus Datei 38 (KKOPF) über den Zugriffspfad 5 (Status, Kunde, Auftrag) zur Auswahl anbiete. Zusätzlich sollen die Positionszeilen eines im Assistenten markierten Auftrags angezeigt werden (Sonderbehandlung "Pos"). Bei der Auswahl eines Auftrags soll der Inhalt des Feldes 1 (Auftragsnummer) in der Globalvariablen GV_OMA_value an die IMA-Datei "OMA43538.IMA" übergeben werden:
Assistance_AUF435_2=Auftrag,38,5,Pos,OMA43538.IMA,1
AssistentName = FeldID1, FeldID2, (Koppelausdruck1), (Koppelausdruck2)…
Dieser Eintrag definiert die in der Auswahlliste anzuzeigenden Spalten des als AssistentName angegebenen Assistenten. Dazu können die gewünschten FeldIDs aus der beim Assistance-Eintrag angegebenen Leitdatei für die Anzeige angegeben werden. Auch aus Dateikopplungen kann angezeigt werden, die Angaben müssen dann in Klammern stehen. Koppelausdrücke liefern ein Feld aus einer Koppeldatei und haben folgenden Aufbau:
(Koppelname:DateiIndex,PfadIndex,Koppelnummer,FeldID)
(Koppelname: FeldID)
|
Koppelname:
|
Eindeutiger Name, über den eine einmal vollständig beschriebene Kopplung innerhalb des durch AssistentName definierten Assistenten wiederverwendet werden kann, um weitere Felder aus der jeweiligen Koppelung anzuzeigen. Bei den weiteren Feldern entfällt dann die Angabe von DateiIndex, PfadIndex und Koppelnummer.
|
|
DateiIndex
|
Index der Koppeldatei, aus der ein Feld in der Auswahlliste angezeigt werden soll. Die Verbindungsdaten für die zwischen der Leitdatei des Assistenten (siehe "Assistance"-Eintrag) und der hier durch DateiIndex, PfadIndex und Koppelnummer beschriebenen Kopplung, müssen in der infra-Tabelle VIEWPAR (Menü 9953) hinterlegt sein. Beim Zugriff auf die Koppeldatei wird nur der erste zutreffende Datensatz für die anzuzeigenden Felder verwendet.
|
|
PfadIndex
|
Index des für den Zugriff auf die mit DateiIndex angegebene Koppeldatei zu verwendenden Zugriffspfades.
|
|
Koppelnummer
|
Laufende Nummer für die Verbindung zwischen Leitdatei und Koppeldatei aus der infra-Tabelle VIEWPAR.
|
|
FeldID
|
Index des Feldes aus der Koppeldatei, das in der Auswahlliste des Assistenten als Spalte angezeigt werden soll.
|
Beispiel:
Neben einigen Feldern aus der Leitdatei 38 (Auftragskopf) sollen die Felder 4 und 16 aus der Koppeldatei 41 (Kundenstamm) und das Feld 11 aus der Koppeldatei 42 (Adressen) angezeigt werden.
Auftrag=1,13,(Kunde:41,1,1,4),(Kunde:16),(Versand:42,1,1,11),19,3,2,38,28
ClrAssistentName.Nr = FeldID, Mindestwert, Maximalwert, FarbeVordergrund, FarbeHintergrund
Der infra-Assistent kann Zeilen der Auswahlliste abhängig von den Daten der jeweiligen Zeile farbig markieren, um so zum Beispiel auf den ersten Blick den Zustand eines angezeigten Auftrags erkennen zu können. Um die passende Farbe zu ermitteln, werden die Clr-Einträge des jeweiligen Assistenten entsprechend ihrer fortlaufenden Nummern (Nr) aufsteigend geprüft, bis der erste Eintrag gefunden wird, der zu den Daten der jeweiligen Zeile passt. Dieser Eintrag bestimmt dann die Farbe der Zeile.
|
FeldID
|
Index des Feldes aus der Leitdatei des Assistenten, das mit dem Mindest- und Maximalwert dieses Eintrags verglichen werden soll. Liegt der Inhalt des Feldes innerhalb der angegebenen Grenzen, werden die Farbangaben dieses Eintrags für die jeweilige Zeile verwendet.
|
|
Mindestwert
|
Untere Grenze für das angegebene Feld, ab der diese Farbangabe verwendet werden soll. Der Inhalt des Feldes der Leitdatei muss zwischen Mindest- und Maximalwert liegen (inklusive). Die Angabe der Grenzen muss formatgerecht erfolgen, dass heißt ggf. mit führenden Leerzeichen und daher in doppelten Hochkommata.
|
|
Maximalwert
|
Obere Grenze für das angegebene Feld, bis zu der diese Farbangabe verwendet werden soll. Die Angabe muss ebenfalls formatgerecht erfolgen.
|
|
FarbeVordergrund
|
Schriftfarbe, die für eine Zeile der Auswahlliste verwendet werden soll, wenn der Inhalt des angegebenen Feldes zwischen Mindest- und Maximalwert liegt. Als Farbangabe sind die Farbnamen entsprechend der Clr-Einträge der Sektion [LAYOUT] zulässig.
|
|
FarbeHintergrund
|
Hintergrundfarbe, die für eine Zeile der Auswahlliste verwendet werden soll, wenn der Inhalt des angegebenen Feldes zwischen Mindest- und Maximalwert liegt. Als Farbangabe sind die Farbnamen entsprechend der Clr-Einträge der Sektion [LAYOUT] zulässig.
|
Beispiel:
Im Assistenten für die Auswahl eines Kundenauftrags sollen die angezeigten Aufträge wie folgt farbig markiert werden:
erledigte Aufträge (Status E) - rote Zeile mit schwarzer Schrift
Zustand größer/gleich 60 - rote Zeile mit weißer Schrift
Zustand zwischen 50 und 59 - orange Zeile mit schwarzer Schrift
Zustand zwischen 40 und 49 - gelbe Zeile mit schwarzer Schrift
Zustand zwischen 20 und 39 - grüne Zeile mit schwarzer Schrift
ClrAuftrag.1=2,"E","E",black,red
ClrAuftrag.2=3,"60","99",white,red
ClrAuftrag.3=3,"50","59",black,orange
ClrAuftrag.4=3,"40","49",black,yellow
ClrAuftrag.5=3,"20","39",black,green
ColumnsPosAssistentName = FeldID1, FeldID2, (Koppelausdruck1), (Koppelausdruck2)…
Dieser Eintrag definiert die für die Sonderbehandlung „Pos“ in der Zusatzliste des als AssistentName angegebenen Assistenten anzuzeigenden Spalten aus der laut Eintrag "TablePosAssistentName" angegebenen Koppeldatei. Dazu können die gewünschten FeldIDs der aus der Koppeldatei anzuzeigenden Felder oder Koppelausdrücke in Klammern angegeben werden. Koppelausdrücke liefern ein Feld aus einer weiteren Koppeldatei, zu der aus der bei "TablePosAssistentName“ angegebenen Datei gekoppelt wird und haben folgenden Aufbau:
(Koppelname:DateiIndex,PfadIndex,Koppelnummer,FeldID)
(Koppelname: FeldID)
|
Koppelname:
|
Eindeutiger Name, über den eine einmal vollständig beschriebene Kopplung innerhalb des durch AssistentName definierten Assistenten wiederverwendet werden kann, um weitere Felder aus der jeweiligen Kopplung anzuzeigen. Bei den weiteren Feldern entfällt dann die Angabe von DateiIndex, PfadIndex und Koppelnummer.
|
|
DateiIndex
|
Index der Koppeldatei, aus der ein Feld in der Zusatzliste angezeigt werden soll. Die Verbindungsdaten für die zwischen der Datei der Zusatzliste (siehe "TablePos"-Eintrag) und der hier durch DateiIndex, PfadIndex und Koppelnummer beschriebenen Kopplung, müssen in der infra-Tabelle VIEWPAR (Menü 9953) hinterlegt sein. Beim Zugriff auf die Koppeldatei wird nur der erste zutreffende Datensatz für die anzuzeigenden Felder verwendet.
|
|
PfadIndex
|
Index des für den Zugriff auf die mit DateiIndex angegebene Koppeldatei zu verwendenden Zugriffspfades.
|
|
Koppelnummer
|
Laufende Nummer für die Verbindung zwischen Datei der Zusatzliste und Koppeldatei aus der infra-Tabelle VIEWPAR.
|
|
FeldID
|
Index des Feldes aus der Koppeldatei, das in der Zusatzliste des Assistenten als Spalte angezeigt werden soll.
|
Beispiel
Für den Assistenten "Auftrag" soll eine zusätzliche Liste zur Anzeige der Auftragspositionen eines markierten Auftrags im Assistentenfenster definiert werden. Dazu muss in der Assistentenbeschreibung ("Assistance_...") die Sonderbehandlung "Pos" eingetragen werden. Die Daten der Auftragspositionen werden aus der Koppeldatei 47 über Pfad 1 und Koppelnummer 1 gelesen. Zu den Auftragspositionen sollen in der Liste Felder aus weiteren Koppeldateien (Teilestamm und dispositive Bewegung) angezeigt werden.
TablePosAuftrag=47,1,1
ColumnsPosAuftrag=11,1,13,(Teil:6,1,1,4),(Dispo:23,4,1,22),(Dispo:33),3,24,(Dispo:32)
DefSortAssistentName = FeldID
Für die erste Anzeige des Assistenten kann hier die FeldID eines Feldes der Leitdatei des jeweiligen Assistenten angegeben werden, nach der die Auswahlliste bei der Anzeige sortiert werden soll. Diese Angabe hat keine Auswirkung auf die Reihenfolge, in der die Daten aus der Leitdatei des Assistenten gelesen werden (siehe "Assistance"-Eintrag). Die Spalte, nach der die Auswahlliste sortiert wird, kann jederzeit vom Anwender durch Anklicken der Spaltenüberschriften geändert werden. Die zuletzt verwendete Sortierspalte wird in der sitzungsabhängigen GUI-Datei des Arbeitsplatzes gespeichert.
Beispiel
Die Auswahlliste des Assistenten "Auftrag" soll zunächst nach der Auftragsnummer (Feld 1 der Leitdatei) sortiert werden.
DefSortAuftrag = 1
PreScanAssistentName = Yes (Default: No)
Bei umfangreichen Daten bietet der Assistent zur Steigerung der Anzeigeperformance die Möglichkeit, die anzuzeigenden Daten der Auswahlliste des jeweiligen Assistenten bereits beim infra-Start im Hintergrund einzulesen. Die Daten werden dann im Hauptspeicher gehalten und werden dort beim Anzeigen des Assistenten direkt ohne weitere Datenbankzugriffe abgerufen. Große Datenmengen stehen so sehr schnell zur Auswahl zur Verfügung, sind allerdings damit nicht hochaktuell. Darauf wird beim Aufruf des jeweiligen Assistenten in der Hinweiszeile hingewiesen. Die angezeigten Daten (und damit auch die Daten im Zwischenspeicher) können allerdings jederzeit mit der Funktionstaste F5 aktualisiert werden. Beim Vorlesen der Daten werden alle Filtereinstellungen und die zuletzt gespeicherten Vorbelegungen der Filterfelder berücksichtigt, so dass nur die Daten aus der Datenbank im Zwischenspeicher abgestellt werden, die auch tatsächlich beim ersten Aufruf des Assistenten angezeigt werden müssen.
RangeFilterAssistentName.Nr = FeldID, Filtertext, Übernahmespalte
Diese Einträge mit fortlaufenden Nummern (Nr) dienen zur Beschreibung von Bereichs-Filtern für den mit AssistentName im jeweiligen "Assistance"-Eintrag definierten Assistenten, die im rechten oberen Bereich des Assistenten - neben den exklusiven Filtern - zur Verfügung gestellt werden sollen (wenn keine exklusiven Filter definiert sind, werden die Bereichs-Filter im linken oberen Bereich angezeigt). Die fortlaufende Nummer muss eindeutig sein und bestimmt die Reihenfolge, in der die Filter im Dialog angeboten werden. Alle im Assistenten angebotenen Filter werden UND-Verknüpft. Damit ein Datensatz in der Auswahlliste angezeigt wird, müssen also alle Filterangaben erfüllt sein.
Bereichs-Filter bestehen im Gegensatz zu exklusiven Filtern (siehe "StaticFilter") aus zwei Eingabefeldern (von/bis) zur Angabe der unteren und oberen Grenze des gewünschten Gültigkeitsbereichs. Es werden dann nur Datensätze angezeigt, deren Inhalt des Filterfeldes zwischen den eingegebenen Grenzen (inklusive) liegt.
|
FeldID
|
Index des Feldes aus der Leitdatei des Assistenten, für das dieser Filter definiert werden soll. Der Inhalt dieses Feldes wird bei der Auswahl der anzuzeigenden Datensätze mit der eingegebenen unteren und oberen Grenze verglichen.
|
|
Filtertext
|
Im Dialog des Assistenten wird dieser Text zu dem Filterfeld angezeigt.
|
|
Übernahmespalte
|
(Optional)
Dieser Eintrag gibt an, aus welcher Spalte einer markierten Zeile in der Auswahlliste des Assistenten der Inhalt beim Betätigen der F12-Taste in die untere und obere Grenze des Filterfeldes übernommen werden soll, um die Auswahl entsprechend des markierten Datensatzes zu verfeinern.
|
Beispiel:
Im Assistenten für die Auswahl eines Kundenauftrags soll eine Von/Bis-Selektion über das Erfassdatum (Feld 10) eines Kundenauftrags ermöglicht werden.
RangeFilterAuftrag.1=10,Erfassdatum
StaticFilterAssistentName.Nr = Typ, FeldID, Filtertext, Bedingung, Initialisierung, Übernahmespalte
Diese Einträge mit fortlaufenden Nummern (Nr) dienen zur Beschreibung exklusiver (statischer) Filter für den mit AssistentName im jeweiligen "Assistance"-Eintrag definierten Assistenten, die im linken oberen Bereich des Assistenten zur Verfügung gestellt werden sollen. Die fortlaufende Nummer muss eindeutig sein und bestimmt die Reihenfolge, in der die Filter im Dialog angeboten werden. Alle im Assistenten angebotenen Filter werden UND-Verknüpft. Damit ein Datensatz in der Auswahlliste angezeigt wird, müssen also alle Filterangaben erfüllt sein.
Exklusive Filter bestehen im Gegensatz zu Bereichs-Filtern (siehe "RangeFilter") aus nur einem Eingabefeld oder einem Markierungsfeld. Bleibt das jeweilige exklusive Filterfeld leer oder ist die Markierung nicht gesetzt, so wird der Filter bei der Auswahl der anzuzeigenden Datensätze im Assistenten nicht berücksichtigt. Ansonsten werden nur Datensätze angezeigt, die genau der Eingabe im Filterfeld und der für das Filterfeld hinterlegten Bedingung entsprechen.
|
Typ
|
Typ des exklusiven Filters. Ein exklusiver Filter kann ein Eingabefeld (Typ E) oder eine Markierungsfeld (Typ M) sein. Ein leeres Eingabefeld oder ein nicht gesetztes Markierungsfeld wird bei der Auswahl der anzuzeigenden Datensätze nicht berücksichtigt.
|
|
FeldID
|
Index des Feldes aus der Leitdatei des Assistenten, für das der Filter definiert werden soll. Der Inhalt dieses Feldes wird bei der Auswahl der anzuzeigenden Datensätze entsprechend der angegebenen Bedingung mit der Eingabe im Filterfeld verglichen.
|
|
Filtertext
|
Im Dialog des Assistenten wird dieser Text zu dem Filterfeld angezeigt.
Hinweis
Die Feldbeschreibung hat eine maximale Länge von 15-20 Zeichen je nach Font und Schriftgrad. Wenn der Text zu groß ist, wird er beim letzten noch passenden Leerzeichen abgeschnitten.
Beispiel
"Keine Varianten" passt, aus "Keine Variantenteile" wird "Keine".
|
|
Bedingung
|
Die Bedingung gibt an, wie der Inhalt des Feldes (FeldID) eines Datensatzes mit der Eingabe im Filterfeld verglichen werden soll, um den jeweiligen Datensatz für die Anzeige in der Auswahlliste des Assistenten zu selektieren. Nur wenn die angegebene Bedingung (und die aller anderen Filter) erfüllt sind, wird der jeweilige Datensatz in die Auswahlliste aufgenommen. Bei Markierungsfeldern muss in der Bedingung zusätzlich ein Vergleichswert angegeben werden. Ist das Markierungsfeld gesetzt, wird der Inhalt des jeweiligen Datensatz-Feldes entsprechend der angegebenen Bedingung mit dem festen Vergleichswert verglichen.
Folgende Vergleichsoperatoren stehen zur Verfügung:
< ist erfüllt, wenn Feldinhalt kleiner als Filtereingabe/Vergleichswert
<= ist erfüllt, wenn Feldinhalt kleiner oder gleich Filtereingabe/Vergleichswert
== ist erfüllt, wenn Feldinhalt gleich Filtereingabe/Vergleichswert
>= ist erfüllt, wenn Feldinhalt größer oder gleich Filtereingabe/Vergleichswert
> ist erfüllt, wenn Feldinhalt größer als Filtereingabe/Vergleichswert
!= ist erfüllt, wenn Feldinhalt ungleich Filtereingabe/Vergleichswert
|
|
Initialisierung
|
(Optional)
Vorbelegung für den Fall, dass keine eigenen Vorbelegungen über den infra Standard-Vorbelegungsmechanismus für das Filterfeld definiert sind. Eingabefelder können mit einem Text, Markierungsfelder mit 0 (=nicht gesetzt) und 1 (=gesetzt) initialisiert werden.
|
|
Übernahmespalte
|
(Optional)
Dieser Eintrag gibt an, aus welcher Spalte einer markierten Zeile in der Auswahlliste des Assistenten der Inhalt beim Betätigen der F12-Taste in das Filterfeld übernommen werden soll, um die Auswahl entsprechend des markierten Datensatzes zu verfeinern.
|
Beispiel:
Im Assistenten für die Auswahl eines Kundenauftrags soll beim Betätigen der Funktionstaste F12 der Inhalt der Spalte "Kundennummer" (hier Spalte 2) der jeweils markierten Zeile in das exklusive Filterfeld "Nur Kunde" übernommen werden.
Auftrag=1,13,(Kunde:41,1,1,4),(Kunde:16),(Versand:42,1,1,11),19,3,2,38,28
StaticFilterAuftrag.2=E,13,"Nur Kunde",==,,2
StickWindow = Yes (Default: No)
Diese Einstellung bestimmt, ob das Fenster des infra-Auftragsassistenten automatisch rechts neben dem jeweiligen Auftragsprogrammfenster platziert werden soll (StickWindow=Yes) oder frei positionierbar ist (StickWindow=No).
TablePosAssistentName = DateiIndex, PfadIndex, Koppelnummer
Wurde im "Assistance"-Eintrag in der Assistentenbeschreibung „Pos“ als Sonderbehandlung („Spezial“) angegeben, zeigt der Assistent im unteren Bereich des Assistentenfensters eine weitere Liste mit Datensätzen aus einer Koppeldatei, passend zur jeweils markierten Zeile der Auswahlliste des Assistenten an. Mit dem Eintrag „TablePos…“ wird beschrieben, aus welcher Datenbankdatei, über welchen Zugriffspfad (Reihenfolge der Datensätze) und mit welchen Koppelinformationen die Daten für diese Liste gelesen werden sollen. Die angegebene Kopplung muss in der infra-Tabelle VIEWPAR (Menü 9953) hinterlegt sein. Es werden alle Datensätze angezeigt, die den Koppelangaben entsprechen. Diese Funktion kann genutzt werden, um zum Beispiel bei der Auswahl von Angeboten oder Aufträgen eine Vorschau für die Positionszeilen eines Angebots/Auftrags zu bekommen, bevor man sich entscheidet, ein Angebot/Auftrag aus dem Assistenten zu übernehmen. Die in der Liste anzuzeigenden Spalten werden mit dem Eintrag "ColumnsPosAssistentName" beschrieben.
|
DateiIndex
|
Index der Koppeldatei, aus der die in der zusätzlichen Liste angezeigten Zeilen gelesen werden (Beispiel: 47 = Auftragspositionen). Der Eintrag PfadIndex bestimmt dabei, über welchen Zugriffspfad und damit in welcher Reihenfolge die Daten aus der Tabelle gelesen werden.
|
|
PfadIndex
|
Index des Zugriffspfades, über den die Daten aus der Koppeldatei DateiIndex gelesen werden. Auch wenn die angezeigten Daten beliebig nach jeder Spalte sortiert werden können, bestimmt der Zugriffspfad, in welcher Reihenfolge die Daten aus der Datenbank gelesen werden.
|
|
Koppelnummer
|
Laufende Nummer für die Verbindung zwischen Leitdatei und Koppeldatei aus der infra-Tabelle VIEWPAR.
|
Beispiel
(siehe ColumnsPos…)
TitlesAssistentName = Überschrift Spalte1, Überschrift Spalte2, …
Hier können Spaltenüberschriften für die Auswahlliste des als AssistentName im Eintrag "Assistance" definierten Assistenten angegeben werden. Fehlt dieser Eintrag oder eine Überschrift für eine Spalte, werden die zu den Spalten gehörenden Feldnamen aus dem DataDictionary als Überschriften verwendet.
Beispiel
TitlesAuftrag=Auftrag,Kunde,Bezeichnung,Ort,Lieferort,Referenz,Zustand,S,Wert,Liefertermin
Erweiterte Funktionen (nur mit SQL)
Gerade bei sehr großen Datenmengen bietet sich der Einsatz des SQL-basierten Assistenten (infraoma2) an. Sowohl die Darstellung als auch die Datenzugriffe sind für SQL optimiert und entsprechend performant. Die Einstellungsmöglichkeiten der SQL-Version unterscheiden sich etwas von der Nicht-SQL-Version. Grundsätzlich gelten aber die zuvor beschriebenen Konfigurationsangaben.
ConnectionString = ADO-Verbindungszeichenfolge
Für den Zugriff auf die replizierte SQL-Datenbank muss eine gültige Verbindungszeichenfolge (ConnectionString) für das verwendete Datenbanksystem angegeben werden. Wurde im "Assistance"-Eintrag in der Assistentenbeschreibung „Pos“ als Sonderbehandlung („Spezial“) angegeben, zeigt der Assistent im unteren Bereich des Assistentenfensters eine weitere Liste mit Datensätzen aus einer Koppeldatei passend zur jeweils markierten Zeile der Auswahlliste des Assistenten an.
Hinweis: Ggf. muss das Kommando-Timeout (Schlüsselwort „Command Timeout=…“) verwendet werden, da bei besonders umfangreichen Datenbeständen und komplexen Abfragesituationen (zum Beispiel im Einkaufsassistenten) der Standard-Timeout von 30 Sekunden unter Umständen überschritten werden kann.
Ohne ConnectionString-Angabe wird die universelle Verbindungsangabe StdClientConnectionString des infra:NET Servers für die Verbindung zur SQL-Datenbank verwendet. Dies ist die empfohlene Vorgehensweise.
SQL-SubQueries
In der Ergebnisliste können zusätzlich zu Feldern aus Leit- und Koppeldateien auch Ergebnisse von SQL Sub-Queries als Spalten ausgegeben werden. Damit ergeben sich nahezu unbegrenzte Ausgabemöglichkeiten.
Ergebnisse von SQL Sub-Queries können auch in Filtern und in Farbbedingungen für die Markierung von Ergebniszeilen verwendet werden. Bei Filtern besteht zum einen die Möglichkeit, einen eingegebenen Filterwert als Konstante in einer (oder mehreren) SQL Sub-Queries zu verwenden, um so zum Beispiel über die „where clause“ das Ergebnis einzuschränken oder das Ergebnis einer SQL Sub-Query als Auswahlkriterium im Filter zu nutzen.
Beispiel:
Verfügbare Menge über SQL rechnen und bei Ergebnis < 0 die entsprechenden Zeilen einfärben, siehe Einsatz in 73D Einkaufsvorgänge disponieren.
Syntax für die Verwendung von SQL Sub-Queries als Ergebnisspalte:
|
(SQL:AbfrageID,Ergebnisname)
|
|
AbfrageID
|
Verweis auf einen INI-Eintrag in der Sektion [INFRAOMA], der die SQL-Abfrage der Sub-Query enthält. Der Name des INI-Eintrags wird dabei aus „SQL_“+AbfrageID gebildet. Die AbfrageID ist frei wählbar, muss eindeutig und sollte sprechend sein.
|
|
Ergebnisname
|
Weist dem Ergebnis der SQL Sub-Query einen (eindeutigen) Namen zu, der zum Beispiel in Filtereinstellungen oder Farbbedingungen verwendet werden kann.
|
Die SQL-Abfrage, die als Sub-Query in die Ergebnisliste integriert werden soll, wird in folgender Form in der Sektion [INFRAOMA] definiert und kann sich über beliebig viele Zeilen erstrecken:
|
SQL_AbfrageID={
SQL Syntax
}
|
Die SQL-Abfrage kann dabei aus einem vollständigen Select-Statement oder einer als Spaltenbeschreibung zulässigen SQL-Syntax mit Zugriff auf die Ergebnisspalten der Leittabelle bestehen.
infra Makros in SQL Sub-Queries
Innerhalb der SQL-Syntax kann auf infra-Makros zugegriffen werden, um zum Beispiel Daten aus der INI-Datei oder Globalvariablen innerhalb der Abfrage zu verwenden. Dabei gilt folgende Syntax:
|
$Macros[Makroanweisungen]
|
Makroanweisungen Eine Aneinanderreihung beliebiger infra Makros.
Der gesamte Ausdruck wird durch das Ergebnis der Makroanweisungen ersetzt, bevor die SQL-Abfrage ausgeführt wird.
Filterangaben in SQL Sub-Queries verwenden
Der Wert eines statischen OMA-Filters kann direkt als Konstante innerhalb der SQL-Abfrage verwendet werden. Anstelle der üblichen Feldnummer auf die sich ein Filter bezieht, wird bei der Filterbeschreibung ein Platzhaltername vergeben. Dieser Platzhaltername kann dann an beliebigen (syntaktisch sinnvollen) Stellen innerhalb der SQL-Abfrage verwendet werden. Vor Ausführung der Abfrage wird der Platzhalter durch den aktuellen Filterwert ersetzt.
Syntax eines statischen Filters mit SQL-Platzhalter:
|
StaticFilterOMAName.Nr=[E|M],Name:$Platzhalter,"Text",Bedingung,Vorbelegung,,Format
|
|
OMAName
|
Name der OMA-Beschreibung (z.B. „EinkaufAssist“).
|
|
Nr
|
Laufende eindeutige Nummer – bestimmt die Reihenfolge der Filter im Dialog.
|
|
E|M
|
Art des Filters – „E“ = Eingabefeld, „M“ = Markierungsfeld
|
|
$Platzhalter
|
Eindeutiger Name des Platzhalters, der innerhalb der SQL Sub-Queries durch den Filterwert ersetzt werden soll. Der Name muss über alle verwendeten Sub-Queries eindeutig sein.
|
|
Text
|
Anzeigetext des Filters im Dialog.
|
|
Bedingung
|
Eine Vergleichsbedingung, die beim Ersetzen des Platzhalters in der SQL Abfrage dem Filterwert vorangestellt wird (siehe Beispiel).
|
|
Vorbelegung
|
Formatgerechter Vorbelegungswert, mit dem der Filter im Dialog initialisiert werden soll. Die Angabe wird durch individuelle Vorbelegungen übersteuert
|
|
Format
|
Gibt das Eingabeformat des Filterfeldes im Dialog an. Das Format ist ggf. auch bei der Verwendung des Filter-Platzhalters in der SQL Abfrage zu berücksichtigen und muss ggf. per CAST oder CONVERT umgewandelt werden.
|
Beispiel:
StaticFilterEinkaufAssist.3=E,Name:$Horizont,"Horizont bis",<=,RelativeDateLong(31),,d
In der SQL-Abfrage taucht folgende „where clause“ auf:
WHERE EndTerm $Horizont
Der Platzhalter „$Horizont“ wird zur Laufzeit durch die Filterbedingung gefolgt vom eingegebenen Filterwert ersetzt. Wurde beispielsweise „31.12.2012“ als Filterwert eingegeben, verwendet das System folgende „where clause“ innerhalb der Sub-Query:
WHERE EndTerm <=“31.12.2012“
Ergebnis einer SQL Sub-Query als Filter verwenden
Ein Bereichsfilter (RangeFilter) kann statt über ein Feld der Leitdatei auch über das Ergebnis einer SQL Sub-Query definiert werden.
Anstelle der üblichen Feldnummer auf die sich ein Filter bezieht, wird bei der Filterbeschreibung auf das zu verwendende Sub-Query Ergebnisfeld verwiesen. Der Name des Ergebnisfeldes muss dabei dem unter „Syntax für die Verwendung von SQL Sub-Queries als Ergebnisspalte“ beschriebenen Ergebnisnamen entsprechen. Bei der Ausführung der SQL-Abfrage wird das Ergebnisfeld mit den im Dialog eingegebenen Von-/Bis-Grenzen des Filters verglichen.
Syntax eines Bereichsfilters über eine SQL Sub-Query:
|
RangeFilterOMAName.Nr=SQL:Ergebnisname,"Text",,Format
|
|
OMAName
|
Name der OMA-Beschreibung (z.B. „EinkaufAssist“)
|
|
Nr
|
Laufende eindeutige Nummer – bestimmt die Reihenfolge der Filter im Dialog
|
|
Ergebnisname
|
Name des Ergebnisfeldes aus einer SQL Sub-Query, über dessen Wert gefiltert werden soll.
|
|
Text
|
Anzeigetext des Filters im Dialog.
|
|
Format
|
Gibt das Eingabeformat des Filterfeldes im Dialog an
|
Ergebnis einer SQL Sub-Query als Farbbedingung verwenden
Das Ergebnis einer SQL Sub-Query kann als Kriterium für die farbige Markierung von Ergebniszeilen verwendet werden. Anstelle der üblichen Feldnummer eines Ergebnisfeldes der Leitdatei, wird bei der Farbbeschreibung auf das zu verwendende Sub-Query Ergebnisfeld verwiesen. Der Name des Ergebnisfeldes muss dabei dem unter „Syntax für die Verwendung von SQL Sub-Queries als Ergebnisspalte“ beschriebenen Ergebnisnamen entsprechen.
Syntax einer Farbbeschreibung für ein SQL Sub-Query Ergebnisfeld:
|
ClrOMAName.Nr=SQL:Ergebnisname,"Minimum","Maximum",Vordergrund,Hintergrund
|
|
OMAName
|
Name der OMA-Beschreibung (z.B. „EinkaufAssist“).
|
|
Nr
|
Laufende eindeutige Nummer – bestimmt die Reihenfolge der Filter im Dialog.
|
|
Ergebnisname
|
Name des Ergebnisfeldes aus einer SQL Sub-Query, von dessen Wert die Farbe der Ergebniszeile abhängig sein soll.
|
|
Minimum
|
Untere Grenze des Wertes, den das Ergebnisfeld der Sub-Query annehmen darf, damit diese Farbdefinition greift.
|
|
Maximum
|
Obere Grenze des Wertes, den das Ergebnisfeld der Sub-Query annehmen darf, damit diese Farbdefinition greift.
|
|
Vordergrund
|
Vordergrundfarbe, die für eine Ergebniszeile verwendet werden soll, wenn sich der Wert des Ergebnisfeldes innerhalb der angegebenen Grenzen bewegt.
|
|
Hintergrund
|
Hintergrundfarbe, die für eine Ergebniszeile verwendet werden soll, wenn sich der Wert des Ergebnisfeldes innerhalb der angegebenen Grenzen bewegt.
|
Beispiel:
ClrEinkaufAssist.1=SQL:Signal,"2","2",black,red
Sobald sich der Wert des Ergebnisfeldes „Signal“ der entsprechenden Sub-Query (hier ist das die SQL-Abfrage, die beim Schlüssel „SQL_sqlSignal“ in der Sektion [INFRAOMA] hinterlegt ist) zwischen den Werten „2“ und „2“ bewegt (hier ist also nur ein einziger Wert zulässig), wird die entsprechende Ergebniszeile mit schwarzer Schrift auf rotem Grund ausgegeben.
Selektorspalte in Ergebnisliste
Ein Sonderfeld „$Selector“ in der Ergebnisspaltenbeschreibung bietet die Möglichkeit, gezielt einzelne Ergebniszeilen in einer Spalte „Auswahl“ zu markieren. Die so markierten Ergebniszeilen können dann von einem entsprechend vorbereiteten infra-Programm verarbeitet werden. Durch den Einbau einer Selektorspalte wird automatisch auch ein Kontextmenü „Auswahl aufheben“ auf der Ergebnisliste bereitgestellt.
Beispiel:
Eine Ergebnisspaltenbeschreibung mit Sub-Queries und Selektorspalte.
|
EinkaufAssist=$Selector,3,4,57,21,(SQL:sqlVerwendung,Verwendung),
(SQL:sqlHorizont,Horizont)
|