Toolmaker Produkt-Dokumentation
Prozeduren für WRK-Programme
- 1 Grundlagen zu WRK-Programmen
- 2 Such (Filter-)Felder definieren
- 2.1 Wx_GenFlt() – Generischer Filter
- 2.2 Wx_FltFile() – Datei für Filter definieren
- 2.3 Wx_FltFld() – Such(Filter-)Feld definieren
- 2.4 Wx_FltFileFld() – Filterfile und 1.Feld definieren
- 2.5 Wx_BegEnhFlt() – Beginn erweiterter Filter
- 2.6 Vergleichsoperationen für Such(Filter)-Felder
- 2.7 Aufbereitungsoptionen für Such(Filter)-Felder
- 3 Bedingte Filter-Felder – Condition Group
- 4 Inline-Filter
- 5 Kontext-Menü
- 5.1 Wx_NoCtxMnuItm() – Ohne Standard-Kontext-Menü
- 5.2 Wx_CtxMnuItmChange() – Menü-Punkt Ändern
- 5.3 Wx_CtxMnuItmCopy() – Menü-Punkt Kopieren
- 5.4 Wx_CtxMnuItmDelete() – Menü-Punkt Löschen
- 5.5 Wx_CtxMnuItmProperty() – Menü-Punkt Anzeigen/Eigenschaften
- 5.6 Wx_CtxMnuItmDefault() – Standard-Kontext-Menü
- 5.7 Wx_CtxMnuItm() - Kontextmenüpunkt definieren
- 6 Buttons
- 7 Erstellen der Work Tables
- 8 Definition von Schlüsseln
- 9 Ausgabe der Spalten
- 10 Auszugebende Sätze filtern und sortieren
- 11 Manuelle SQL-Abfragen
- 11.1 Wx_WrkSQLMan() SQL Select-Statement
- 11.2 WX_WrkListColumns() – Spalten Liste
- 11.3 Wx_WrkSQLManKey() – Aufbereiteter Schlüssel
- 11.4 Wx_WrkListKeyAndColumns () – Auflistung von Schlüssel und Spalten
- 11.5 Wx_GenFltMan() – Generischer Filter
- 11.6 Wx_ManFltFld() – Definieren Filter-Feld
- 11.7 Wx_ManFltFldChar() - Definieren alphanumerisches Filter-Feld mit fixer Länge
- 11.8 Wx_ManFltFldVarChar() – Definieren alphanumerische Filter-Felder mit variabler Länge
- 11.9 Wx_ManFltFldUC2() – Definieren Unicode Filter-Felder mit fixer Länge
- 11.10 Wx_ManFltFldVarUC2() – Definieren Unicode-Filter-Felder mit variabler Länge
- 11.11 Wx_ManFltFldPack() – Definieren von gepackt-numerischern Filter-Feldern
- 11.12 Wx_ManFltFldZone() – Definieren von gezont numerischen Filter-Feldern
- 11.13 Wx_ManFltFldInt() – Definieren von Ganzzahligen Filter-Feldern
- 11.14 Wx_ManFltFldFloat() – Definieren von Fließ-Komma-Filter-Feldern
- 11.15 Wx_ManFltFldDate() – Definieren von Datums-Filter-Feldern
- 11.16 Wx_ManFltFldTime() – Definieren von Zeit-Filter-Feldern
- 11.17 Wx_ManFltFldTimestamp() – Definieren von Zeitmarken-Filter-Feldern
- 11.18 Wx_ManFltFieldRef() – Definieren von Filter-Feldern basierend auf Referenz-Feld
- 12 Prozeduren zur Ausgabe von Worktables
- 13 Spezielle Prozeduren für Editierbare Worktables
- 14 Modus ermitteln
- 15 Umsortierung von Datensätzen in einer List-Anzeige
- 15.1 Wx_GetReseqArrInt() – Numerische Schlüssel-Werte in neuer Reihenfolge
- 15.2 Wx_GetReseqArrChar() – alphanumerische Schlüssel-Werte in neuer Reihenfolge
- 15.3 Wx_GetReseqArrUC() – Unicode-Schlüssel-Werte in neuer Reihenfolge
- 15.4 Wx_GetReseqString() – AlphaString mit Schlüsseln in neuer Reihenfolge
- 15.5 Wx_GetReseqStringUC() – Unicode-String mit Schlüsseln in neuer Reihenfolge
Grundlagen zu WRK-Programmen
Standard-Bearbeitungs-Modi
Wird in Work-Programmen kein Kontext-Menü-Punkt und keine Buttons definiert, wird automatisch ein Kontext-Menü und ein Button mit den folgenden Standard-Optionen oder Modi hinzugefügt.
Die folgenden Standard Modi gesetzt werden:
*ADD Button → Erfassen (eines neuen Datensatzes)
*CHANGE Kontext-Menü → Ändern (des Datensatzes)
*COPY Kontext-Menü → Kopieren (des Datensatzes)
*DELETE Kontext-Menü → Löschen (des Datensatzes)
*PROPERTY Kontext-Menü → Anzeigen (des Datensatzes)
Die Standard-Optionen werden an das Folge-Programm übergeben und können über RPGWX-Prozeduren geprüft und ermittelt werden.
In den Folge-Programmen können die Standard-Modi, sowie alle anderen Modi, die in Kontext-Menüs oder über Buttons gesetzt werden mit RPGWX-Prozeduren geprüft und ermittelt werden.
In Change-Programmen werden automatisch Buttons mit den folgenden Standard-Optionen hinzugefügt:
*SAVE Sichern
*APPLY Übernehmen
*REFRESH Aktualisieren
Diese Standard-Modi können ebenfalls über RPGWX-Funktionen geprüft und ermittelt werden. Die Prüfung sollte jedoch erst nach Aufruf der RPGWX-Funktion Wx_GetChgInput() (ähnlich OpCode EXTFMT) erfolgen.
Wx_OpnHTMLWrk() – HTML Dokument öffnen
Im ersten Schritt der RPGWX-Programmierung muss festgelegt werden, ob eine List-Anzeige (Work-Table) oder Detail-Anzeige erfolgen soll. Die Unterscheidung erfolgt durch den Aufruf von unterschiedlichen Prozeduren für WRK- oder CHG-Programme.
Zum Erstellen einer WRK-Programmes wird zunächst die Prozedur WX_OpnHTMLWrk() (Open HTML Document for Work Tables) aufgerufen.
In dieser Prozedur wird zunächst das Default-HTML-Template ermittelt und geöffnet. Anstatt des Default-HTML-Templates zu verwenden, kann auch ein individuelles HTML-Dokument verwendet werden. In diesem Fall muss jedoch dafür gesorgt werden, dass die Platz-Halter für Work- bzw. Change-Tables, Überschriften, Error-Messages etc., die von RPGWX/Directweb ersetzt werden, in dem individuellen Dokument integriert sind.
Der Titel, der zur Laufzeit angezeigt werden soll wird als Parameter übergeben und kann wahlweise als Text oder als Message-Id aus der bei dem Einrichten der Anwendung angegebenen Nachrichten-Datei übergeben werden.
Das Folge-Programm (Detail-Anzeige oder eine weitere List-Anzeige) muss angegeben werden. Bei List-Programmen ist das Folge-Programm i.d.R. das Programm in dem die Detail-Verarbeitung erfolgen soll.
Die Programme, die bei Auswahl über das Kontext-Menü aufgerufen werden, werden bei der Definition der Menü-Punkte angegeben.
Die Prozedur Wx_OpnHTMLWrk() darf pro Work-Programm nur einmalig aufgerufen werden.
Wx_OpnHTMLWrk - Prototyp
//**********************************************************************
// Procedure name: Wx_OpnHTMLWrk
// Purpose: Open HTML Document for CGI Work Program
// Returns:
// Parameters: ParMsg => Message-Id Header or Header-Text
// Parameters: ParCGIPGM => Program to Call
// Parameters: ParHTMLDoc => HTML-Document
// --> Not Passed or *DEFAULT passed
// = Default Document
// Parameters: ParOpnOpt => Additional Open Options
//**********************************************************************
D Wx_OpnHTMLWrk...
D PR OpDesc
D ParMsg Like(FldRef.MsgText) Const
D PInCGIPGM Like(FldRef.PGM) Const
D Options(*NoPass: *Trim)
D PInHtmlDoc Like(FldRef.HTMLDOC) Const
D Options(*NoPass)
D PInOpnOpt Like(FldRefCGI.Options) Const
D Options(*NoPass)Parameter
ParTitle - Message-Id oder Text für Titel
PInCGIPGM - Folge-Programm
PInHTMLDoc - HTML-Dokument
Optionaler Parameter - Muss nur angegeben werden, wenn ein anderes als das Default HTML-Dokument verwendet werden soll
PInOpnOpt - Aufbereitungsoptionen
Optionaler Parameter, die folgenden Angaben sind möglich:
HelpDoc(Parm1, Parm2, Parm3, Parm4)
Parm1 = Hilfe-Text/Beschreibung - Kann direkt oder als Mesage-Id angegeben werden
Parm2 = PDF-Dokument oder Link - Kann direkt oder als Message-Id angegeben werden.
Ein PDF-Dokument wird ohne Pfad angegeben und muss sich im Anwendungs-Verzeichnis für Hilfe-Dokumente befinden:/www/dirweb/htdocs/HelpDocs/<anwendungsname>Parm3 = Seite in PDF-Dokumenten oder *NONE - Nur für PDF-Dokumente zulässig
Syntax:#page=x(x=Seiten-Zahl)
Sofern keine Seite angegeben werden kann und der 4. Parameter erforderlich ist, kann der Standard-Wert *NONE angegeben werden.Parm4 = Icon
Sofern ein individuelles Icon angegeben werden soll, wird dieses ohne Pfand angegeben und muss im Anwendungs-Verzeichnis für Icons hinterlegt sein./www/dirweb/htdocs/HelpDocs/<anwendungsname>
Parm3 und Parm4 sind optional
Das Schlüssel-Wort HelpDoc, sowie die einzelnen Parameter können in jeder beliebigen Groß-/Klein-Schreibung angegeben werden.
DoubleClick(Parm1, Parm2)
Parameter1= ModusZulässig sind aktuell die folgenden Angaben
In jeder beliebigen Groß/Klein-Schreibung*DSP/*DISPLAY= Anzeige Modus*CHG/*CHANGE= Änderungs-Modus*NONE= Keine Aktion bei Doppel-KlickParameter2 =Bestätigung
Optional
Nur für Änderungs- und Anzeige-Modus
Zulässig sind die folgenden Angaben in jeder beliebigen Groß/Klein-SchreibungConfirm= mit Standard-BestätigungstextConfirm(Text)= Bestätigungstext in KlammerConfirm(MSGID)= Message-Id für Bestätigungstext in Klammer
Das Schlüssel-Wort DoubleClick, sowie die einzelnen Parameter können in jeder beliebigen Groß-/Klein-Schreibung angegeben werden.
NoList - Beim ersten Aufruf werden nur die Filter angezeigt, aber die Tabelle hat keinen Inhalt
EmptyList - Beim ersten Aufruf werden die Filter und eine leere Liste angezeigt. Das SQL-Statement wird aber ausgeführt und die Anzahl der Datensätze wird angezeigt.
Group
Durch die Angabe des Schlüssel-Wortes Group wird ein zusätzlicher Kontext-Menü-Punkt „Gruppieren" ans Ende des Kontext-Menüs angefügt.
Mit Hilfe der Kontext-Menü-Auswahl Group können die Daten in der Spalte, auf der der Cursor aktuell steht verdichtet werden.
Das Schlüssel-Wort Group kann in jeder Beliebigen Groß-/Klein-Schreibung angegeben werden.
Beispiele für den Aufruf
Wx_OpnHTMLWrk('Adress-Stamm': 'EXCHGAD01'); Wx_OpnHTMLWrk('TOP0017' : 'EXCHGUMS' : 'MyWrkUmsatz.html'); Wx_OpnHTMLWrk('TOP0017' : '' : 'MyChgUmsatz.html' : 'helpDoc(HLP0002, HLP0001, *NONE, Phone-52.png)'); Wx_OpnHTMLWrk('TIT0012' : 'EXCHGCOMP' : '' : 'DoubleClick(*NONE)'); Wx_OpnHTMLWrk('TIT0013' : 'EXNXTPGM' : '' : 'DoubleClick(*DSP, confirm)'); Wx_OpnHTMLWrk('TIT0012' : 'EXCHGPGM1' : '' : 'DoubleClick(*Chg, CONFIRM(Achtung: Änderungsmodus))'); Wx_OpnHTMLWrk('TIT0012' : 'EXCHGPGM2' : '' : 'helpDoc(HLP0002, HLP0001, *NONE, Phone-52.png) DoubleClick(*Chg, confirm(BST0007))');
Prozedur Wx_OpnHTMLWrk - HTML Dokument für Worktables öffnen
Such (Filter-)Felder definieren
Mit diesen Funktionen können oberhalt der Liste Suchfelder eingeblendet werden, über die der Benutzer die angezeigte Liste einschränken kann.
Wx_GenFlt() – Generischer Filter
Mit der Funktion WX_GenFlt wird der generische Filter definiert.
Für den generischen Filter können bis zu 10 Spalten angegeben werden, die entweder case sensitive oder case insensitive nach der eingegebenen Zeichen-Kombination durchsucht werden.
In einem WRK-Programm kann maximal ein generischer Filter definiert werden.
Wx_GenFlt - Prototyp
? ************************************************************************
P* Procedure name: Wx_GenFlt
P* Purpose: Add generic Filter
P* --> Up to 10 Fields/Columns within the same File/Table
P* Returns:
P* Parameters: ParFile => File/Table
P* Parameters: ParField1 => Field/Column Name (in specified File)
P* Parameters: ParOptions => Options (Table Options!)
P* Parameters: ParField2 => Field/Column Name (in specified File)
P* Parameters: ParField3 => Field/Column Name (in specified File)
P* Parameters: ParField4 => Field/Column Name (in specified File)
P* Parameters: ParField5 => Field/Column Name (in specified File)
P* Parameters: ParField6 => Field/Column Name (in specified File)
P* Parameters: ParField7 => Field/Column Name (in specified File)
P* Parameters: ParField8 => Field/Column Name (in specified File)
P* Parameters: ParField9 => Field/Column Name (in specified File)
P* Parameters: ParField10 => Field/Column Name (in specified File)
? ************************************************************************
P Wx_GenFlt...
P B Export
?
? * Procedure Interface
? ---------------------------
D Wx_GenFlt...
D PI OPDesc
D ParFile Like(FldRef.NameSQL) Const
D ParField1 Like(FldRef.NameSQL) Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParField2 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField3 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField4 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField5 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField6 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField7 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField8 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField9 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField10 Like(FldRef.NameSQL) Const
D Options(*NoPass)
Source Code 3022: Prototype - Prozedur Wx_GenFlt - Definiere generischen FilterParameter
ParFile - Physische Datei oder Tabelle oder View in der die Spalten/Felder für den generischen Filter hinterlegt sind
Es können wahlweise die kurzen (max.10 stelligen) System-Namen oder die bis zu 128 Zeichen langen SQL Namen angegeben werden.
Der Datei-Name kann in jeder beliebigen Groß/Klein-Schreibweise angegeben werden.
ParField1 - Erste Spalte/Feld, die nach der eingegebenen Buchstabenkombination durchsucht werden soll.
Es kann wahlweise der kurze System- oder der lange SQL-Name angegeben werden.
Der Spalten/Feld-Name kann in jeder beliebigen Groß/Klein-Schreibweise angegeben werden.
Für den generischen Filter muss mindestens eine Spalte/Feld angegeben werden.
ParOptions - Aufbereitungsoptionen
Optionaler Parameter
Mögliche Werte
casesensitive - Casesensitive Suche
Default Suche ist case insensitive
ParField2 - Spalte/Feld, die gescannt werden soll
Optionaler Parameter
ParField3 – ParField10
Analog ParField2
Beispiele für den Aufruf
Wx_GenFlt('ADRESSEX': 'NAME1F'); Wx_GenFlt('AdresseX': 'Name1F': 'casesensitive': 'Strasse': 'Ort');
Wx_FltFile() – Datei für Filter definieren
Sofern kein generischer Filter erforderlich ist, jedoch weitere Filter-Felder angelegt werden sollen, müssen zunächst die Dateien/Tabellen/Views, in denen zu selektierenden Informationen hinterlegt wurden definiert werden.
Wurde ein generischer Filter angelegt, so wurde bereits die erste Datei/Tabelle/View angelegt. Der Aufruf der Funktion Wx_FltFile ist nur erforderlich, wenn weitere Filter aus anderen Dateien/Tabellen/Views definiert werden sollen.
Über die Funktion Wx_FltFile können bis zu 10 Dateien/Tabellen/Views definiert werden. Da diese Dateien/Tabellen/Views auch zum Aufbau des Select-Statements, das die Listanzeige bildet verwendet wird, müssen die Abhängigkeiten (Join-Informationen) zwischen den Dateien/Tabellen/Views definiert werden.
Die Join-Anweisungen müssen in gültiger SQL Notation angegeben werden.
Anmerkung:Anstatt die Verknüpfungen in der Funktion Wx_FltFile anzugeben, wird empfohlen SQL Views zu erstellen, die die alle Spalten, sowie die Verknüpfungen enthalten.
Wx_FltFile() - Prototoyp
***************************************************************************
P* Procedure name: Wx_FltFile
P* Purpose: Define Files used for Filter
P* --> Up to 10 Files can be specified
P* --> If more than 1 File is specified: Join Conditions are
P* Returns:
P* Parameters: ParFile1 => File/Table 1
P* Parameters: ParFile2 => File/Table 2 (Optional)
P* Parameters: ParJoin2 => Join Previous Tables and Table 2 (Optional)
P* Parameters: ParFile3 => File/Table 3 (Optional)
P* Parameters: ParJoin3 => Join Previous Tables and Table 3 (Optional)
P* Parameters: ParFile4 => File/Table 4 (Optional)
P* Parameters: ParJoin4 => Join Previous Tables and Table 4 (Optional)
P* Parameters: ParFile5 => File/Table 5 (Optional)
P* Parameters: ParJoin5 => Join Previous Tables and Table 5 (Optional)
P* Parameters: ParFile6 => File/Table 6 (Optional)
P* Parameters: ParJoin6 => Join Previous Tables and Table 6 (Optional)
P* Parameters: ParFile7 => File/Table 7 (Optional)
P* Parameters: ParJoin7 => Join Previous Tables and Table 7 (Optional)
P* Parameters: ParFile8 => File/Table 8 (Optional)
P* Parameters: ParJoin8 => Join Previous Tables and Table 8 (Optional)
P* Parameters: ParFile9 => File/Table 9 (Optional)
P* Parameters: ParJoin9 => Join Previous Tables and Table 9 (Optional)
P* Parameters: ParFile10 => File/Table 10 (Optional)
P* Parameters: ParJoin10 => Join Previous Tables and Table 10 (Optional)
***************************************************************************
D Wx_FltFile PR OPDesc
D ParFile1 Like(FldRef.NameSQL) Const
D ParFile2 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParJoin2 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParFile3 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParJoin3 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParFile4 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParJoin4 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParFile5 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParJoin5 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParFile6 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParJoin6 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParFile7 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParJoin7 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParFile8 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParJoin8 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParFile9 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParJoin9 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParFile10 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParJoin10 Like(FldRef.TextVar) Const
D Options(*NoPass)Parameter
ParFile1 - Physische Datei/Tabelle/View
Kann als kurzer System-Name (Max.10 Zeichen) oder langer SQL Name (Max. 128 Zeichen) angegeben werden.
ParFile2 - Physische Datei/Tabelle/View
Optionaler Parameter
Kurzer System- oder langer SQL Name
ParJoin2 - Verknüpfung zwischen Datei/Tabelle/View 1 und 2
Optionaler Parameter, muss aber angegeben werden, wenn ParFile2 angegeben wurde (auch dann wenn ein Cross Join gewünscht wird).
Beispiel:'Inner Join MYFILE2 +
on Key1File1 = Key1File2 +
and Key2File1 = Key2File2'
ParFile3 – ParFile10 - optional und werden analog ParFile2 verwendet.
ParJoin3 – ParJoin10 - optional werden analog ParJoin2 verwendet.
Beispiel für den Aufruf
Wx_FltFile('AuftrKopfX'); Wx_FltFile('AuftrKopfX': 'AuftrPosX': 'Join AuftrPosX on AuftrKopfX.BestNr = AuftrPosX.BestNr': 'KundSt': 'Left Outer Join KundSt on KundeNr = KndNr');
Wx_FltFld() – Such(Filter-)Feld definieren
Filter-Felder können definiert werden, nach dem die Dateien/Tabellen/Views, die für die Listanzeige benötigt werden, definiert wurden.
Für die einzelnen Filter-Felder können unterschiedliche Vergleichsoperatoren angegeben werden. Wird kein Vergleichsoperator angegeben, so wird der Unterlassungswert = (gleich) verwendet.
Bei der Definition der Filter-Felder können diverse Aufbereitungsoptionen angegeben werden.
Ebenso ist es möglich Unterlassungswerte anzugeben.
Über einen weiteren optionalen Parameter können Bedingungen definiert werden unter denen das Feld angezeigt oder ausgeblendet werden kann.
Wx_FltFld() - Prototyp
***************************************************************************
P* Procedure name: Wx_FltFld
P* Purpose: Define Fields used for Filter
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* (=, <>, >=, <=, <, >, Like, Not Like,
P* Not LikeLeft, LikeRight, Not LikeRight
P* Not LikeLeft, LikeRight, Not LikeRight
P* Not Between, Between, Not In, In
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Values
P* Parameters: ParCond => Single field conditions
P* Parameters: ParHelp => Help (Text or Message-Id
P* --> Help = Level 2 Message Text)
? ***************************************************************************
D Wx_FltFld...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D ParCompare Like(FldRef.Text15V) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParValues Like(FldRefCGI.DftValue) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Syntax
Wx_FltFld( <fldname> : <msg> : [<operator>] : [<options>] : [<default>] : [<cond-values>] : [<help>])
Parameter
fldname - Feld/Spalten-Name des Filter-Feldes
Das Filter-Feld (der angegebene Feld-Name) muss in den zuvor definierten Tabellen vorhanden sein.
Wahlweise kann der kurze System-Name oder der lange SQL –Name angegeben werden.
msg - Beschreibung, die links neben dem Filter-Feld angezeigt wird
In dem Parameter kann entweder die Beschreibung direkt oder eine Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.
operator - Vergleichsoperator
Optionaler Parameter
Default-Wert ist =
Die verfügbaren Vergleichsoperatoren werden auf dieser Seite beschrieben: Vergleichsoperationen für Filter-Felder (Wx_FltFld und Wx_FltFileFld)
options - Aufbereitungsoptionen
Optionaler Parameter
default - Default-Werte
Optionaler Parameter
Bei Vergleichsoperator (Not) Between und (Not) In können mehrere alphanumerische Default-Werte durch Kommata getrennt übergeben werden.
cond-values - Bedingungen unter denen das Filter-Feld angezeigt werden soll.
Optionaler Parameter
Wird in JavaScript konvertiert und zur Laufzeit ausgeführt
help - Hilfe-Text
Ein Hilfe-Text oder eine Message-Id mit Hilfe-Text kann übergeben werden. Sofern eine Message-Id übergeben wird, wird davon ausgegangen, dass der Hilfe-Text als Level 2 Text hinterlegt wurde.
Sofern bei der Message-Id, die für die Anzeige angegeben wurde ein Level 2-Text in der Message-File hinterlegt ist, wird dieser automatisch als Hilfe-Text übernommen.
Beispiel für den Aufruf
Wx_GenFlt('ADRESSEX': 'NAME1F': '': 'NAME2F'); Wx_FltFld('Ort': 'FLD0005': 'LikeLeft'); Wx_FltFld('Land': 'FLD0006': '=': 'enhflt CTL(Country)'); Wx_FltFld('KundeNr': 'FLD0001': '>=': 'enhflt');
Zeigt dieses Bild:
Wx_FltFileFld() – Filterfile und 1.Feld definieren
Sofern kein generischer Filter verwendet wird und auch nur auf eine einzige physische Datei/Tabelle/View zugegriffen wird, kann die Datei/Tabelle/View über die Funktion Wx_FltFileFld() direkt zusammen mit dem 1. Filter-Feld definiert werden.
Bei dieser Funktion wird die Datei/Tabelle/View als 1. Parameter übergeben. Die folgenden Parameter entsprechen den Parametern (Anzahl, Reihenfolge und Schlüssel-Wort CONST), die für Prozedur Wx_FltFld() übergeben werden können.
Wx_FltFileFld() - Prototyp
***************************************************************************
P* Procedure name: Wx_FltFileFld
P* Purpose: Define Fields used for Filter
P* Returns:
P* Parameters: ParFile => File
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* (=, <>, >=, <=, <, >, Like, Not Like,
P* Not LikeLeft, LikeRight, Not LikeRight
P* Not LikeLeft, LikeRight, Not LikeRight
P* Not Between, Between, Not In, In
P* Parameters: ParOptions => Options
P* Parameters: ParValue => Default Values
P* Parameters: ParCond => Single Field Conditions
P* Parameters: ParHelp => Help (Text or Message-Id
P* --> Help = Level 2 Message Text
***************************************************************************
D Wx_FltFileFld...
D PR OPDesc
D ParFile Like(FldRef.NameSQL) Const
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D ParCompare Like(FldRef.Text15V) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParValues Like(FldRefCGI.DftValue) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Syntax
Wx_FltFileFld(<table> : <field> : <msg> : [<operator>] : [<options>] : [<default>] : [<cond-values>] : [<help>])
Parameter
table - Physische Datei/Tabelle/View
Kann als kurzer System-Name (Max.10 Zeichen) oder langer SQL Name (Max. 128 Zeichen) angegeben werden.
Analog Parameter ParFile1 in Funktion Wx_FltFile()
field - Feld/Spalten-Name des Filter-Feldes
Das Filter-Feld (der angegebene Feld-Name) muss in den zuvor definierten Tabellen vorhanden sein.
Wahlweise kann der kurze System-Name oder der lange SQL –Name angegeben werden.
Analog Parameter ParField in Funktion Wx_FltFld()
msg - Beschreibung, die links neben dem Filter-Feld angezeigt wird
In dem Parameter kann entweder die Beschreibung direkt oder eine Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.
operator - Vergleichsoperator
Optionaler Parameter
Default-Wert ist =
Die verfügbaren Vergleichsoperatoren werden auf dieser Seite beschrieben: Vergleichsoperationen für Filter-Felder (Wx_FltFld und Wx_FltFileFld)
options - Aufbereitungsoptionen
Optionaler Parameter
default - Default-Werte
Optionaler Parameter
Bei Vergleichsoperator (Not) Between und (Not) In können mehrere alphanumerische Default-Werte durch Kommata getrennt übergeben werden.
cond-values - Bedingungen unter denen das Filter-Feld angezeigt werden soll.
Optionaler Parameter
Wird in JavaScript konvertiert und zur Laufzeit ausgeführt
help - Hilfe-Text
Ein Hilfe-Text oder eine Message-Id mit Hilfe-Text kann übergeben werden. Sofern eine Message-Id übergeben wird, wird davon ausgegangen, dass der Hilfe-Text als Level 2 Text hinterlegt wurde.
Sofern bei der Message-Id, die für die Anzeige angegeben wurde ein Level 2-Text in der Message-File hinterlegt ist, wird dieser automatisch als Hilfe-Text übernommen.
Beispiel für den Aufruf
Wx_FltFileFld('TXDATEV05': 'WDUSER': 'TXD0011': '=': 'NotRequired ExecSQL(UserPrf)');
Wx_BegEnhFlt() – Beginn erweiterter Filter
Durch die Angabe der Option EnhFlt bei der Filter-Feld-Definition können Filter-Felder, die im erweiterten Filter angezeigt werden definiert werden.
Sofern mehrere Filter-Felder als erweiterte Filter-Felder definiert werden müssen, kann anstatt bei jedem Feld die Option EnhFlt anzugeben die Funktion Wx_BegEnhFlt() aufgerufen werden.
Alle Filter-Felder, die nach Aufruf dieser Prozedur definiert werden, werden als erweiterte Filter-Felder definiert und ausgegeben.
Wx_BegEnhFlt() - Prototype
**************************************************************************
P* Procedure name: Wx_BegEnhFlt
P* Purpose: Begin enhanced filter
P* Returns:
P* Parameters:
**************************************************************************
D Wx_BegEnhFlt...
D PR OPDescSyntax
Wx_BegEnhFlt()
Parameter
Die Prozedur Wx_BegEnhFlt() hat weder einen Rückgabe-Wert noch Parameter.
Beispiel für den Aufruf
Wx_BegEnhFlt(); Wx_FltFld('WDDATE': 'Datum');Wx_FltFld('WDTIME': 'Zeit');... weitere Felder für den erweiterten Filter
Vergleichsoperationen für Such(Filter)-Felder
Die verfügbaren Vergleichsoperationen für Such(Filter)-Felder werden hier beschrieben: Vergleichsoperationen für Filter-Felder
Aufbereitungsoptionen für Such(Filter)-Felder
Die verfügbaren Aufbereitungsfunktionen für Such(Filter)-Felder werden hier beschrieben: Aufbereitungsoptionen für Filter-Felder.
Bedingte Filter-Felder – Condition Group
RPGWX stellt mehrere Funktionen zur Verfügung, mit deren Hilfe JavaScript-Code erzeugt wird, der zur Laufzeit dafür sorgt, dass Filter-Felder nur unter bestimmten Bedingungen angezeigt werden.
Die Bedingungen unter denen die Filter-Felder angezeigt werden können auch bei den Funktionen Wx_FltFileFld() und Wx_FltFld() über einen optionalen Parameter angegeben werden.
Um zu vermeiden, dass die gleichen Bedingungen mehrfach angegeben werden müssen, wurden Prozeduren erstellt, über die die Bedingung einmalig festgelegt wird. Alle im Anschluss definierten Filter-Felder werden nur unter den in der Prozedur Wx_FltIf() angegebenen Bedingungen angezeigt.
Für Filter-Felder werden die folgenden zur Condition Group gehörenden Prozeduren zur Verfügung gestellt:
Wx_FltIf() If-Anweisung = Beginn der Condition Group
Wx_FltElse() Else-Anweisung
Wx_FltEndIf()EndIf-Anweisung = Ende der Condition Group
Für die Bedinungs-Funktionen gilt:
Die Bedingung muss sich auf zuvor mit RPGWX definierte Filter-Felder beziehen.
Condition Groups können verschachtelt werden. Die Verschachtelung der Condition Groups sowie die Anzahl der Aufrufe der Wx_FltIf() und Wx_FltEndIf() werden zur Laufzeit geprüft. Im Fehlerfall wird eine Fehlermeldung ausgegeben.
Die Bedingungen können wahlweise in RPG, CL oder JavaScript-Schreibweise angegeben werden. Der angegebene Code wird in JavaScript konvertiert und zur Laufzeit ausgeführt.
Nur Datei-Felder, die bereits in zuvor als Filter-Felder definiert wurden dürfen in den Bedingungen verwendet werden.
Vergleichsoperatoren, wie =, >, <> etc. (RPG-Schreibweise) können ebenso angegeben werden, wie *EQ, *GT, *NE etc. (CL-Schreibweise) oder ==, >, != (JavaScript-Schreibweise)
Logische Operatoren wie AND, OR, NOT (RPG) bzw. *AND, *OR, *NOT (CL) bzw. &&, ||, ! (JavaScript) können verwendet werden.
Klammersetzung ist erlaubt
Weitere Informationen: Seite RPGWX-Prozeduren, Abschnitt "Bedingtes Anzeigen von Ein-/Ausgabe-Feldern"
Wx_FltIf() – Beginn der Condition Group
Mit Hilfe der Prozedur Wx_FltIf() wird die erste Bedingung definiert. Die Bedingung wird in Java-Script-Code übersetzt und steuert zur Laufzeit die Anzeige der Ein-/Ausgabe-Felder.
Alle Felder und Variablen, die nach dem Aufruf der Prozedur Wx_FltIf() definiert werden, werden unter den gleichen Bedingungen angezeigt.
Wird die Prozedur Wx_FltIf() erneut, mit einer weiteren Bedingung aufgerufen, werden alle im Anschluss definierten Filter-Felder nur dann angezeigt, wenn beide Bedingungen erfüllt sind.
Wx_FltIf() - Protototyp
*************************************************************************
P* Procedure name: Wx_FltIf
P* Purpose: Begin IF-Condition - Filter
P* Returns:
P* Parameters: ParCond => Condition
*************************************************************************
D Wx_FltIf...
D PR OpDesc
D ParCond Like(FldRefCGI.Cond) ConstSyntax
Wx_FltIf('<bedingung>');
Parameter
bedingung - Eine Bedingung, deren Ergebnis ein Wert True oder False ist
Weitere Informationen: Seite RPGWX-Prozeduren, Abschnitt "Bedingtes Anzeigen von Ein-/Ausgabe-Feldern"
Beispiele
Wx_FltIf('Firma = 10'); Wx_FltIf('LiefBed *EQ ''AW''');
Wx_FltElse – Else-Anweisung
Über die Prozedur Wx_FltElse() kann eine ELSE-Anweisung definiert werden.
Alle Ein-/Ausgabe-Felder, die nach Ausführung der Prozedur Wx_FltElse() über RPGWX-Funktionen definiert werden, werden zur Laufzeit unter den inversen Bedingungen der zuvor definierten IF-Anweisung angezeigt.
Durch die Angabe von weiteren Bedingungen können Else-If-Bedingungen definiert werden.
Innerhalb der Else-Anweisungen können weitere Condition Groups definiert werden.
Wx_FltElse() - Prototoyp
*************************************************************************
P* Procedure name: Wx_FltElse
P* Purpose: Begin Else(IF)-Condition - Filter
P* Returns:
P* Parameters: ParCond => Condition
*************************************************************************
D Wx_FltElse...
D PR OpDesc
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)Syntax
Wx_FltElse('<bedingung>');
Parameter
bedingung - Eine Bedingung, deren Ergebnis ein Wert True oder False ist
Optionaler Parameter
Durch Angabe von Bedingungen in der Else-Funktion wird eine ElseIf-Funktionalität erreicht.
Weitere Informationen: Seite RPGWX-Prozeduren, Abschnitt "Bedingtes Anzeigen von Ein-/Ausgabe-Feldern"
Beispiele
Wx_FltEndIf() – Ende Condition Group
Der Aufruf der Wx_FltEndIf() Prozedur beendet die Condition Group.
Jede If-Anweisung muss beendet werden. Stimmen die Anzahl der Wx_FltIf() und Wx_FltEndIf()-Prozedur-Aufrufe nicht überein, tritt zur Laufzeit ein Fehler auf.
Durch den Aufruf der Prozedur Wx_FltEndIf() wird die äußerste Condition Group beendet.
Zu jedem Wx_FltIf()-Prozedur-Aufruf, muss auch ein Wx_FltEndIf()-Prozedur-Aufruf ausgeführt werden. Stimmt die Anzahl der Wx_FltIf()-Aufrufe mit der Anzahl der Wx_FltEndIf()-Aufrufe nicht überein, tritt zur Laufzeit ein Fehler auf.
Alle Filter-Felder, die mit RPGWX-Funktionen nach der Ausführung der Prozedur Wx_FltEndIf() definiert werden, werden ohne Berücksichtigung der Bedingungen aus der beendeten Condition Group angezeigt.
Wx_FltEndIf() - Prototyp
*************************************************************************
P* Procedure name: Wx_FltEndIf
P* Purpose: End IF-Condition - Filter
P* Returns:
P* Parameters:
*************************************************************************
D Wx_FltEndIf...
D PR OpDesc
Syntax
Wx_FltEndIf('<bedingung>');
Parameter
Für die Prozedur Wx_FltEndIf sind keine Parameter erforderlich
Condition Group - Beispiel für den Aufruf
Wx_FltIf('Firma = 10'); Wx_FltFld('AuftrArt': 'FLD0027': '=': 'SelectList'); Wx_FltIf('LiefBed = "AW"'); Wx_FltFld('LiefBed': 'FLD0029': '=': 'SelectList'); Wx_FltElse('LiefBed = "FH"'); Wx_FltFld('Status': 'FLD0026': '=': 'SelectList'); Wx_FltEndIf(); Wx_FltElse('Firma = 15'); Wx_FltFld('KundeNr': 'FLD0001': '=': 'SelectList'); Wx_FltIf('KundeNr < "20000"'); Wx_FltFld('BestNr': 'FLD0025': 'LikeLeft'); Wx_FltEndIf(); Wx_FltEndIf();
Inline-Filter
Neben den regulären Filter-Feldern können in Worktables zusätzlich Inline-Filter definiert werden.
Die Inline-Filter werden über das Schlüssel-Wort Filter(Option), das bei der Spalten-Definition angegeben wird, gesteuert. Wird ein Inline-Filter definiert kann eine der folgenden Optionen angegeben werden:
Text_Search In der entsprechenden Spalte wird dynamisch (abhängig von der Eingabe) die ein Datensätze ausgewählt bzw. reduziert
Select_Filter Es wird eine Select-Liste mit den vorhandenen Ausprägungen bereitgestellt
Combo_Filter Es wird eine Combobox mit den vorhandenen Ausprägungen bereitgestellt. Abhängig von der Eingabe werden die Auswahlmöglichkeiten in der Combobox reduziert.
Text_Search Abhängig von der Eingabe wird innerhalb der Spalte auf das erste Vorkommen positioniert.
Numeric_Filter
Abbildung 16: Inline Filter - Text_Filter / Select_Filter
Achtung: Sofern Inline-Filter verwendet werden, wird per Default das übliche Paging (Einlesen von Blöcken von jeweils 100 Datensätzen) ausgeschaltet, und alle Datensätze eingelesen.
Bei großen Datenmengen (mehrere 100.000 Datensätze) kann die Performance sehr darunter leiden. In diesen Fällen sollten besser reguläre Filter-Felder definiert werden.
Das folgende Beispiel zeigt den Source Code zur Definition der Inline-Filterfelder im vorherigen Beispiel:
Wx_WrkFld('DCAPP': 'DWB0552': 'Filter(Text_Filter)'); //Anwendung Wx_WrkFld('DCNAM': 'WXA0002': 'Filter(Select_Filter)'); //Kennung Wx_WrkFld('DCKEY': 'DWB0590':'filter(Combo_Filter)'); //Schlüssel Wx_WrkFld('DCTXT': 'DWB0019': 'Filter(Text_Search)'); //Beschreibung
Für Filter-Felder können individuelle Bedienerhilfe-Texte definiert werden.
Die Bedienerhilfe kann zum einen über einen optionalen Parameter in allen Definitions-Funktionen für Change-Tables (z.B. Wx_FltFld() oder Wx_FltFileFld()) angegeben werden.
Alternativ kann die Bedienerhilfe explizit durch den Aufruf Funktion WX_FltHelp() gesetzt oder überschrieben werden.
Dabei kann wahlweise direkt ein Hilfe-Text oder eine Message-Id übergeben werden. Wird eine Message-Id übergeben wird der Level 2-Message-Text dieser Message-Id ermittelt und als Hilfe-Text angezeigt.
Wurde weder ein Message-Text noch eine Message-Id angegeben, so wird, sofern eine Feldbeschreibung als Message-Id angegeben wurde der Level 2 Message-Text ermittelt und als Bedienerhilfe ausgegeben. Dieser Prozess erfolgt automatisch, ohne Angabe eines Schlüssel-Wortes.
Soll diese Automatik unterbunden werden, bzw. kein Hilfe-Text erwünscht sein, so kann in dem optionalen Parameter für die Bedienerhilfe der Sonderwert *NONE übergegeben werden. Das Hinzufügen der Bedienerhilfe kann ebenfalls durch den Aufruf der Funktion Wx_FltNoHelp() entweder für ein einzelnes Feld oder alle Felder unterbunden werden.
Sofern ein Hilfe-Text zu einem (Eingabe)-Feld vorhanden ist, wird ein Fragezeichen-Icon angezeigt. Bei der Mouse Over-Aktion wird der hinterlegte Hilfe-Text angezeigt.
Abbildung 17: Bedienerhilfe bei Filter-Feldern
WX_FltHelp – Bedienerhilfe zu Filter hinzufügen
Mit Hilfe der Funktion Wx_FltHelp können in Work-Programmen Hilfe-Texte zu Filter-Feldern zugewiesen werden.
Prototyp
***************************************************************************
P* Procedure name: Wx_FltHelp
P* Purpose: Add individual help to a filter field
P* If a Message-Id is passed the 2nd Level Message Text will
P* will be used as help text
P* If a Message Text is passed this text will be used
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Help text or message id
P* Parameters: ParMsgTxt => Variable Message Text (Optional if a m
***************************************************************************
D Wx_FltHelp...
D PR OpDesc D ParField Like(FldRef.NameSQL) Const D Options(*Trim) D ParMsg Like(FldRefCGI.Help) Const D ParMsgTxt Like(FldRef.MsgText) Const D Options(*NoPass: *Trim) Source Code 4537: Prototype - Procedure Wx_FltHelp – Bedienerhilfe für Filter hinzufügen