SOG-Helpcenter Logo SOG Business - Software

Auswahllisten


#Auswahllisten können an vielen Stellen innerhalb von SOG ERP verwendet werden, um aus einer Liste von möglichen Werten einen bestimmten Wert auszuwählen.
Diese Auswahllisten werden außerdem dazu verwendet, bei der Anzeige von Daten neben dem Schlüssel auch den sogenannten "Referenzwert", also den Text der Auswahlliste, der hinter dem angewählten Schlüssel steht, darzustellen.

Grundsätzlich wird unterschieden, ob eine Auswahlliste automatisch aus einer SQL Tabelle erzeugt wird, oder ob ihre Werte manuell über die SOG ERP Funktion c015 - Auswahllistenverwaltung (awlsu) hinterlegt werden.

Damit SOG ERP optimal auf Auswahllisten zugreifen kann ist es notwendig, alle Auswahllisten über das Systemkommand "soggenawl" zu generieren. Diese Generierung erfolgt jedoch meistens automatisch.
Bei dieser Generierung wird ermittelt, wo die Quelle der Auswahlliste liegt. Für jede Auswahlliste wird in der Tabelle "awlhead" ein Kopfdatensatz erzeugt, für manuelle Auswahllisten wird darüber hinaus pro Datenwert ein Datensatz in der Tabelle "awldata" abgelegt.
Das Generieren der Auswahllisten erfolgt für manuelle Auswahllisten am Ende der Bearbeitung über c015 - Auswahllistenverwaltung (awlsu) automatisch, für SQL basierende Auswahllisten entweder einmal in der Nacht als Bestandteil des p159 - ReorgJob (reorgjob), durch manuelles Starten des Programms c014 - Auswahllisten generieren (genawl) oder durch Anwahl des Systemkommandos "soggenawl" aus der Entwicklungsumgebung.

Bei der Generierung von Auswahllisten werden die folgende Informationen in der Tabelle "awlhead" zwischengespeichert:

  • Titel der Auswahlliste.

  • SQL-Anweisung(en) für den Datenzugriff.

  • Zu übersetzende Spalten.

  • Formatierung des Datenwertes für den Zugriff auf Einzeldatenwerte.

  • Formatierung des Referenzwertes.

  • Auswahllistenverwaltungsfunktion.

  • Spaltentitel.

  • Eigenschaft "Numerischer Auswahllistenschlüssel".

  • Eigenschaft "Mehrfachauswahlliste".

  • Eigenschaft Anzeige einer Textbox bei leerer Auswahl.

  • Keine Autovervollständigung.

  • Art des bevorzugten Datenzugriffs.

  • Art der Auswahlliste.

  • Sprache der Auswahlliste.

  • Anzahl Spalten.

  • Wertespalte.

  • Referenzwert Spalte.

  • Automatische Erneuerungszeit.

  • Kalkulierte Anzahl Datensätze.

  • Kalkulierte Breite des längsten Wertes.

  • Kalkulierte Höhe des höchsten Wertes.

Wird einer dieser Werte für eine SQL basierende Auswahlliste geändert, kommt dies erst dann zur Wirkung, wenn die Auswahlliste das nächste Mal generiert wird.

Ändern sich Dateninhalte von Auswahllisten, kommt die Änderung sofort zur Wirkung, sofern ActiveSkin die Auswahlliste nicht bereits in einen internen Speicher-Cache gelesen und Zwischengespeichert hat. Dieser interne Speicher-Cache kann durch drücken der Tasten Strg-5 oder durch einen Neustart von ActiveSkin aktualisiert werden. ActiveSkin sorgt jedoch darüber hinaus dafür, dass Auswahllisten in festgelegten Intervallen automatisch neu gelesen werden. Dieser Interval kann für jede SQL basierende Auswahlliste einzeln festgelegt werden. Erfolgt die Änderung eines Dateninhaltes über ActiveSkin selbst, so wird innerhalb dieser ActiveSkin Instanz sofort dafür gesorgt, dass die Auswahlliste neu gelesen wird.

Konfiguration einer SQL basierenden Auswahlliste


Bei der Generierung von Auswahllisten wird entschieden, ob es sich um einen manuelle oder eine SQL basierende Auswahlliste handelt. Um eine Auswahlliste SQL basierend zu hinterlegen ist es notwendig, eine "AWC" Datei zu erstellen.
Über die Systemumgebungsvariable "AWCPATHV2" kann hinterlegt werden, in welchen Verzeichnissen nach "AWC" Dateien gesucht wird. Ist die Variable nicht hinterlegt, gilt "${PROJ}\\awl.vorort;${PROJ}\\awl.indi;${PROJ}\\awl" als Initialwert.

