73D.43 Register „Lieferanten“
Felder in diesem Bereich werden teilweise durch Formeln vorbelegt. Diese Vorbelegungen sind aufgrund des Zeitpunkts der Anzeige nicht per FillControl lösbar, sondern werden direkt vom Programm aus der INI-Datei geladen. Diese speziellen Vorbelegungen sind in einer eigenen Sektion [EKA73D] definiert.
Die Lieferantenliste entsteht durch eine komplexe SQL-Abfrage, die per SQLShowResults durch FillControl ausgelöst wird.
SQL_sqlTermin
Aufgabe:
Vorbelegung des (Anfrage-/Bestell-)Terminfeldes für die Berücksichtigung von terminabhängigen Lieferkonditionen und für die Generierung von Anfragen und Warenkörben.
Umsetzung:
Es wird die Beschaffungszeit aus dem Teilestamm des aktuellen Teils zum heutigen Datum addiert.
Technik:
Vorbelegung aus Sektion [EKA73D]/ EKA73D_1_TERMIN per SQLSelect
Das Feld „Menge (Anfrage/Warenkorb)“ kann ebenfalls durch eine Formel vorbelegt werden. Standardmäßig wird das Feld mit der Preiseinheit aus dem Teilestamm vorbelegt. Um eine Formel zu hinterlegen, muss analog zum alternativen Mengenfeld (siehe „SQL_sqlVorschlagsmenge“) folgender INI-Eintrag in Sektion [EKA73D] definiert werden:
[EKA73D]
EKA73D_1_MENGE= SQLSelect(INFRAOMA,SQL_sqlVorbelegungMenge,/ISO)
In der Sektion [INFRAOMA] muss dann mit dem Schlüssel „SQL_sqlVorbelegungMenge“ die entsprechende SQL-Abfrage für die vorzubelegende Menge hinterlegt werden. Im Gegensatz zur alternativen Vorschlagsmenge (siehe „SQL_sqlVorschlagsmenge“) steht an dieser Stelle noch kein ausgewählter Lieferant in Puffer 100 zur Verfügung. Das heißt, bei der Berechnung kann lediglich auf Daten zum ausgewählten Teil und dessen direkte Abhängigkeiten zugegriffen werden. Bei der Berechnung ist auf die Umrechnung in die zu diesem Zeitpunkt ausgewählte Mengeneinheit zu achten (siehe Beispiel „SQL_sqlVorschlagsmenge“).
73D.431 Lieferantenliste
Die Lieferantenliste wird per FillControl und SQLShowResults über eine komplexe Abfrage gefüllt.
SQL_sqlLieferanten
Aufgabe:
Anzeige aller in Frage kommenden Lieferanten aus Teilestamm, Teil/Lieferantenbeziehung, Konditionen und Verträgen unter Berücksichtigung eines manuell hinzugefügten Lieferanten und Berechnung der konditions- und vertragsabhängigen Preise für diverse Staffel- und Vertragsmengen unter Berücksichtigung einer manuell eingegebenen Menge.
Umsetzung:
Innerhalb der Abfrage werden zunächst die anzuzeigenden Mengenstaffeln aus Verträgen und Liefer- konditionen bestimmt.
Zusätzlich wird die im Feld „Menge (Anfrage/Warenkorb)“ eingegebene Menge aus der Globalvariablen „GV(PV_73D_1_MENGE)“ berücksichtigt.
Den Mengen werden abhängig von ihrer Herkunft Prioritäten zugeordnet, nach denen die Mengenspalten in der Anzeige sortiert werden.
Die Mengenangabe aus der Globalvariablen hat dabei die höchste Priorität, alle anderen Mengen werden gleich behandelt und entsprechend ihrer Größe sortiert und in einer Zeichenkette gesammelt.
Anschließend werden in einer Schleife die gesammelten Mengen eine nach der anderen extrahiert und eine komplexe Abfrage mit jeweils einer Unterabfrage je extrahierter Menge zusammengebaut. Die zusammengesetzte Abfrage wird am Ende mit EXECUTE ausgeführt.
Die Markierung einer Zeile (Hauptlieferant und/oder gesperrter Lieferant) wird durch Anhängen des Markers „$$MarkRow(…)“ an einen Spaltenwert realisiert.
Spaltenwerte können mit dem Marker „$$MarkCell“ durch einen Stern markiert werden, siehe Beschreibung des SQLShowResults-Makros.
Wichtig ist bei dieser Abfrage, dass die erste Spalte der Ergebnisliste immer die Lieferantennummer enthält. Das Programm ist darauf angewiesen.
Technik:
FillControl mit SQLShowResults
SQL_sqlInfoLief
Aufgabe:
Für einen Lieferanten sollen Kontaktdaten und (falls vorhanden) Ansprechpartner in einem Popupfenster angezeigt werden.
Umsetzung:
In der Globalvariablen „GV(PV_73D_1_INFO)“ steht die Lieferantennummer des Lieferanteneintrags, auf dem sich der Mauszeiger befindet, zur Verfügung. Innerhalb der Abfrage wird ein Text zusammengesetzt, der aus den Kontaktdaten des Lieferantenstamms (EKALIEF) und eventuell vorhandenen Ansprechpartnern (ANSPRECH) besteht. Dieser Text wird am Ende per Select zurückgegeben.
Technik:
FillControl mit SQLShowResults
73D.432 Chartbereich
Die im Chartbereich dargestellten Daten stammen ebenfalls aus SQL-Abfragen. Ein Chartbereich wird durch folgende SibDef-Einträge in einem Container instanziiert:
[infraChart]
ConnectionString=INI(infraOma,ConnectionString)
Series=infraChart,Series_EKA73D
Per „ConnectionString=…“ wird die für das Chart zu verwendende Datenverbindung angegeben. Hier wird auf die in der INI-Datei hinterlegte Datenverbindung für infra:OMA verwiesen.
Über das Schlüsselwort „Series“ wird auf einen INI-Eintrag verwiesen (hier Sektion [INFRACHART] und Schlüssel „Series_EKA73D“), der die anzuzeigenden Datenserien (Diagramme) angibt:
[infraChart]
Series_EKA73D=Chart_Bestellungen,Chart_SummeAR,Chart_SummeZB
Über den Eintrag kann auf beliebig viele Datenserien verwiesen werden, die im Chartcontrol miteinander kombiniert werden sollen. Jeder Datenserie ist hier ein weiterer Verweis auf einen INI-Eintrag in der aktuellen INI-Sektion, der die Beschreibung einer Datenserie enthält:
Chart_SummeAR="Summe AR",Area1,,Spline,(infraChart,SQL_SummeAR),Interval=1, CenterMark,XGrid=None,YGrid=Dot
Der prinzipielle Aufbau eines Serieneintrags ist wie folgt:
SeriesName=“Title“,Area,Legend,Type,SQL-Query,Settings
  • SeriesName                   
    Eindeutiger Schlüssel der Serie.
  • Title                               
    Angezeigter Titel der Datenserie (wird zum Beispiel in der Legende angezeigt).
  • Area                              
    Eine frei definierbare ID für einen gemeinsamen Grafikbereich (Area). In einer Area können mehrere Serien miteinander kombiniert werden.
    Dazu muss in jeder Serienbeschreibung, die miteinander in einer Grafik kombiniert werden sollen, die gleiche Area angegeben werden.
    Sollen Serien nicht in einer Grafik kombiniert werden, sondern neben und untereinander getrennt voneinander dargestellt werden, müssen in den Serien unterschiedliche IDs als Area angegeben werden.
    Die Angabe kann auch entfallen, wenn alle Serien in einer Area kombiniert werden sollen.
  • Legend                          
    Eine frei wählbare ID für eine gemeinsame Legende. Serienbeschreibungen (insbesondere Farbzuordnungen) können in gemeinsamen Legenden oder getrennt voneinander in unterschiedlichen Legenden angezeigt werden. Für alle Serien, deren Beschreibung in einer gemeinsamen Legende angezeigt werden sollen, muss die gleiche ID angegeben werden.
    Die Angabe kann auch entfallen, wenn alle Serien in einer gemeinsamen Legende aufgeführt werden sollen.
  • Type                              
    Bestimmt in welcher Form (Charttyp) eine Datenserie angezeigt werden soll. Folgende Charttypen stehen zur Verfügung:
    Point, FastPoint, Bubble, Line, Spline, StepLine, FastLine, Bar, StackedBar, StackedBar100, Column, StackedColumn, StackedColumn100, Area, SplineArea, StackedArea, StackedArea100, Pie, Doughnut, Stock, Candlestick, Range, SplineRange, RangeBar, RangeColumn, Radar, Polar, ErrorBar, BoxPlot, Renko, ThreeLineBreak, Kagi, PointAndFigure, Funnel, Pyramid
  • SQL-Query                    
    Verweis auf die SQL-Abfrage, die die Daten für die anzuzeigende Datenserie liefert.
    Der Verweis besteht entweder nur aus einem Schlüsselwort – dann wird dieser Schlüssel in der Sektion [infraChart] vermutet – oder in runden Klammern aus einem Sektionsnamen und einem Schlüsselwort.
    Die bei dem angegebenen Schlüsselwort hinterlegte SQL-Abfrage muss eine Sammlung von X/Y-Paaren liefern. X-Werte (horizontale Achse) müssen mit dem Spaltennamen „XValue“ und zugehörige Y-Werte (vertikale Achse) mit dem Spaltennamen „YValue“ geliefert werden.
    Innerhalb der SQL-Abfrage kann mit $Macros[…] auf infra-Makros und somit auf Puffer und Globalvariablen zugegriffen werden.
  • Settings                         
    Hier können weitere Einstellungen für die darzustellende Datenserie folgen.
    Jede Einstellung muss durch Kommata von der nächsten Einstellung getrennt werden.
    Die derzeit unterstützten Einstellungsmöglichkeiten werden im Folgenden beschrieben.
