73D.41 Teileauswahl
Die Teileauswahl basiert auf dem infra-Modul infra:OMA (Auftragsassistent). Die prinzipielle Beschreibung der Konfigurationseinstellungen in der Sektion [INFRAOMA] entnehmen Sie bitte den infra-Systeminformationen. Hier werden die für das Einkaufsmodul implementierten Erweiterungen und Besonderheiten beschrieben.
Alle OMA-Konfigurationsdaten sind mit der ID „EinkaufAssist“ in der Sektion [INFRAOMA] hinterlegt.
73D.411 Selektorspalte
Die Möglichkeit, gezielt einzelne Ergebniszeilen in der Spalte „Auswahl“ zu markieren, wird über das Sonderfeld „$Selector“ in der Ergebnisspaltenbeschreibung „EinkaufAssist=…“ aktiviert. Damit wird automatisch auch das Kontextmenü „Auswahl aufheben“ bereitgestellt.
73D.412 SQL Sub-Queries
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.
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 gebildet aus „SQL_“+AbfrageID. 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
|
-
OMANameName der OMA-Beschreibung (hier „EinkaufAssist“).
-
NrLaufende eindeutige Nummer – bestimmt die Reihenfolge der Filter im Dialog.
-
E|MArt des Filters – „E“ = Eingabefeld, „M“ = Markierungsfeld
-
$PlatzhalterEindeutiger Name des Platzhalters, der innerhalb der SQL Sub-Queries durch den Filterwert ersetzt werden soll. Der Name muss über alle verwendeten Sub-Querieseindeutig sein.
-
TextAnzeigetext des Filters im Dialog.
-
BedingungEine Vergleichsbedingung, die beim Ersetzen des Platzhalters in der SQL Abfrage dem Filterwert vorangestellt wird (siehe Beispiel).
-
VorbelegungFormatgerechter Vorbelegungswert, mit dem der Filter im Dialog initialisiert werden soll. Die Angabe wird durch individuelle Vorbelegungen übersteuert.
-
FormatGibt das Eingabeformat des Filterfeldes im Dialog an. Das Format ist ggf. auch bei der Verwendung des Filter-Platzhalters in der SQL Abfrage zuberücksichtigen und muss ggf. per CAST oder CONVERT umgewandelt werden.
-
Beispiel:StaticFilterEinkaufAssist.3=E,Name:$Horizont,"Horizont bis",<=,RelativeDateLong(31),,dIn der SQL-Abfrage taucht folgende „where clause“ auf:WHERE EndTerm $HorizontDer 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
|
-
OMANameName der OMA-Beschreibung (hier „EinkaufAssist“).
-
NrLaufende eindeutige Nummer – bestimmt die Reihenfolge der Filter im Dialog.
-
ErgebnisnameName des Ergebnisfeldes aus einer SQL Sub-Query, über dessen Wert gefiltert werden soll.
-
TextAnzeigetext des Filters im Dialog.
-
FormatGibt 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
|
-
OMANameName der OMA-Beschreibung (hier „EinkaufAssist“).
-
NrLaufende eindeutige Nummer – bestimmt die Reihenfolge der Filter im Dialog.
-
ErgebnisnameName des Ergebnisfeldes aus einer SQL Sub-Query, von dessen Wert die Farbe der Ergebniszeile abhängig sein soll.
-
MinimumUntere Grenze des Wertes, den das Ergebnisfeld der Sub-Query annehmen darf, damit diese Farbdefinition greift.
-
MaximumObere Grenze des Wertes, den das Ergebnisfeld der Sub-Query annehmen darf, damit diese Farbdefinition greift.
-
VordergrundVordergrundfarbe, die für eine Ergebniszeile verwendet werden soll, wenn sich der Wert des Ergebnisfeldes innerhalb der angegebenen Grenzen bewegt.
-
HintergrundHintergrundfarbe, 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,redSobald 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.
73D.413 Verwendete SQL Sub-Queries
Im Folgenden werden die SQL Sub-Queries beschrieben, die innerhalb der Teileauswahl verwendet werden.
|
SQL_sqlVerwendung
| |
|
Aufgabe:
|
Zählen der unterschiedlichen Produkte, in denen das Teil in den letzten drei Jahren verwendet wurde.
|
|
Umsetzung:
|
Dispositive Bewegungen vom Typ „Reservierung“ zum Teil lesen, die entweder aktiv oder erledigt mit Status >= 30 sind.
Unterschiedliche Erzeugnisse aus zugehörigen Fertigungsauftragsköpfen der letzten 3 Jahre zählen.
Dabei ist auch ein Zugriff über die aktuelle Datenbank fürs aktuelle Jahr und auf Vorjahresdatenbanken für die beiden anderen Jahre möglich.
|
|
SQL_sqlHorizont
| |
|
Aufgabe:
|
Reichweite (in Monaten) anhand des aktuellen Lagerbestands und dem Verbrauchsmaximum aus den Verbrauchsdaten der letzten im Filter angegebenen Perioden (ggf. inkl. Aktueller Periode) und den Reservierungen der nächsten 2 Monate.
|
|
Umsetzung:
|
Lagerbestand teilen durch das Maximum aus folgenden Werten:
|
|
SQL_sqlWertLager
| |
|
Aufgabe:
|
Ermitteln des Wertes des aktuellen Lagerbestands.
|
|
Umsetzung:
|
Multiplikation des Lagerbestands mit dem Einkaufspreis aus dem Teilestamm unter Berücksichtigung von Umrechnungen zwischen Lagermengeneinheit und Einkaufsmengeneinheit.
|
|
SQL_sqlWBZ
| |
|
Aufgabe:
|
Ermitteln der (Wieder-)Beschaffungszeit in Tagen.
|
|
Umsetzung:
|
Es wird die Beschaffungszeit aus der Teil/Lieferantenbeziehung zum Hauptlieferanten gelesen (ohne Berücksichtigung der zugehörigen Beschaffungszeit). Falls nicht vorhanden, wird die Beschaffungszeit aus dem Teilestamm verwendet
|
|
SQL_sqlZustand
| |
|
Aufgabe:
|
Anzeigen, ob eine offene Anfrage oder ein offener oder abgelehnter Warenkorb zum Teil existiert.
„Abgelehnt“ hat höherer Priorität und „Warenkorb“ geht vor „Anfrage“.
|
|
Umsetzung:
|
Nicht erledigte Warenkorbposition zum Teil in den Bestellpositionen suchen (VorgArt=“W“) mit LiefDat>=heute und Feld „GPzustand“ in Bestellkopf bewerten und nach dispositiver Bewegung vom Typ „Anfrage“ suchen mit EndTerm>=heute. Abhängig vom Ergebnis werden Prioritäten (Prio) vergeben,
um bei mehreren Ergebnissen nur das „wichtigste“ anzeigen zu lassen (Top 1 Order by Prio).
|
|
SQL_sqlSignal
| |
|
Aufgabe:
|
Verfügbarkeit des Teils signalisieren. Bei gerechneter Verfügbarkeit innerhalb des im Filter ngegebenen Horizonts < 0 wird „2“ signalisiert.
Bei Unterschreitung des Meldebestands „1“ ansonsten „0“.
Das Ergebnis wird zur Färbung der Zeile in der Ergebnisliste verwendet (siehe ClrEinkaufAssist).
|
|
Umsetzung:
|
Es wird über alle nicht erledigten dispositiven Bewegungen eines Teils bis zum im Filter angegebenen Horizont summiert (Zugänge aufgrund von Bestellungen, Fertigungsaufträgen und Verträgen abzüglich Abgänge aufgrund von Kundenaufträgen und Materialreservierungen) und zum aktuellen Lagerbestand addiert.
Ist das Ergebnis negativ, wird „2“ geliefert. „2“ führt durch eine Farbbedingung zur Rotfärbung der Zeile.
|
|
Ist das Ergebnis positiv und der Lagerbestand kleiner Meldebestand, wird „1“ geliefert. „1“ führt durch eine Farbbedingung zur Gelbfärbung der Zeile.
| |