Wird in einem dieser Verzeichnisse eine Datei Namens "{Auswahllistenname}.awc" gefunden, gilt die Auswahlliste als SQL basierend.

AWC-Dateien haben folgenden Aufbau:

    rem SOGID: xyz
    showcol 2
    piccol 2
    title Auftragsarten

Folgende Einträge sind möglich:

 

rem

Die Zeile wird als Kommentar betrachtet.

showcol Anzahl

Legt fest, wieviele Spalten in der Auswahllisten-Werteauswahlmaske dargestellt werden sollen.

piccol Spalte

Legt fest, in welcher Spalte sich der Pic-Wert (Schlüsselwert) befindet. (1. Spalte = 1)

refcol Spalte

Legt fest, in welcher Spalte sich der Ref-Wert (Referenzwert) befindet.

reffmt Formatangabe

Legt fest, wie Referenzwerte dargestellt werden. Dies wird z. B. in den Steuerschlüssel-Auswahllisten verwendet, um den rein numerischen Referenzwert mit Nachkommastellen darzustellen.

title Text

Legt die Überschrift der Auswahlliste in der Auswahllisten-Werteauswahlmaske fest. Die Überschrift wird über die automatsiche Übersetzungsengine in die Benutzersprache übersetzt.

translate Spalte,Spalte,...

Legt fest, welche Daten-Spalten bei der Anzeige über die automatische Übersetzungsengine übersetzt werden sollen.

lang Sprache

Legt fest, in welcher Sprache die Datenspalten erzeugt wurden. Nur Daten in der Standardsprache "ger" können automatisch übersetzt werden.

dataaccess Auswahl

Legt fest, wie bevorzugt auf die Daten der Auswahlliste zugegriffen werden soll.
0: Automatische Verfahrenswahl. Besteht überhaupt die Möglichkeit Einzeldatensätze zu lesen, wird der Einzeldatensatzmodus gewählt, wenn die Anzahl der Datensätze bei der letzten Generierung nicht größer als 200 war.
1: Bevorzugt Einzeldatensätze lesen.
2. Bevorzugt Alle Datensätze lesen

autorefresh Sekunden

Anzahl Sekunden, nach denen eine Auswahlliste durch ActiveSkin automatisch aktualisiert (neu gelesen) werden soll. Ist der Wert nicht angegeben, so gelten 3600 Sekunden (1 Stunde).

isnumeric (0/1)

Legt fest ob der Datenwert der Auswahlliste numerisch ist. Ist dies nicht festgelegt, wird das Format des Datenwertes automatisch ermittelt. 0: Nicht numerisch 1: Numerisch.

noautocomplete

Keine Autovervollständigung für diese Auswahlliste. War bei der letzte Generierung der Auswahlliste die Anzahl Datensätze größer 100, wird die ActiveSkin Autovervollständigungsfunktion automatisch abgeschaltet.

TextBoxOnEmptyAwl

Legt fest, das bei einer leeren Auswahlliste automatisch eine einfache Textbox dargestellt werden soll.

directvalueformat Format

Legt fest wie der Datenwert für den Zugriff auf einen einzelnen Datenwert formatiert werden soll. Mögliche Angaben sind:
n{Stellen}: Auffüllen des Wertes linksbündig mit Nullen, bis zur angegebenen Länge.
x{Stellen}: Auffüllen des Wertes rechtsbündig mit Leerzeichen, bis zur angegebenen Länge.

nocheck Wert

Über diese Option kann die Prüfung einer Auswahlliste beeinflusst werden.
Wert=1 bedeutet: Keine Prüfung der Auswahlliste während des soggenawl.
Wert=2 bedeutet: Keine Prüfung und keine Fehlermeldung, wenn der SingleValue-SQL mehr als einen Datensatz liefert.

alternatecol Wert

Angabe einer alternativen Wertespalte. Hier kann ein alternativer Auswahlwert vereinbart werden, der in AutoComplete-Wertelisten zusätzlich mit zur Anwahl bereit steht.

optioncol Wert

Angabe einer alternativen Spalte, die Optionen zu Werten festlegt. Siehe unten: Werte Optionen

SQL Dateien


Neben der AWC Datei, muss für eine SQL basierende Auswahlliste noch eine SQL-Datei hinterlegt werden. Auch die SQL Datei wird über die in "AWCPATHV2" hinterlegten Verzeichnisse gesucht.
Eine solche SQL-Datei kann folgenden Aufbau haben.

declare @lang char(3) = dbo.vacos_currentuserlang()

select

  hhfield(  Verkauf , hhsubstr(zeile1,1,30) ),

  hhfield(  Einkauf , hhsubstr(zeile1,31,30) ),

  hhfield(  Intern , hhsubstr(zeile2,1,30) ),

  hhfield(  Schluessel, znr )