Einstellungsmöglichkeiten (Settings)
Für die Darstellung einer Datenserie können weitere Einstellungen vorgenommen werden. Bei der Kombination mehrerer Datenserien in einer Area „gewinnen“ die Einstellungen der letzten Datenserie, wenn widersprüchliche Angaben bei den einzelnen Datenserien gemacht wurden.
  • Interval=x                      
    Legt die Schrittweite der Datenpunkte bezüglich der X-Achse fest. „1“ bedeutet, jeder X-Wert entspricht einer Angabe auf der X-Achse.
  • CenterMark                   
    Die Mitte der Grafik soll durch einen grünen Balken markiert werden.
  • XGrid=Typ                     
    Gibt den Rastertyp für die X-Achse an:
    None=kein Raster
    Dot=Punktraster
    Dash=Linienraster
    DashDot=Strich-Punkt-Raster
    DashDotDot=Strich-Punkt-Punkt-Raster
  • YGrid=Typ                     
    Gibt den Rastertyp für die Y-Achse an (siehe XGrid).
  • YAxis2                           
    Zusätzliche Y-Achse für diese Serie anzeigen (i.d.R. auf der rechten Seite).
  • StripLine                        
    Bereiche auf der X-Achse sollen durch zusätzliche Streifen hervorgehoben oder voneinander abgesetzt werden.
  • StripLine.Width=x           
    Gibt die Breite eines Markierungs-Streifens in Intervallen auf der X-Achse an. „1“ bedeutet dabei, der Streifen soll die Breite genau eines Intervalls haben.
  • StripLine.Offset=x          
    Gibt den Abstand des ersten Markierungs-Streifens in Intervallen ausgehend vom Startintervall an.
  • StripLine.Interval=x        
    Bestimmt, jedes wievielte Intervall durch einen Streifen hervorgehoben werden soll.
  • Area.3D                         
    Aktiviert die 3D-Darstellung für die Area, in der die aktuelle Serie angezeigt werden soll.
  • Area.Inclination=x          
    Gibt den Neigungswinkel der Grafik gegenüber dem Horizont an (bei 3D-Darstellung)
  • Area.Rotation=x             
    Bestimmt den Rotationswinkel der Grafik um den vertikalen Mittelpunkt (bei 3D-Darstellung)
  • Area.Light=x                  
    Bestimmt die Art des Licht-Effekts bei 3D-Darstellung:
    Realistic = realistisch
    Simplistic = vereinfacht
    None = kein Licht-Effekt
  • Area.Perspective=x
    Gibt den Grad der perspektivischen Verzerrung der Grafik an (bei 3D-Darstellung)