from

  f060

where

  key_1 >= "${TBR}00" + @lang + "AART.AWL"

and key_1 <= "${TBR}00" + @lang + "AART.AWL" + hhmaxchar()

and zeile1 != " "

--single: and znr = ${parawert}

order by hhfield( Schluessel );

 

Zeilen, die mit "--single:" beginnen, werden normalerweise nicht verwendet. Sie legen jedoch fest, wie die SQL-Anweisung zur erweitern ist, um einen einzelnen Datenwert per SQL aus den Quelldaten zu lesen.
Ist keine "--single:" Zeile definiert, kann die Auswahlliste nur vollständig gelesen werden.
In den "--single:" Zeilen, stehen symbolische Begriffe zur Verfügung, um den gewünschten Datenwert festzulegen:

 

${parawert}

Datenwert als SQL Parameter. Diese Angabe ist vorzuziehen, da sie für die SQL-Datenbank optimaler bearbeitet werden kann. Der Parameterwert kann jedoch nicht als Bestandteil eines Textes verwendet werden, sondern kann nur wie in diesem Beispiel angegeben, als Einzelwert stehen. Der ${parawert} wird vor der Verwendung nicht speziell formatiert.

${fmtwert}

Datenwert als String, der in den SQLText eingesetzt wird. Der Datenwert wird zuvor wie in der AWC Datei über directvalueformat festgelegt, formatiert. Diese Methode sollte möglichst nicht mehr verwendet werden, da sie vom Datenbankserver nicht optimiert werden kann.

Generieren von Auswahllisten


Manuelle Auswahllisten müssen nicht manuell generiert werden, da die Generierung am Ende der Funktion c015 - Auswahllistenverwaltung (awlsu) automatisch erfolgt.

SQL basierende Auswahllisten müssen nicht manuell generiert werden, solange sich an den Eigenschaften und Einstellungen der Auswahlliste nichts ändert und sich die Breite des breitesten Wertes nicht verändert, oder kein Wert auf die Berücksichtigung der Breitenänderung im Maskenlayout gelegt wird.

Wird die einer SQL basierenden Auswahlliste Zugrunde liegende AWC- oder SQL-Datei geändert, oder soll eine Breitenänderung des breitesten Auswahllistenwertes sofort zur Wirkung kommen, muss die einzelne Auswahlliste über "soggenawl AwlName" einzeln, oder durch Neugenerierung aller Auswahllisten mit "soggenawl" oder die SOG ERP Funktion c014 - Auswahllisten generieren (genawl) generiert werden.
Da in der Nachtverarbeitung im p159 - ReorgJob (reorgjob) sowieso alle Auswahllisten neu generiert werden, sollte eine manuelle Auswahllistengenerierung nur in den seltensten Fällen wirklich notwendig sein.

Eine manuelle Generierung einer Auswahlliste kann jedoch angestoßen werden über das Systemkommando:

    soggenawl AwlName


Automatische Aktualisierung einer im Speicher befindlichen Auswahlliste


Um den Zugriff auf Auswahllisten zu optimieren, speichert ActiveSkin den Auswahllisteninhalt unter bestimmten Umständen im Hauptspeicher der Anwendung zwischen (Cachen).
Diese zwischengespeicherten Auswahllisten werden zu folgenden Zeitpunkten aktualisiert:

  • Wenn der Benutzer einen Neuaufbau des Bildschrims erzwingt (Strg-5)

  • Wenn die automatische Erneuerungszeit der Auswahlliste erreicht ist (Initialwert: Eine Stunde nach dem Lesen)

  • Wenn die Auswahlliste in der Auswahlmaske geöffnet wird (Auswahlknopf hinter einer Texteingabe)

  • Wenn die Auswahlliste in einem DropDown-Control heruntergeklappt wird.

Festlegung von Werteoptionen

 

Über Werteoptionen können Auswahllistenwerte mit weiteren Optionen versehen werden.

Geben Sie dazu in der AWC-Steuerdatei die Option "optioncol" an, und legen Sie damit eine Optionsspalte fest.

Im SQL muss diese Optionsspalte dann die gewünschte(n) Option(en) der Zeile, mit Komma getrennt, definieren.

 

Ein Beispiel findet sich in der "sachbea.awl".

Hier ist in der AWC-Datei festgelegt, dass nur die ersten 3 Spalten angezeigt werden sollen, jedoch die 4. Spalte die Zeilenoptionen festlegt.

 

  mode 20

  showcol 3

  piccol 3

  alternatecol 2

  optioncol 4

  translate 0

  title Sachbearbeiter

 

In der dazu gehörenden SQL Datei, legt die 4. Spalte dazu passend mit einem "case when" Konstrukt, die Option "hide" für die Zeilen fest, die in interaktiven Werteauswahlen nicht angezeigt werden sollen:

 

  select

    hhfield(  Bezeichnung, name ),

    hhfield(  Initialen, initialen ),

    hhfield(  ID,  id ),

    case when sachstatus = 9 or name='' then 'hide' else ''  end as opt

  from

    sachbearbeiter

  where

    firma =  ${TBR}

  --single: and hhfield(ID) = ${parawert}

  order by hhfield(Bezeichnung);

 

Folgende Optionen sind definiert:

 

hide

Keine interaktive Anzeige des Wertes. Der Wert kann aber bei Eingabe von Datenwerten auf der Maske noch verwendet werden.

 

Konfiguration einer manuellen Auswahlliste


Neben der Möglichkeit, SQL basierende Auswahllisten zu nutzen, ist es auch möglich, manuelle Auswahllisten zu hinterlegen, deren Inhalte ebenfalls manuell hinterlegt werden.

Verwenden Sie dazu die SOG ERP Funktion c015 - Auswahllistenverwaltung (awlsu).

 

Die Möglichkeit zur Hinterlegung einer manuellen Auswahlliste bedeutet dabei aber nicht zwangsläufig, dass der definierbare Inhalt vollkommen wahlfrei ist. Vielmehr geht es darum, die von der SOG ERP Software genutzten Pic-Werte mit einer individuellen Beschriftung zu versehen.

 

Über die Hinterlegung einer zusätzlichen Steuerdatei kann für manuelle Auswahllisten eingestellt werden, welche Dateninhalte (Pic-Werte) verwendet werden dürfen.

Die Steuerdateien werden, genau wie bei den AWC Dateien der auf SQL basierende Auswahllisten, über die Variable "AWCPATHV2" gesucht, tragen jedoch den Namen "Auswahlliste.awm".

 

Folgende Einstellungen sind in solchen "AWM" Dateien möglich:

 

rem

Die Zeile wird als Kommentar betrachtet.

maxpiclen Länge

Legt die maximale Länge des hinterlegbaren Pic-Wertes fest. Diese Länge muss also der kleinsten Länge der Datenfelder entsprechend, denen diese Auswahlliste zugeordnet wird.

isnumeric 0/1

Legt fest, ob es sich bei der Auswahlliste um eine numerische oder alphanumerische Auswahlliste handelt. Bei numerischen Auswahllisten können nur numerische Pic-Werte definiert werden. Erfolgt keine Angabe von "isnumeric" wird auf Basis der hinterlegten Pic-Werte automatisch ermittelt, ob es sich um eine numerische Auswahlliste handelt, oder nicht.

okvalues Werte

Legt die möglichen Pic-Werte fest. Geben Sie eine Liste von Werten, mit Leerschritten getrennt, an, die festlegt, welche Werte als Pic-Werte erlaubt sind.
Beispiel: okvalues 1 2

enum NameEinesEnumerationDatentyps,Assembly

Festlegung der "okvalues" auf Basis eines Int-basierenden Enumerations-Datentypen.
Beispiel: enum SOG.ERP.Data.SqlDBEntity.dqerrordef_gen+Fehlertypen,SOG.ERP.Data.SqlDBEntity

multiselect

Legt fest, dass eine Mehrfachauswahl von Werten zulässig ist. Der resultierende Wert wird dann durch logische Oder-Verknüpfung der ausgewählten Datenwerte gebildet.

 

Sprachabhängige Auswahllistendaten


Durch Verwendung der SQL Funktionen dbo.vacos_standardlang() oder hhawllang() in den zu Auwahllisten gehörenden SQL Scripten können Auswahllisten gestaltet werden, deren Werte einen sprachabhängigen Schlüssel aufweisen.

 

Verwenden Sie dbo.vacos_standardlang() wenn der Auswahllistentext mit der im SOG ERP Firmenparameter definierten Standardsprache gespeichert wurde. Die Funktion hhawllang() sollte genutzt werden wenn der Auswahllistentext über die aktuellen Benutzersprache ermittelt werden soll.

 

Für Auswahllisten, die hhawllang() verwenden, müssen alle Auswahllistentexte für alle gewünschten Benutzersprachen manuell über die entsprechenden Pflegeprogramme hinterlegt werden.

 

Für Auswahllisten, die keine Sprachentrennung aufweisen, oder die über die Standardsprache "ger" hinterlegt wurden, kann über die oben beschriebene "translate" Anweisung der AWC Datei gesteuert werden, ob und welche Auswahllistentexte über die automatische Übersetzung aus dem Deutschen in die Zielsprache übersetzt werden sollen.