Toolmaker Produkt-Dokumentation

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

Inhaltsübersicht


WOPiXX-Prozeduren im Überblick

Das komplette HTML-Dokument sowie der Datenaustausch zwischen RPG und HTML wird durch den Aufruf von RPGIV-Prozeduren gesteuert.

Prozeduren für Work-Tables

Zur Erstellung und Verarbeitung von Work-Tables (List-Anzeigen) stehen die folgenden Prozeduren zur Verfügung:

Tabelle 1: WOPiXX-Prozeduren für Work-Tables

Prozeduren für Change Tables

Zur Erstellung und Verarbeitung von Work-Tables (List-Anzeigen) stehen die folgenden Prozeduren zur Verfügung:


Tabelle 2: WOPiXX-Prozeduren für Change Tables

Parameter in WOPiXX-Prozeduren

  • Anzahl der Parameter:

Die Anzahl der Parameter in den WOPiXX-Prozeduren wurde auf ein Minimum beschränkt

  • Input/Output-Parameter:

Bei den einzelnen Parametern handelt es sich fast ausschließlich um Input Only-Parameter, die mit Schlüssel-Wort CONST definiert wurden.

  • Optionale Parameter:

Parameter, deren Übergabe nicht unbedingt erforderlich ist, wurden am Ende der Parameter-Liste als optionale Parameter definiert.
Nicht übergebene optionale Parameter werden zur Laufzeit durch Default-Werte ersetzt.

Aufbereitungsoptionen für WOPiXX

Um die Anzahl der Parameter so gering wie möglich zu halten, werden Aufbereitungsoptionen in Form von Schlüssel-Worten in einem Text-String übergeben. Sind mehrere Aufbereitungsoptionen erforderlich (z.B. Muss-Feld und Datumsaufbereitung), werden die Schlüssel-Worte hintereinander durch *Blanks getrennt angegeben.
Optionen sind nicht case sensitive, d.h. die folgenden Optionen führen zum gleichen Ergebnis: required, REQUIRED, Required, ReQUired

Steuerungsoptionen für HTML-Dokumente

Beim Öffnen der HTML-Dokumente können diverse Schlüssel-Worte für die Anzeige und Aufbereitung des Dokuments festgelegt werden.
Die Übergabe der Optionen erfolgt über Schlüssel-Worte beim Öffnen der HTML-Dokumente, d.h. beim Aufruf der Funktionen Wx_OpnHTMLWrk und WX_OpnHTMLChg.

  • HelpDocHinterlegen einer allgemeinen Hilfe für Detail- und List-Anzeigen.

Das Schlüssel-Wort HelpDoc wird in dem Paramter Options bei den Funktionen Wx_OpnHTMLWrk() und Wx_OpnHTMLChg() angegeben.
Das Schlüssel-Wort selber kann mit bis zu 4 Parametern, die durch Kommata getrennt werden, angegeben werden.
Die Syntax für das Schlüssel-Wort HelpDoc sieht wie folgt aus:
Wx_OpnHTMLWrk('Überschrift Programm': 'EXCHGCOMP': '':
'helpDoc(BedienerHilfe, WOPiXX.PDF)');
Wx_OpnHTMLWrk('Überschrift Programm': 'EXCHGCOMP': '':
'helpDoc(BedienerHilfe, WOPiXX.PDF, #page=8)');
Wx_OpnHTMLWrk('Überschrift Programm': 'EXCHGCOMP': '':
'helpDoc(MSG4711, MSG4712, *NONE, MyIcon.png)');
Syntax 1: Schlüssel-Wort HelpDocSource Code : Syntax Schlüssel-Wort HelpDoc
Das Schlüssel-Wort HelpDoc, sowie die einzelnen Parameter können in jeder beliebigen Groß-/Klein-Schreibung angegeben werden.

  • Parameter1Text/Beschreibung der Hilfe

Zwingend erforderlich
Text kann wahlweise direkt oder als Message-Id, die in den Anwendungs-Message-Files hinterlegt sein muss angegeben werden.

  • Parameter2PDF-Dokument oder Link der Bedienerhilfe

Zwingend erforderlich
Das Hilfe-Dokument kann wahlweise in Form eines PDF-Dokuments oder eines Links angegeben werden.
Ein PDF-Dokument wird ohne Pfad angegeben und muss in dem Anwendungs-Verzeichnis für Hilfe-Dokumente /www/dirweb/htdocs/HelpDocs/ANWENDING
Hinterlegt seim.
Für mehrsprachige Bedienerhilfe müssen unterschiedliche PDF-Dokument in der gleichen Message-Id in den Sprachen-Message-Files hinterlegt werden.
Alternativ kann ein Link entweder direkt oder über eine Message-Id angegeben werden.

  • Parameter3Bei PDF-Dokumenten kann im dritten Parameter ein

ein Anker in der Form #page=x (x=Seitenzahl) angegeben werden.
Optional
Sofern der 4. Parameter nicht benötigt wird und auch keine Seiten-Anzahl erforderlich ist, kann das Schlüssel-Wort HelpDoc mit nur 2 Parametern angegeben werden.
Sofern keine Seiten-Zahl benötigt wird, jedoch im 4. Parameter ein spezielles Icon hinterlegt werden soll, kann der 3. Parameter mit dem Default-Wert *NONE angegeben werden.

  • Parameter4Spezielles Icon

Optional
Sofern ein individuelles Icon verwendet werden soll, wird dieses ohne Pfad im 4. Parameter angegeben.
Das Icon muss im Anwendungs-Pfad für Icons /www/dirweb/htdocs/icons/ANWENDUNG
hinterlegt sein.
Wird kein Icon angegeben wird ein Default-Icon verwendet.
Das folgende Beispiel zeigt die Ausgabe des Hilfe-Textes und dem zugehörigen RPG-Code


Abbildung 3: Allgemeine Hilfe

Steuerungsoptionen nur für Work-Tables

Die folgenden Steuerungsoptionen gelten nur für Worktables

  • NoListWird das Schlüssel-Wort NoList übergeben, werden beim ersten Aufruf nur die Filter angezeigt.

Diese Auswahl ist insbesondere dann sinnvoll, wenn große Dateien durchsucht werden sollen und vorab die Möglichkeit einer Vorauswahl bereitgestellt werden soll.

  • EmptyListWird das Schlüssel-Wort EmptyList angegeben, werden die Filter und eine leere Liste angezeigt. Das SQL-Statement, das die Liste aufbaut wird ausgeführt. Die Anzahl der Datensätze wird angezeigt.

Bei großen Tabellen bzw. bei komplexen SQL-Statements sollte NoList der Angabe von EmptyList vorgezogen werden.

  • DoubleClickStandardmäßig wird bei DoubleClick auf einen Satz in der List-Anzeige das Folge-Programm im Änderungs-Modus eröffnet.

Vielfach ist dies jedoch nicht erwünscht, d.h. entweder soll das Folge-Programm bei Doppelklick im Anzeige-Modus geöffnet werden, oder bei Doppelkllick soll keine Aktion erfolgen
Weiterhin ist es möglich beim Doppeklick, bevor das Folge-Programm im Änderungs-Modus geöffent wird ein Bestätigungs-Fenster auszugeben.
Bei dem Schlüssel-Wort können ein oder zwei Parameter angegeben werden.Sofern beide Paramter angegeben werden, müssen sie durch ein Komma getrennt werden.
Die Syntax sieht wie folgt aus:
Wx_OpnHTMLWrk('TIT0012': 'EXCHGCOMP': '': 'DoubleClick(*NONE)');
Wx_OpnHTMLWrk('TIT0012': 'EXCHGCOMP': '': 'DOUBLECICK(*DSP)');
Wx_OpnHTMLWrk('TIT0012': 'EXCHGCOMP': '':
'DoubleClick(*Change, confirm)');
Wx_OpnHTMLWrk('TIT0012': 'EXCHGCOMP': '':
'DoubleClick(*Chg, CONFIRM(Achtung: Änderungsmodus))');
Wx_OpnHTMLWrk('TIT0012': 'EXCHGCOMP': '':
'DoubleClick(*Chg, confirm(BST0007))');
Source Code 19: Syntax Schlüssel-Wort DoubleClick
Das Schlüssel-Wort HelpDoc, sowie die einzelnen Parameter können in jeder beliebigen Groß-/Klein-Schreibung angegeben werden.

  • Parameter1 = Modus Zulä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-Klick

  • Parameter2 =Bestätigung Nur für Änderungs- und Anzeige-Modus

Zulässig sind die folgenden Angaben in jeder beliebigen Groß/Klein-Schreibung
Confirm = mit Standard-Bestätigungstext
Confirm(Text) = Bestätigungstext in Klammer
Confirm(MSGID) = Message-Id für Bestätigungstext in Klammer

  • Gruppierung: Schlüssel-Wort Group

Durch die Angabe des Schlüssel-Wortes Group bei Aufruf der Funktion WX_OpnHTMLWrk wird am Ende des Kontext-Menüs ein zusätzlicher Kontext-Menü-Punkt „Gruppieren" hinzugefügt.
Bei Auswahl dieses Kontext-Menü-Punktes werden die Daten in der Spalte, auf der der Cursor gerade steht, verdichtet.
Sofern einzelne Spalten nicht verdichtet werden sollen oder dürfen, kann dies durch Angabe des Schlüssel-Wortes NoGroup bei Aufruf der Funktion Wx_WrkFld unterbunden werden.

Vergleichsoperatoren für Filter Felder

Bei der Definition von Filter-Feldern können die folgenden Vergleichsoperatoren angegeben werden. Sofern kein Vergleichsoperator angegeben wurde, werden gleiche Werte (Operator =) selektiert.

  • =Es werden nur gleiche Werte selektiert
  • Entspricht:Where Feld = 'WERT'
  • <>Es werden nur ungleiche Werte selektiert
  • Entspricht:Where Feld <> 'WERT'


  • >Es werden alle Werte selektiert, die größer als der angegebene Wert sind
  • Entspricht:Where Feld > 'WERT'
  • <Es werden alle Werte selektiert, die kleiner als der angegebene Wert sind
  • Entspricht:Where Feld < 'WERT'
  • >=Es werden alle Werte selektiert, die größer oder gleich dem angegebenen Wert sind
  • Entspricht:Where Feld >= 'WERT'
  • <=Es werden alle Werte selektiert, die kleiner oder gleich dem angegebenen Wert sind
  • Entspricht:Where Feld <= 'WERT'


  • BetweenEs werden nur Werte selektiert, die zwischen dem unteren und oberen eingegebenen Wert liegen.

WOPiXX generiert für die Von-/Bis-Werte automatisch 2 Eingabe-Felder.

  • Entspricht:Where Feld between 'WERT1' and 'WERT2'
  • Not Between Es werden nur Werte selektiert, die außerhalb des angegebenen Bereichs liegen.
  • Entspricht:Where Feld Not between 'WERT1'

and 'WERT2'

  • In(Zahl) Es wird eine Liste von Werten für das gleiche Feld selektiert.

WOPiXX generiert eine Anzahl Eingabe-Felder, um eine Liste von Werten auswählen zu können. Die Anzahl der zu generierenden Felder wird im Vergleichsoperator angegeben.

  • IN(3) Entspricht:Where Feld In('WERT1', 'WERT2', 'WERT3')
  • Not InEs werden alle Werte selektiert, die nicht den gelisteten Werten entspricht.
  • Entspricht:Where Feld Not In(('WERT1', 'WERT2', 'WERT3')

Die folgenden Vergleichsoperatoren können nur für alphanumerische oder Unicode Text-Spalten/Felder verwendet werden.

  • LikeEs werden nur Texte selektiert, in denen der angegebene Text enthalten ist.
  • Entspricht: Where Feld Like '%SUCHE%'
  • Not LikeEs werden nur Texte selektiert, in denen der angegebene Text nicht enthalten ist
  • Entspricht:Where Feld Not Like '%SUCHE%'


  • LikeLeftEs werden nur Texte selektiert, die mit dem angegebenen Text beginnen
  • Entspricht:Where Feld Like 'SUCHE%'
  • Not LikeLeftEs werden nur Texte selektiert, die nicht mit dem angegebenen Text beginnen
  • EntsprichtWhere Feld Not Like 'SUCHE%


  • LikeRightEs werden nur Texte selektiert, die mit dem angegebenen Text enden.
  • Entspricht:Where Feld Like '%SUCHE'
  • Not LikeRightEs werden nur Texte selektiert, die nicht mit dem angegebenen Text enden.
  • Entspricht:Where Feld Not Like '%SUCHE'

Ob die Suche case sensitive oder case insensitive erfolgen, kann durch Angabe des entsprechenden Schlüssel-Wortes in den Optionen gesteuert werden.
Werden in dem zu suchenden Text die Sonderzeichen % (Prozent) und _ (Unterstrich) angegeben, so werden diese nicht als Platzhalter behandelt. Bei Eingabe des Wertes '100%' wird nicht nach einem Text in dem 100 und beliebige Zeichen enthalten sind, sondern in dem 100% enthalten sind gesucht.

Aufbereitungsoptionen für Filter-Felder

Für das gleiche Filterfeld können mehrere unterschiedliche Optionen angegeben werden. Die einzelnen Optionen werden durch Blanks getrennt in dem Parameter Option als Text übergeben. Die Schlüsselworte können in jeder beliebigen Groß/Kleinschreibung angegeben werden.
Bei der Definition von Filter-Feldern können die folgenden Aufbereitungsoptionen angegeben werden.

  • CTL(xxx)Vom Programmierer in Directweb hinterlegte Selektions-Kriterien


  • ExecSQL(Name) oder ExecSQL(Name, NoList)

Vom Programmierer in Directweb hinterlegte SQL-Abfragen, über die die gewünschten Werte als Combobox oder in einem Fenster aufbereitet, angezeigt und ausgewählt werden können.
Die Angabe des 2. Parameters NoList bewirkt, dass zunächst nur die Filter-Felder angezeigt werden, so dass eine Vorauswahl getroffen werden kann.

  • EnhFltErweiterter Filter

Das Feld kann durch Klicken auf die Pfeil auf/ab Buttons ein- und ausgeblendet werden.
Anstatt das Schlüssel-Wort bei jedem erweiterten Filterfeld anzugeben kann auch die Funktion Wx_BegEnhFlt() – Beginn erweiterter Filter vor dem ersten erweiterten Filter-Feld aufgerufen werden.

  • CenterSpalten-Inhalt zentrieren
  • LeftSpalten-Inhalt linksbündig ausrichten
  • RightSpalten-Inhalt rechtsbündig ausrichten


  • UppercaseEingabe wird in Großbuchstaben übersetzt
  • LowercaseEingabe wird in Kleinbuchstaben übersetzt


  • NewLineNächstes Feld in nächste Zeile (Default-Wert)
  • NoNewLineNächstes Filter-Feld in der gleichen Zeile


  • Checkbox oder LogicalFür Schalter (0/1)
  • 1Häkchen (eingabefähiges Feld)
  • 0Leeres (eingabefähiges) Feld


  • DateNumFür numerisches Datum im Format JJJJMMTT

Aufbereitung als Datum

  • TimestampNum Für numerische Zeitmarken im Format JJJJMMTTHHMMSS

 Aufbereitung als Zeitmarke

  • TimeNumFür numerische Zeit im Format HHMMSS

 Aufbereitung als Zeit

  • HHMMNum Für numerische Zeit im Format HHMM

 Aufbereitung als Zeit
Für Echte Datums- und Zeit-Felder müssen keine Aufbereitungsoptionen definiert werden.

  • Required Bei dem Filter-Feld handelt es sich um ein Muss-Feld
  • NotRequiredBei dem Filter-Feld handelt es sich um ein Kann-Feld


  • SelectListCombobox mit gültigen Werten
  • SyntaxSelectList oder SelectList()

Bildet Combobox mit allen unterschiedlichen Feldwerten in dem definierten Feld in den definierten Dateien/Tabellen/Views.
z.B. für Auswahl Stati / Auswahl Länder

  • SyntaxSelectList(MyFld) oder SelectList(Field=MyFld)

oder SelectList(Field='MyFld')
Bildet Combobox mit allen unterschiedlichen Feldwerten in dem Feld MYFLD in den definierten Dateien/Tabellen/Views

  • SyntaxSelectList(File=MyFile, MyFld) oder

SelectList(File=MyFile, Field=MyField) oder
SelectList(File='MyFile', MyFld) oder
SelectList(File='MyFile', Field=MyField)
Bildet eine Combobox mit allen Unterschiedlichen Feldwerten in der angegebenen Datei/Tabelle/View mit dem angegebenen Feld.
Die angegebene Datei/Tabelle/View, sowie das angegebene Feld müssen nicht zwangsläufig definiert sein.

  • SQLListCombobox basierend auf einem SQL-Select-Statement
  • SyntaxSQLList(SQLStatement(wink)

Wichtig: Das SQL-Select-Statement mit einem Semi-Colon ((wink) abgeschlossen werden.
Bildet eine Combobox basierend auf dem Ergebnis, das das SQL-SELECT-Statement zurückliefert.
Wird in dem SELECT-Statement nur eine einzige Spalte definiert, wird nur diese angezeigt und die entsprechenden Werte zurückgegeben:
SQLList(Select Distinct PLZ from AdresseX(wink)

  • Rückgabe PLZ


Werden in dem SELECT-Statement mehrere Spalten ausgewählt, so werden die Spalten-Werte aus der 2. Spalte angezeigt. Bei Auswahl wird der Wert der 1. Spalte zurückgegeben.
SQLList(Select Distinct PLZ, +
PLZ concat ' ' concat ORT +
From AdresseX(wink)

  • Anzeige: z.B. 86916 Kaufering
  • Rückgabe: 86916


  • DependList Abhängige Combobox mit gültigen Werten

Basierend auf dem eingegebenen Wert in einem anderen Feld werden nur die abhängigen Auswahlkriterien angezeigt.
Das Feld von dem die Werte in der Combobox abhängen, muss vor dem abhängigen Feld definiert werden.
Beispiel: Abh. vom Land enthält die Combobox nur die Orte, die in dem entsprechenden Land liegen.

  • SyntaxDependList(MyFld)

Bildet die Werte in der Combobox abhängig von dem erfassten Wert in MyFld.

  • SyntaxDependList(File=MyFile, MyFld, KeyA=KeyB)

Bildet die Combobox aus der Tabelle MyFile und der Spalte MyFld (in Tabelle MyFile). Die Tabelle MyFile wird über den Schlüssel KeyB mit dem Feld KeyA (das zuvor definiert wurde) mit der definierten Tabelle, in der KeyA hinterlegt ist verknüpft.
Sofern mehrere Schlüssel-Felder erforderlich sind, müssen diese anschließend durch ein logisches AND getrennt angegeben werden.
 KeyA1=KeyB1 and KeyA2=KeyB2 etc.)
Beispiel: Das Land (Spalte ELAND) wird erfasst. Die Orte (Spalte XORT) die ausgewählt werden dürfen sind in Datei ADRESSEX hinterlegt.
DependList(File=AdresseX,
XORT, ELAND=XLand)

  • ValuesListBildet eine Combobox aus den vorgegebenen Werten:
  • SyntaxValuesList(Offen, Bestätigt, Erledigt)

ValuesList(2, 4, 8, 16, 32)

  • ListNumRangeBildet eine Combobox mit allen numerischen Werten in dem angegebenen Bereich
  • SyntaxListNumRange(100, 150)

Bildet eine Combobox mit allen ganzzahligen Werten zwischen 100 und 150

  • SyntaxListNumRange(100, 150, 10)

Bildet eine Combobox mit den Werten 100, 110, 120, 130, 140, 150,

  • ListMonthBildet eine Combobox mit den Werten 1-12 für den Monat
  • SyntaxListMonth


  • ListMonthName

Combobox mit sprachenabhängigen Monatsnamen, sortiert nach dem numerischem Monat (Januar=1, Dezember=12).

  • Rückgabe-Wertsprachenabhängiger Monatsname
  • SyntaxListMonthName
  • ListMonthNameNum

Combobox mit sprachenabhängigen Monatsnamen, sortiert nach dem numerischen Monat (Januar=1, Dezember=12)

  • Rückgabe-Wertnumerischer Monat (Januar=1 / Dezember=12)
  • SyntaxListMonthNameNum


  • ListDayBildet eine Combobox mit den Werten 1-31 für den Tag im Monat

Aktuell keine abhängige Combobox

  • ListDayName

Combobox mit sprachenabhängigen Wochentagsnamen, sortiert nach dem numerischem Wochentag (Montag=1, Sonntag=7).

  • Rückgabe-Wertsprachenabhängiger Wochentagsname
  • SyntaxListDayName
  • ListDayNameNum

Combobox mit sprachenabhängigen Wochentagssnamen, sortiert nach dem numerischen Wochentag (Montag=1, Sonntag =7)

  • Rückgabe-Wertnumerischer Wochentag (Montag=1 / Sonntag=7)
  • SyntaxListDayNameNum



  • ListHourBildet eine Combobox mit den Werten 0-24 für die Stunden
  • ListMinSecBildet eine Combobox mit den Werten 0-59 für Minuten und Sekunden


  • AutoComplete AutoComplete Combobox
  • Syntax: AutoComplete oder Autocomplete()

Bildet eine AutoComplete Combobox basierend auf den aktuellen Werten in dem definierten Feld aus den definierten Tabellen.

  • Syntax:Autocomplete(File=MyFile, MyFld)

Bildet eine AutoComplete Combobox basierend auf den Werten in der Spalte MyFld aus der Tabelle MyFile.

  • DependAuto Abhängige Autocomplete Combobox
  • SyntaxDependAuto(MyFld)

Bildet die Werte in der AutoComplete Combobox abhängig von dem erfassten Wert in Spalte MyFld.

  • Syntax AutoDepend(File=MyFile, MyFld, KeyA=KeyB)

Bildet die AutoComplete Combobox aus der Tabelle MyFile und der Spalte MyFld (in Tabelle MyFile). Die Tabelle MyFile wird über den Schlüssel KeyB mit dem Feld KeyA (das zuvor definiert wurde) mit der definierten Tabelle, in der KeyA hinterlegt ist verknüpft.
Sofern mehrere Schlüssel-Felder erforderlich sind, müssen diese anschließend durch ein logisches AND getrennt angegeben werden.
 KeyA1=KeyB1 and KeyA2=KeyB2 etc.)
Beispiel: Das Land (Spalte ELAND) wird erfasst. Die Orte (Spalte XORT) die ausgewählt werden dürfen sind in Datei ADRESSEX hinterlegt.
AutoDepend(File=AdresseX,
XORT, ELAND=XLand)

Aufbereitungsoptionen für Spalten

Für eine Spalte können mehrere unterschiedliche Aufbereitungs-Optionen angegeben werden. Die einzelnen Optionen werden durch Blanks getrennt in dem Parameter Option als Text übergeben.
Die Schlüsselworte können in jeder beliebigen Form der Groß/Kleinschreibung angegeben werden.
Bei der Definition von Spalten in Work Tables können die folgenden Aufbereitungsoptionen angegeben werden.

  • CenterSpalten-Inhalt zentrieren
  • LeftSpalten-Inhalt linksbündig ausrichten
  • RightSpalten-Inhalt rechtsbündig ausrichten


  • HiddenSpalte wird nicht angezeigt


  • LogicalFür Schalter (0/1)
  • 1Anzeige als Häkchen
  • 0Leere Spalte


  • DateNumFür numerisches Datum im Format JJJJMMTT

Aufbereitung als Datum

  • TimestampNum Für numerische Zeitmarken im Format JJJJMMTTHHMMSS

 Aufbereitung als Zeitmarke

  • TimeNumFür numerische Zeit im Format HHMMSS

 Aufbereitung als Zeit

  • HHMMNum Für numerische Zeit im Format HHMM

 Aufbereitung als Zeit
Für Echte Datums- und Zeit-Felder müssen keine Aufbereitungsoptionen definiert werden.

  • CTL(xxx)Aufbereitung und Anzeige von Werten aus der Parameter-Control-Table (DWPRMCTL)


  • Filter(xxx)Definition von Inline-Filter. Die folgenden Optionen (xxx) sind zulässig:
  • Text_Filter
  • Select_Filter
  • Combo_Filter
  • Text_Search
  • Numeric_Filter


  • ImageHandelt es sich bei dem Spalten-Inhalt um einen Link (IFS-Datei-Name), so wird die IFS-Datei (z.B. Bild oder Icon) an dieser Stelle angezeigt

Sofern nur das Schlüssel-Wort Image angegeben wird, wird das Bild in Icon-Größe ausgegeben.
Mit Schlüssel-Wort Image können jedoch auch Größen-Angaben in der Form Image(Breite, Höhe) z.B. Image(120, 100) übergeben werden.
Die Höhe und Breite werden in Pixel angegeben
Bei der MouseOver-Aktion wird das Bild entweder in die Origianlgröße (Schlüssel-Wort ohne Parameter) oder in die angegebene Gr´öße (Schlüssel-Wort mit Parameter) vergrößert.

Abbildung 4: Schlüssel-Wort Image - Bilder in List-Anzeigen

  • Exit()Externe Funktionen für die Aufbereitung


  • NoSortPer Default können List-Anzeigen nach allen definierten Spalten sortiert werden.

Sofern für einzelne Spalten eine Sortierung nicht zulässig ist, kann das Schlüssel-Wort NoSort angegeben werden.

  • OutputWird nur in Verbindung mit editierbaren List-Anzeigen berücksichtigt

Sofern bei editierbaren List-Anzeigen bei der Spalten-Definition das Schlüssel-Wort output angegeben wurde, wird die Spalte für die Eingabe gesperrt.

  • Footer()Mit dem Schlüssel-Wort Footer beim Definieren von Spalten in List-Anzeigen kann für die Spalte ein aggregierter Wert oder Text angezeigt werden.
  • Footer oder Footer(*SUM)Summe über alle Spalten-Werte
  • Footer(*AVG)Durchschnitt über alle Spalten-Werte
  • Footer(*MIN)Kleinster Wert
  • Footer(*MAX)Größter Wert
  • Footer(MSGID oder Text) Text wird angezeigt


Im folgenden Beispiel wird eine List-Anzeige mit einem Summen-Text und der Summe über alle eingelesenen Umsätze (Sales)

Das folgende Code-Beispiel zeigt die Definition der Beiden Spalten „Item No" und „Sales".

Achtung: Wird das Schüssel-Wort Footer angegeben so werden 1.000 Zeilen (anstatt 100 Zeilen mit Nachladen) gelesen. Da bei der Footer-Funktion nur die geladenen Zeilen aggregiert werden, kann die Funktion korrekte Werte liefern, wenn das Ergebnis maximal 1.000 Zeilen enthält.

  • bgColor(Farbe) Mit Hilfe des Schlüssel-Wortes bgColor kann die Hintergrund-Farbei bei einer Spalte festgelegt bzw. geändert werden.
  • Bgcolor(red)Angabe der Farbe z.B. red, blue, white
  • Bgcolor(#FFF5B7) Angabe der Farbe als Hex-Wert


  • FntColorÜber das Schlüssel-Wort FntColor(Farbe) kann die Text-Farbe von Buttons vorgegeben werden. Die Angabe der Farbe erfolgt wie in HTML, also z.B. Farbe in englisch fntColor(red). Alternativ kann anstatt der Farbe auch ein Hex-Wert angegeben werden, z.B. fntColor(#FFF5B7)



Aufbereitungsoptionen Kontext-Menü-Punkte

Für Kontext-Menü-Punkte können die folgenden Aufbereitungsoptionen angegeben werden:

  • LineIm Kontext-Menü wird vor dem Menü-Punkt eine Trennlinie eingefügt


  • Window / NoWindow

Das Folge-Programm wird in einem Fenster-Format ausgegeben.
Sofern das Folge-Programm nicht in einem Fenster ausgegeben werden soll, muss explizit das Schlüssel-Wort NoWindow angegeben werden.
Wird NoWindow angegeben und das Folge-Programm eine Bildschirmausgabe erfordert, wird das Folge-Programm als Voll-Bild angezeigt.
Die Angabe des Schlüssel-Wortes Window ist optional.

  • Icn(xxxx.gif) Icon, das in Verbindung mit dem Kontext-Menü-Punkt angezeigt wird.


  • ConfirmAnzeige Bestätigungsfenster vor Aufruf des eigentlichen Verarbeitungsprogramms
  • ConfirmDefault-Bestätigungstext
  • Confirm(X)X = Message-Text oder Message-Id für

Individuelle Nachrichten

  • HelpTextHilfe-Texte, die bei Mouse Over angezeigt werden.

Sofern für die Mesage-Id für den Button-Text bzw. den Kontext-Menü-Item-Text ein Level2-Text hinterlegt ist, wird dieser bei Mouse-Over automatisch angezeigt.
Durch das Schlüssel-Wort HelpText können auch andere Hilfe-Texte eingebunden werden. Der Hilfe-Text kann in Verbindung mit dem Schlüssel-Wort HelpText direkt angegeben oder als Message-Id hinterlegt werden.

  • HelpText(Dies ist ein HilfeText)

Direkte Angabe des Hilfe-Textes

  • HelpText(MSG4711) Hilfe-Text (Level1) wird aus der Message-Id ermittelt
  • NoHelpTextÜber das Schlüssel-Wort NoHelpText kann die Anzeige des Level2 Hilfe-Textes für Buttons und Kontext-Menü-Einträge verhindert werden.



Abbildung 5: Kontext-Menü-Punkte mit Bestätigungsfenster

  • ParCondBedingungen für Menü-Auswahl

Bedingungen können wahlweise in einer der folgenden Schreibweisen angegeben werden. Groß/Kleinschreibung spielt keine Rolle:

  • CLz.B. Spalte1 *EQ 123 *AND Spalte2 *GT 'ABC'
  • RPG/SQLz.B. Spalte1 = 123 and Spalte2 > 'ABC'
  • JavaScriptz.B. {3} == 123 && {5} > 'ABC'


Abbildung 6: Bedingte Kontext-Menü-Punkte

  • ShortCutAnstatt der Kontext-Menü-Auswahl kann die Auswahl auch über ShortCut erfolgen.

ShortCuts werden bei der Funktion WX_CtxMnuItm() bzw. bei den Prozeduren, über die die Standard-Auswahlen definiert werden können, über Schlüssel-Wort ShortCut registriert.
Sofern für die Kontext-Menü-Auswahl ein ShortCut definiert wurde, wird dieser bei der Kontext-Menü-Auswahl angezeigt
Syntax: ShortCut(xxx)

  • ShortCut(Funktionstaste)  ShortCut(F6)
  • ShortCut(Alt+Funktionstaste)  ShortCut(Alt+F6)
  • ShortCut(Alt+Ziffer)  ShortCut(Alt+2)
  • ShortCut(Alt+Buchstabe)  ShortCut(Alt+A)
  • ShortCut(Ctrl+Funktionstaste)  ShorCut(Ctrl+F8)
  • ShortCut(Ctrl+Ziffer)  ShortCut(Crtl+3)
  • ShortCut(Ctrl+Buchstabe)  ShortCut(Ctrl+B)


Abbildung 7: Kontext-Menü-Punkte mit ShortCuts

Aufbereitungsoptionen für Buttons

Für Buttons in Worktables können die folgenden Aufbereitungsoptionen angegeben werden:

  • WindowDas Folge-Programm wird in einem Fenster-Format ausgegeben.


  • ConfirmAnzeige Bestätigungsfenster vor Aufruf des eigentlichen Verarbeitungsprogramms
  • ConfirmDefault-Bestätigungstext
  • Confirm(X)X = Message-Text oder Message-Id für

Individuelle Nachrichten

  • ShortCutAnstatt auf den Button zu Klicken, dann die Aktion auch über einen Shortcut aktiviert werden.

ShortCuts werden bei der Funktion WX_WrkBtn() bwz. bei den Funktionen über die die Standard-Buttons definiert werden können mit Hilfe des Schlüssel-Wortes ShortCut registriert.
Sofern für den Button ein ShortCut hinterlegt
wurde, wird dieser im Button-Text angezeigt.
Buttons, die über Shortcut aktiviert werden können, müssen nicht zwangsläufig angezeigt werden. Wenn Buttons über Shortcuts aktiviert und abgeblendet werden sollen, muss im Schlüssel-Wort ShortCut ein zweiter Parameter mit dem Wert hidden angegeben werden.
Syntax: ShortCut(xxx) oder ShortCut(xxx,hidden)

  • ShortCut(Funktionstaste)  ShortCut(F6) ShortCut(F6,hidden)
  • ShortCut(Alt+Funktionstaste)  ShortCut(Alt+F6)
  • ShortCut(Alt+Ziffer)  ShortCut(Alt+2)
  • ShortCut(Alt+Buchstabe)  ShortCut(Alt+A)
  • ShortCut(Ctrl+Funktionstaste)  ShorCut(Ctrl+F8)
  • ShortCut(Ctrl+Ziffer)  ShortCut(Crtl+3)
  • ShortCut(Ctrl+Buchstabe)  ShortCut(Ctrl+B)


  • BgColorÜber das Schlüssel-Wort BgColor(Farbe) kann die Hintergrund-Farbe von Buttons bestimmt werden. Die Angabe der Farbe erfolgt wie in HTML, also z.B. Farbe in englisch BgColor(red). Alternativ kann anstatt der Farbe auch ein Hex-Wert angegeben werden, z.B. bgColor(#FFF5B7)


  • FntColorÜber das Schlüssel-Wort FntColor(Farbe) kann die Text-Farbe von Buttons vorgegeben werden. Die Angabe der Farbe erfolgt wie in HTML, also z.B. Farbe in englisch fntColor(red). Alternativ kann anstatt der Farbe auch ein Hex-Wert angegeben werden, z.B. fntColor(#FFF5B7)


  • HelpTextHilfe-Texte, die bei Mouse Over angezeigt werden.

Sofern für die Mesage-Id für den Button-Text bzw. den Kontext-Menü-Item-Text ein Level2-Text hinterlegt ist, wird dieser bei Mouse-Over automatisch angezeigt.
Durch das Schlüssel-Wort HelpText können auch andere Hilfe-Texte eingebunden werden. Der Hilfe-Text kann in Verbindung mit dem Schlüssel-Wort HelpText direkt angegeben oder als Message-Id hinterlegt werden.

  • HelpText(Dies ist ein HilfeText)

Direkte Angabe des Hilfe-Textes

  • HelpText(MSG4711) Hilfe-Text (Level1) wird aus der Message-Id ermittelt
  • NoHelpTextÜber das Schlüssel-Wort NoHelpText kann die Anzeige des Level2 Hilfe-Textes für Buttons und Kontext-Menü-Einträge verhindert werden.
  • WaitMsgDas Schlüssel-Wort WaitMsg kann angegeben werden, wenn über einen Klick auf einen Button oder einer Kontext-Menü-Auswahl ein Programm ohne Anzeige aufgerufen wirde.

Sofern das Schlüssel-Wort WaitMsg bei einem Button oder Kontext-Menü-Eintrag angegeben wurde, wird bei Aktivierung des Buttons bzw. bei Aufruf des Programms eine „Uhr" angezeigt, die erst bei Beendigung der Verarbeitung wieder abgeblendet wird.

Abbildung 1: Bildschirm-Anzeige, wenn WaitMsg aktiviert wurde
Der angezeigte Text, kann durch die Angabe einer Message-Id oder einer Meldung im Klartext bei Schlüssel-Wort WaitMsg gesteuert werden.
Beispiele:

  • Work-Programm: Button und Kontext-Menü-Item

Wx_WrkBtn('WAITBTN': 'TSTB004': 'WaitMsg(BST0009)');
Wx_CtxMnuItm('WAITCTX': 'TSTC004': 'WaitMsg(Bitte Warten!)');
Source Code 20: Definition von Work-Buttons und Kontext-Menü-Items mit Schlüssel-Wort WaitMsg

  • Change-Programm: Button

Wx_ChgBtn('EXWAIT' : 'TSTB004': 'waitMsg(BST0009)');
Source Code 21: Definition von Change-Buttons mit Schlüssel-Wort WaitMsg

Aufbereitungsoptionen für Detail-Anzeigen

Für Felder in Detail-Anzeigen/Change Tables können für die Auswahl und Anzeige die gleichen Aufbereitungsoptionen wie für die Filter-Felder angegeben werden. Daneben gibt es noch weitere Optionen, die nur für Change Tables gelten

  • OutputNur Ausgabe-Feld

Im Anzeige-Modus wird die Option automatisch von WOPiXX gesetzt.

  • NotRequiredKann-Feld (Default-Wert)
  • RequiredMuss-Feld


  • NewLineNächstes Feld in nächste Zeile (Default-Wert)
  • NoNewLineNächstes Filter-Feld in der gleichen Zeile


  • PasswordVerschlüsselt Eingabe


  • CheckboxFür Schalter (0/1)
  • 1 oder YHäkchen (eingabefähiges Feld)
  • 0 oder NLeeres (eingabefähiges) Feld
  • CheckBox (Left)Text immer auf der linken Seite


  • TextAreaFür einen Text-Bereich

Anzahl Zeilen und Spalten/Zeichen müssen als Parameter-Werte bei Schlüssel-Wort TextArea angegeben werden:
TextArea(10, 80) = Text-Bereich 10 Zeilen hoch und 80 Zeichen breit

  • EditTextFür editierbaren Textbereich

Anzahl Zeilen und Spalten/Zeichen müssen als Parameter-Werte bei Schlüssel-Wort EditText angegeben werden.
EditText(10, 80) = editierbarer Textbereich 10 Zeilen hoch und 80 Zeichen breit

Abbildung 8: Text-Bereiche

  • Img(IFSDatei, Breite, Höhe, Benutzer)

Zur Anzeige von Bildern muss ist die Definition eines reinen Ausgabe-Feldes (ohne Inhalt) erforderlich.
Bei dem Schlüssel-Wort können bis zu 4 Parameter, mindestens jedoch der erste angegeben werden. Die einzelnen Parameter werden durch Kommata von einander getrennt

  • Parameter1: IFSDateiPfad und Name des Bildes
  • Parameter2: BreiteNumerischer Wert
  • Parameter3: HöheNumerischer Wert
  • Parameter4: Benutzer


  • isWWWText in einem Ausgabe-Feld wird als Link interpretiert.

Bei Klick auf den Text wird der Link aktiviert.

  • LibObjDas Schlüssel-Wort LibObj kann für ein 20-stelliges alphnumerisches Feld, in dem sich auf den ersten 10 Stellen ein Objekt-Name und ab Stelle 11 ein Bibliotheks-Name hinterlegt ist.

Wird das Schlüssel-Wort LibObj angegeben, wird das 20-stellige Feld in der Ausgabe in zwei unabhängige Felder gesplittet. In dem ersten Feld wird der Bibliotheks-Name und in dem zweiten Feld der Objekt-Name des Objekts angezeigt. In der Anzeige sind beide Felder durch einen Schrägstrich (Slash /) getrennt.
Beim Sichern werden die Werte aus beiden Feldern wieder zusammengefasst und in die 20-stellige RPG-Variable ausgegeben.

Abbildung 2: Anzeige qualifiziertes Objekt bei Schlüssel-Wort LibObj

  • Obj(*ObjectType)

Das Schlüssel-Wort LibObj und das Schlüssel-Wort Obj(*ObjectType) gehen Hand in Hand. Wird zusätzlich zu dem Schlüssel-Wort LibObj das Schlüssel-Wort Obj(*ObjType) angegeben, wird ein Matchode –Fenster, aus dem qualifizierte Objekte des angegebenen Objekt-Typen ausgewählt werden.
Die ObjektTypen werden wie im CL mit vorangestelltem Sternchen, also z.B. *SRVPGM oder *FILE angegeben.
Wird das Schlüssel-Wort LibObj ohne das Schlüssel-Wort Obj(*ObjectType) angegeben, wird kein Matchode-Fender bereitgestellt.

Source Code 22: Definition von qualifizieren Objekten mit Schlüssel-Wort LibObj und Obj(*ObjType)

Abbildung 3: Qualifiziertes Objekt mit Matchcode-Anzeige
Neben diesen speziellen Schlüssel-Worten können bei der Definition von Ein-/Ausgabe-Feldern auch alle Schlüssel-Worte, die auch für Filter-Felder zulässig sind, verwendet werden.

Aufbereitungsoptionen für Header

Für Header-Felder können die folgenden Aufbereitungsoptionen angegeben werden.

  • NewLineNächstes Feld in nächste Zeile (Default-Wert)


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:

  • *ADDButton  Erfassen (eines neuen Datensatzes)
  • *CHANGEKontext-Menü  Ändern (des Datensatzes)
  • *COPYKontext-Menü  Kopieren (des Datensatzes)
  • *DELETEKontext-Menü  Löschen (des Datensatzes)
  • *PROPERTY Kontext-Menü  Anzeigen (des Datensatzes)

Die Standard-Optionen werden an das Folge-Programm übergeben und können über WOPiXX-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 WOPiXX-Prozeduren geprüft und ermittelt werden.
In Change-Programmen werden automatisch Buttons mit den folgenden Standard-Optionen hinzugefügt:

  • *SAVESichern
  • *APPLYÜbernehmen
  • *REFRESHAktualisieren

Diese Standard-Modi können ebenfalls über WOPiXX-Funktionen geprüft und ermittelt werden. Die Prüfung sollte jedoch erst nach Aufruf der WOPiXX-Funktion Wx_GetChgInput() (ähnlich OpCode EXTFMT) erfolgen.

Bedingtes Anzeigen von Ein-/Ausgabe-Feldern

Für Filter-Felder und Ein-/Ausgabe-Felder in Change Tables können Bedingungen vordefiniert werden, unter denen die Felder angezeigt oder ausgeblendet werden.
Zur Definition der Bedingungen werden mehrere Möglichkeiten zur Verfügung gestellt:

Optionaler Parameter in WOPiXX-Prozeduren

Alle Prozeduren, durch die Filter- oder Ein-/Ausgabe-Felder definiert werden können, haben einen optionalen Parameter, in dem die Bedingung unter der das Feld angezeigt werden soll, hinterlegt werden kann.

Condition Group

Die Condition Group besteht aus 3 Prozeduren:

      • Wx_FltIf() für Filter-Felder und Wx_ChgIf() für Ein-/Ausgabe-Felder stellen den Beginn der Condition Group dar.


Über diese Prozeduren werden die Bedingungen festgelegt, unter denen die im Anschluss definierten Filter- oder Ein-/Ausgabe-Felder angezeigt werden sollen.

      • Über die Prozeduren Wx_FltElse() für Filter-Felder und Wx_ChgElse() für Ein-/Ausgabe-Felder können die Else-Bedingungen definiert werden.


Der Aufruf der Else-Prozeduren ist nicht zwingend erforderlich.
Werden diese Else-Prozeduren ohne Parameter/Bedingung aufgerufen, werden alle im Anschluss definierten Filter- oder Ein-/Ausgabe-Felder nur dann angezeigt, wenn die in der If-Anweisung definierten Bedingungen nicht zutreffen.
Bei diesen Else-Prozeduren kann ebenfalls eine Bedingung hinterlegt werden und somit eine ElseIF-Anweisung generiert werden.

      • Wx_FltEndIf() für Filter-Felder und Wx_ChgEndIf() für Ein-/Ausgabe-Felder beenden die Condition Group.


Der Aufruf der EndIf-Prozeduren ist zwingend erforderlich, um die Condition-Group zu beenden.
Zu jedem Aufruf einer WOPiXX-IF-Funktion muss eine entsprechende WOPiXX-EndIf aufgerufen werden.
Stimmt die Anzahl der IF- und ENDIF-Aufrufe nicht überein, tritt zur Laufzeit ein Fehler auf.
Condition Groups können verschachtelt werden, d.h. eine If-Anweisung innerhalb einer If- oder Else-Anweisung ist zulässig. Die Verschachtelung, sowie die Anzahl der IF- und ENDIF-Anweisungen werden zur Laufzeit geprüft.

Bedingungen

    • 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

Beispiel für bedingte Filter-Felder

Wx_FltFld('BestNr': 'FLD0025': 'LikeLeft': 'uppercase');
Wx_FltIf('Firma = 10'); //1. If
Wx_FltFld('LiefBed': 'FLD0029': '=': 'uppercase');
Wx_FltIf('LiefBed *EQ ''AW'''); //2. If
Wx_FltFld('KundeNr': 'KundeNr': '=': 'uppercase');
Wx_FltEndIf(); //2. EndIf
Wx_FltElse('Firma = 15'); //1. ElseIf
Wx_FltFld('AuftrArt': 'FLD0027': '=': 'uppercase');
Wx_FltIf('%Subst(AuftrArt: 1: 1) = ''I'''); //2. If
Wx_FltFld('Status': 'FLD0026': '=':
'ValuesList(''ERF'',''OPN'',''TEL'',''END'')': '');
Wx_FltElse('AuftrArt = ''EX'' *or AuftrArt = ''EA'' //2. ElseIf
Wx_FltFld('LiefTerm': 'LieferTermin');
Wx_FltEndIf(); //2. EndIf
Wx_FltEndIf(); //1. EndIf
Source Code 2319: Bedingte Filter-Felder

Abbildung 9: Ergebnis Bedingte Filter-Felder für Firma 10

Abbildung 10: Ergebnis Bedingte Filter-Felder für Firma 15
;

Bedienerhilfe

Für Ein-/Ausgabe-Felder können individuelle Bedienerhilfe-Texte definiert werden.
Default: Der Level 2 Message-Text der Feldüberschrift wird als Bedienerhilfe ausgegeben.
Die Bedienerhilfe kann zum einen über einen optionalen Parameter in allen Definitions-Funktionen für Change-Tables (z.B. Wx_ChgFld() oder Wx_ManChgFldChar()) angegeben werden.
Alternativ kann die Bedienerhilfe die Funktion Wx_ChgHelp() für einzelne Felder eingebunden werden.
Dabei kann wahlweise direkt ein Text oder eine Message-Id übergeben werden. Wird eine Message-Id übergeben wird per Default der Level 2-Message-Text dieser Message-Id ermittelt und als Hilfe-Text ausgegeben.
Default: 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 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_ChgNoHelp() entweder für ein einzelnes Feld oder alle Felder unterbunden werden.
Sofern für ein Ein/Ausgabe-Feld eine Bedienerhilfe vorliegt, wird die Ausgabe des Fragezeichen-Icons gekennzeichnet. Bei der Mouse Over-Aktion wird der Hilfe-Text angezeigt.

Abbildung 11: Bedienerhilfe in Change Programmen

Wx_ChgHelp – Bedienerhilfe hinzufügen

Mit Hilfe der Funktion Wx_ChgHelp können in Change-Programmen Hilfe-Texte zugewiesen werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_ChgHelp
P* Purpose: Add individual help to a change field
P* If a Message-Id is passed the 2nd Level Message Text will
P* be used as help text
P* If a Message-Text is passed this text will be used as Hel
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Help text or message id
P* Parameters: ParMsgTxt => Variable Message Texte
P* (Optional if a message id is specified)
***************************************************************************
D Wx_ChgHelp...
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 24204: Prototype - Procedure Wx_ChgHelp - Bedienerhilfe hinzufügen

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable


  • ParMsgBedienerhilfe oder Message-Id der Bedienerhilfe

Bedienerhilfe wird aus Level 2 Message-Text der Message-Id ermittelt

  • ParMsgTxtVariable Message-Textes

Sofern eine Message-Id übergeben wurde, können zusätzlich Variable Message-Texte (die die Platzhalter in dem Message-Text ersetzen angegeben werden)

Beispiele für den Aufruf

Wx_ChgHelp('ARTNR': 'ABC1234');
Wx_ChgHelp('ARTNR': 'ABC1234': MyFld1 + ' ' + MyFld2);
Wx_ChgHelp('KUNDENR': 'Dies ist ein Hilfetext für die Kunden-Nr. ');
Source Code 25205: Aufruf Prozedur Wx_ChgHelp() - Bedienerhilfe hinzufügen

Wx_ChgNoHelp – Bedienerhilfe unterbinden

Mit der Funktion Wx_ChgNoHelp() kann die automatische Ermittlung der Bedienerhilfe für einzelne Felder oder alle Felder unterbunden werden.

Prototyp

*************************************************************************
P* Procedure name: Wx_ChgNoHelp
P* Purpose: Prevents from adding automatic help texts
P* Returns:
P* Parameters: ParField => Field (Optional)
P* Not Passed or Special Value *ALL
P*  No Help Text for any field
*************************************************************************
D Wx_ChgNoHelp...
D PR OpDesc
D ParField Like(FldRef.NameSQL) Const
D Options(*NoPass: *Trim)
Source Code 26206: Prototype Procedure Wx_ChgNoHelp - Automatische Ermittlung der Bedienerhilfe unterbinden

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

(Optional)
Nicht übergeben oder Sonderwert *NONE  Bedienerhilfe wird für alle Felder unterbunden

Beispiele für den Aufruf

Wx_ChgNoHelp('ARTNR');
Wx_ChgNoHelp();

Source Code 27207: Aufruf Procedure Wx_ChgNoHelp - Automatische Ermittlung der Bedienerhilfe unterbindenReihenfolge der Prozedur-Aufrufe

    • Prüfen Verarbeitungs-Modi

Für Change Tables, um die im vorgelagerten Programm (z.B. Work Table) ausgelösten Aktionen (Kontext-Menü-Auswahl) zu ermitteln.
In Work Tables kann über Kontext-Menü-Auswahlen der Aufruf von Folge-Programmen gesteuert werden. Wurde für einen Kontext-Menü-Punkt ein Programm angegeben wird dieses direkt aufgerufen. Wurde nur eine eindeutige Kennung übergeben, kann diese im Folge-Programm über den Modus (bzw. über entsprechende WOPiXX-Funktionen) geprüft und entsprechende Aktionen (z.B. Aufruf eines weiteren CGI-Programms) eingeleitet werden.

    • Ermitteln von Schlüssel-Werten

Für Folge-Programme (Work- und Change-Programme), die aus List-Anzeigen/Work Tables aufgerufen werden.
Der eindeutige Schlüssel (oder die relative Satz-Nr.) wird bei Kontext-Menü-Auswahl bei Work-Programmen an das Folge-Programm übergeben. Diese Informationen sind erforderlich um z.B. den zu ändernden oder zu löschenden Datensatz einzulesen.
Der Aufruf ist nur erforderlich, wenn diese eindeutigen Schlüssel-Werte übergeben und im Folge-Programm verarbeitet werden.

    • Ermitteln von Parameter-Werten

In Work- und Change Tables können bis zu 5 Parameter-Werte an das Folge-Programm übergeben werden.
Der Aufruf ist nur erforderlich, wenn die Parameter-Werte im Folge-Programm benötigt und verarbeitet werden.

    • Öffnen/Zuordnen des HTML-Dokuments

Für Change und Work-Programme werden verschiedene Prozeduren vorgesehen. Basierend auf dem Prozedur-Aufruf werden die entsprechenden folgenden Schritte gesteuert.

    • Definition von Header Informationen

Header-Informationen sind allgemein gültige Ausgabe-Informationen (z.B. Auftrags-Nr., Liefertermin bei Auftrags-Positionen). Header-Informationen können sowohl für Work- als auch Change Tables angegeben werden.

    • Definition der verwendeten physischen Dateien, SQL Tabellen oder Views.

Sofern Header Informationen erforderlich sind, müssen die für die Header-Informationen erforderlichen Dateien/SQL Tabellen/Views vor den Header-Informationen definiert werden.
Sowohl bei Work- als auch bei Change Tables können mehrere Tabellen definiert werden. Während bei den Change Tables die Dateien/Tabellen/Views einzeln definiert werden können, muss bei Worktables die Verknüpfung zwischen den einzelnen Dateien/Tabellen/Views angegeben werden.
Um Probleme bei der Verknüpfung zu vermeiden wird empfohlen SQL Views zu definieren in denen die physischen Dateien/Tabellen bereits miteinander verknüpft wurden in die ggf. Where-Bedingungen integriert wurden (ähnlich Select/Omit-Anweisungen in DDS) um die Anzahl der Datensätze vorab zu selektieren.

    • Definition der Filter-Felder (nur bei Work Tables)

Filter-Felder werden vor der eigentlichen List-Anzeige ausgegeben und ermöglichen eine selektive Auswahl der Daten.
Die Filter-Felder müssen in den zuvor definierten Dateien/Tabellen/Views enthalten sein.
Zur Selektion der Daten werden unterschiedliche Vergleichsoperatoren bereitgestellt.
Die Filter-Felder werden in der Reihenfolge in der sie definiert sind ausgegeben. Die Definition von Filter-Feldern ist in Work Tables nicht zwingend erforderlich.

    • Definition der anzuzeigenden Spalten (bei Work Tables).

In Worktables wird zunächst die Spalte mit dem eindeutigen Schlüssel (für die Detail-Anzeige) definiert. Sofern sich der eindeutige Schlüssel aus mehreren Spalten/Feldern zusammensetzt oder sofern die Tabelle/Datei keinen eindeutigen Schlüssel hat, kann die Relative Satz-Nr. verwendet werden.
Die anzuzeigenden Spalten müssen in den zuvor definierten Dateien/Tabellen/Views hinterlegt sein. Der Programmierer kann diverse Aufbereitungsoptionen für die einzelnen Spalten definieren.
Die Spalten werden in der Reihenfolge in der sie definiert sind ausgegeben.
Mit Hilfe von Javascript-Funktionen können zur Laufzeit die Spalten am Bildschirm anders angeordnet werden.

    • Definition der anzuzeigenden/bearbeitenden Felder (in Change Tables)

Die Felder, die in den Change Tables angezeigt bzw. bearbeitet werden können aus den zuvor definierten Dateien/Tabellen/Views kommen. Es ist jedoch auch möglich Arbeits- oder Hilfsfelder „frei" (ohne Datei-Bezug) zu definieren und zu verwalten.
Die Felder werden in der Reihenfolge in der sie definiert sind ausgegeben.

    • Definition der Kontext-Menüs bei Work Tables

Für Work Tables können Kontext-Menüs definiert werden, d.h. es werden Programme oder Aktionen hinterlegt, die beim Klicken auf die entsprechende Auswahl ausgeführt werden.
Der WOPiXX-Programmierer braucht lediglich das Kontext-Menü zu definieren, die Steuerung erfolgt durch Javascript-Funktionen, die zur Laufzeit ausgeführt werden.
Kontext-Menü-Auswahlen beziehen sich i.d.R. auf die ausgewählte(thumbs down) Zeile(thumbs down)/Datensatz. Für allgemeine Aktionen, können Buttons definiert werden.

    • Definition von Buttons bei Work Tables und Change Tables

Für Work- und Change Tables können Buttons definiert werden, d.h. es werden Programme oder Aktionen vorgegeben, die beim Klicken auf den Button ausgeführt werden.

    • Setzen von Parameter-Werten für das Folge-Programm

In Work- und Change Tables können bis zu 5 Parameter-Werte an das Folge-Programm übergeben werden.
Die Parameter-Werte sollten versorgt und übergeben werden, unmittelbar bevor das HTML-Dokument ausgegeben werden.

    • Ausgabe des HTML-Dokuments bei Work Tables und Change Tables

Nachdem alle Felder definiert wurden, wird das Dokument ausgegeben.
Für Work-Programme endet die Verarbeitung mit der Ausgabe des HTML-Dokuments.
Für Change Tables endet das Programm (aufgrund der Stateless-Programmierung) ebenfalls an dieser Stelle. WOPiXX steuert jedoch den Ablauf so, dass beim nächsten Zyklus das Programm an dieser Stelle fortgeführt wird.

    • Eingabe-Prüfung und ggf. Ausgabe von Fehlermeldungen bei Change Tables

Die erfassten Daten werden an das WOPiXX-Programm zurückgegeben.
Der WOPiXX-Programmierer kann die üblichen Prüfungen codieren und ausführen.
Im Fehlerfall wird eine WOPiXX-Funktion aufgerufen, die die Fehlermeldung ausgibt.
Sofern keine Fehler festgestellt wurden. Kann der WOPiXX-Programmierer seine üblichen Datei-Verarbeitungen kodieren und ausführen.
Das Change Programm endet an dieser Stelle. Die Steuerung des Rücksprungs erfolgt automatisch durch WOPiXX.

  • Rücksprung auf das vorgelagerte Programm

Nach erfolgreicher Verarbeitung eines Change Tables, d.h. nach dem der zu bearbeitende Datensatz ordnungsgemäß fortgeschrieben wurde, muss auf das vorgelagerte Programm zurückgesprungen werden.

  • Bedingte Anzeigen

Bedingte abhängige Anzeigen können über entsprechende Prozedur-Aufrufe, die JavaScript-Code erzeugen gesteuert werden. Der Aufruf der IF-Prozeduren muss 4.7vor (IF) und nach (ENDIF) dem Aufruf der unter bestimmten Bedingungen anzuzeigenden Felder erfolgen.

    • Tabellen in Change Tables

Innerhalb von Change Tables können die Ein-/Ausgabe-Felder in Tabellen hinterlegt werden. Die Tabellen-Definition bzw. der Aufruf der entsprechenden WOPiXX-Prozeduren erfolgt unmittelbar vor dem ersten (Ein/Ausgabe-)Feld innerhalb der Tabelle.

Physische Dateien, SQL Tabellen oder Views

Die physischen Dateien, SQL Tabellen oder SQL Views, in denen die zu verarbeitenden Daten hinterlegt sind müssen durch den Aufruf von WOPiXX-Funktionen definiert werden.
Die Definition der Dateien/Tabellen/Views muss erfolgen bevor das erste Feld (Filter-Feld oder Spalte in Worktables oder Ein- oder Ausgabe-Feld in Change Tables) definiert wird.
Für Header-, Filter, Work Tables und Change Tables erfolgt die Definition der physischen Dateien/Tabellen/Views über unterschiedliche Funktionen. Bei der Definition muss die vorgeschriebene Verarbeitungsreihenfolge eingehalten werden, d.h. werden Filter definiert, muss die Funktion für Filter-Dateien/Tabellen/Views aufgerufen werden.
Werden in einem WOPiXX-Programm unterschiedliche Darstellungsarten verwendet, z.B. Filter und List-Anzeige/Worktables, so müssen die Dateien/Tabellen/Views nur einmalig, für die Filter definiert werden. Für die List-Anzeige werden die registrierten Filter-Dateien/Tabellen/Views herangezogen.
Anmerkung;Physische Dateien/Tabellen/Views müssen innerhalb eines WOPiXX-Programms nur einmalig, bevor das erste (Header-/Filter- oder Work-)Feld definiert wird angegeben werden.

DDS beschriebene logische Dateien

DDS beschriebene logische Dateien können angegeben und verarbeitet werden.
Aus Performance-Gründen ist die Verwendung von DDS beschriebenen logischen Dateien jedoch nicht zu empfehlen.
Directweb und WOPiXX verwenden ausschließlich SQL. Der Query-Optimizer muss jede Abfrage, in der DDS beschriebene logische Dateien verwendet werden neu schreiben, basierend auf den zugrunde liegenden physischen Dateien/Tabellen.
Die Analyse der DDS beschriebenen logischen Dateien, sowie das anschließende Rewriting kann nur durch die alte/klassische Query Engine (CQE) erfolgen. Alle SQL-Statements in denen DDS beschriebene logische Dateien angegeben werden, müssen an die CQE zurückgegeben werden, was zwischen 10 und 15% Performance kosten kann. Die Vorteile der modularen und wesentlich flexibleren neuen Query Engine (SQE = SQL Query Engine) können nicht genutzt werden.
Anmerkung:Anstatt DDS beschriebene logische Dateien anzugeben, sollten entweder die zugrunde liegenden physischen Dateien/Tabellen oder (neu erstellte) SQL Views verwendet werden.

Dateien direkt verknüpfen oder SQL Views?

Mit WOPiXX können mehrere Dateien/Tabellen/Views in dem gleichen List-Anzeige (Work Table) oder Detail-Verarbeitung (Change Table) definiert werden.
In Detail-Verarbeitungen/Change-Tables können die Dateien/Tabellen/Views einzeln und unabhängig voneinander definiert werden.
Für Listausgaben ist es jedoch erforderlich diese Dateien/Tabellen/Views miteinander zu verknüpfen. Die Art der Verknüpfung (z.B. Inner Join, Left/Right Outer Join, Exception Join, Full Join) sowie die Verknüpfung über Schlüssel-Felder muss vom Programmierer vorgegeben werden, da alle Abfragen und Verknüpfungen on the fly gebildet werden müssen.
Anmerkung: Um den individuellen WOPiXX-Source Code so einfach wie möglich zu reduzieren, wird empfohlen SQL-Views anzulegen, in denen die gewünschten Dateien/Tabellen bereits miteinander verknüpft sind, und in denen ggf. sogar durch entsprechende Where-Bedingungen Daten von vornherein eliminiert werden.
SQL Views sind ungeschlüsselte logische Dateien. Da SQL Views immer ungeschlüsselt sind, können beliebig viele SQL Views angelegt werden ohne Auswirkungen auf die Performance befürchten zu müssen.

Datei- und Feld-Namen

Für alle Dateien, Tabellen und Views sowie für alle Felder und Spalten kann wahlweise der kurze (bis zu 10 Zeichen) System-Name oder der lange (bis 128 Zeichen) SQL Name angegeben werden.
Die Schreibweise kann in jeder beliebigen Kombination aus Groß- und Klein-Buchstaben erfolgen. Die Datei/Tabellen/View-Namen, sowie die Spalten/Feld-Namen werden von WOPiXX in Groß-Buchstaben konvertiert.

Datenstrukturen und Ein-/Ausgabe-Felder

Datenaustausch zwischen HTML- und dem individuellen WOPiXX-Programm findet vor allem in den Change Tables/Detail-Programmen statt. Der Datenaustausch erfolgt über die aufgerufenen WOPiXX-Prozeduren
Der Programmierer ist für das Einlesen und Fortschreiben seiner Daten selbst verantwortlich, d.h. der Programmierer

  • liest den Datensatz ein (native I/O oder embedded SQL)
  • übergibt die Daten über WOPiXX-Funktionen an das Web-Programm
  • erhält die erfassten/geänderten Daten über die WOPiXX-Funktionen zurück
  • prüft diese erfassten Daten
  • gibt ggf. eine Fehlermeldung über WOPiXX-Prozeduren aus
  • schreibt den geprüften Datensatz fort

Um einen Datenaustausch von Daten mit jedem Datentypen in jeder zulässigen Länge zu ermöglichen, müssen Pointer auf die Daten an die WOPiXX-Prozeduren übergeben werden.
WOPiXX ermittelnt den Datentypen und die Länge der übergebenen Daten und konvertiert diese in ein alphanumerisches Web-Format. Die erfassten Daten werden von WOPiXX in das Ausgangsformat zurückübersetzt.
Der RPG-Compiler konvertiert gezonte numerische Felder, die Dateien, die in den F-Bestimmungen definiert sind, sowie stand-alone gezont-numerische Variablen in gepackte numerische Felder. Werden gezonte numerische Felder jedoch in Datenstrukturen definiert, werden sie vom Compiler nicht konvertiert.
Anmerkung: Um Probleme beim Datenaustausch zu vermeiden, müssen alle Felder oder Variablen, über die Daten mit WOPiXX ausgetauscht werden in Datenstrukturen hinterlegt werden.

Mehrsprachigkeit

Beim Aufruf von WOPiXX-Prozeduren werden auch die anzuzeigenden Texte übergeben.
Die Prozeduren sind so gesteuert, dass wahlweise eine Text oder eine Message-Id übergeben werden kann. Die Message-File, aus der der Text ermittelt werden soll, wird abhängig von den Angaben beim Einrichten der Anwendung (6.1 Anwendung) bestimmt.

Work-Programm

Für Work-Programme stehen die folgenden WOPiXX-Prozeduren zur Verfügung

Tabelle 3 : WOPiXX-Prozeduren für Work-Programme

Für ein Work-Programm sind nicht immer alle WOPiXX-Prozeduren erforderlich.
Der Aufruf der WOPiXX-Prozeduren sollte jedoch (weitgehend) in der Reihenfolge, in der die Prozeduren aufgelistet sind erfolgen.
Die blau eingefärbten Prozeduren können sowohl in Work- als auch in Change-Tables aufgerufen werden. Die übrigen Prozeduren können nur in Verbindung mit Work-Tables verwendet werden.

In einem Work-Programm müssen die folgenden Schritte abgedeckt sein:

  • HTML-Dokument öffnen (Prozedur Wx_OpnHTMLWrk())
  • Dateien/Tabellen/Views definieren (Prozeduren Wx_FltFile() oder Wx_WrkFile())
  • Spalte mit eindeutigem Schlüssel definieren (Prozedur Wx_WrkKey())
  • Spalten für List-Anzeige definieren (Prozedur Wx_WrkFld())
  • HTML-Dokument an Browser schicken (Prozedur Wx_WrtWrkTbl())



Template für Work-Programm

Ein Template für ein Work-Programm mit Copy-Strecke und den erforderlichen Prozedur-Aufrufen in der erforderlichen Reihenfolge befindet sich in:

  • Bibliothek WOPIX
  • Quellen-Datei QCPYLESRC
  • Member EXWRKTEMP

Dieses Template kann kopiert und für die individuellen Work-Programme modifiziert werden.

Ermitteln von Schlüssel-Werten

In Worktables wird bei Auswahl über Kontext-Menü entweder der eindeutige Schlüssel oder die relative Satz-Nr. des/der zu bearbeitenden Datensätze für das Folge-Programm bereitgestellt.
Die eindeutigen Schlüssel-Werte können mit den folgenden WOPiXX-Funktionen ermittelt werden:

  • Wx_GetDBKeyIntErmitteln eines einzelnen ganzzahligen Schlüssel-Wertes
  • Wx_GetDBKeyArrIntErmitteln einer Gruppe von ganzzahligen Schlüssel-Werten


  • Wx_GetDBKeyDecErmitteln eines einzelnen numerischen Schlüssel-Wertes
  • Wx_GetDBKeyArrDecErmitteln einer Gruppe von numerischen Schlüssel-Werten


  • Wx_GetDBKeyCharErmitteln eines einzelnen alphanumerischen Schlüssel-Wertes
  • Wx_GetDBKeyArrCharErmitteln einer Gruppe von alphanumerischen Schlüssel-Werten


  • Wx_GetDBKeyUCErmitteln eines einzelnen Unicode-Schlüssel-Wertes
  • Wx_GetDBKeyArrUCErmitteln einer Gruppe von Unicode-Schlüssel-Werten

Bei allen Funktionen, bei denen eine Gruppe von Schlüssel-Werten zurückgegeben wird, erfolgt die Ausgabe in einer Feldgruppe (mit dem entsprechenden Datentypen).
Die Ermittlung der Schlüssel-Werte über eine Array-Funktion ist bei Mehrfach-Auswahl erforderlich, z.B. wenn mehrere Datensätze gelöscht werden sollen.

Wx_GetDBKeyInt() – Ganzzahliger Schlüssel-Wert

Mit der Funktion Wx_GetDBKeyInt() kann ein einzelner ganzzahliger Schlüssel-Wert, der im vorgelagerten Programm übergeben wurde ermittelt werden.
Der Aufruf ist z.B. erforderlich, wenn ein Datensatz im Änderungsmodus bearbeitet oder angezeigt werden sollt. Basierend auf den zurückgelieferten Informationen (Relative-Satz-Nr. oder eindeutige Id) kann der Datensatz z.B. mit dem RPG OpCode CHAIN eingelesen werden.

Prototype

***************************************************************************
P* Procedure name: Wx_GetDBKeyInt
P* Purpose: Get Single Integer File/Table Key from Session Information
P* = Either Relative Record No or Identity Value
P* = No Decimal Positions will be returned
P* Returns: Integer File/Table Key
P* Parameters:
***************************************************************************
D Wx_GetDBKeyInt...
D PR 20I 0 OpDesc
Source Code 129101: Funktion Wx_GetDBKeyInt() - Ermitteln ganzzahligen Schlüssel-Wert

Parameter

  • Rückgabe-WertRelative Satz-Nr. oder eindeutige Id als ganzzahliger Wert


  • Keine Parameter erforderlich!

Beispiel für den Aufruf

D MyDBKey S 20I 0
*-----------------------------------------------------------------------------
/Free
MyDBKey = Wx_GetDBKeyInt();
/End-Free
Source Code 130102: Funktion Wx_GetDBKeyInt() - Ermitteln ganzzahligen Schlüssel-Wert

Wx_GetDBKeyArrInt() – Gruppe von ganzzahligen Schlüssel-Werte

Mit der Funktion Wx_GetDBKeyArrInt() kann eine Gruppe von ganzzahligen Schlüssel-Werten ermittelt werden.
Der Aufruf ist erforderlich, wenn bei Mehrfach-Auswahl alle ausgewählten Datensätze verarbeitet werden müssen.
Die ganzzahligen Schlüssel-Werte werden in einer Feldgruppe mit aktuell 100 Elementen (Referenz-Wert RefElemCGI) ausgegeben.

Prototype

***************************************************************************
P* Procedure name: Wx_GetDBKeyArrInt
P* Purpose: Get Array of Single Integer File/Table Keys from Session
P* = Either Relative Record Numbers or Identity Values
P* = No Decimal Positions will be returned
P* Returns: Integer File/Table Keys
P* Parameters:
***************************************************************************
D Wx_GetDBKeyArrInt...
D PR 20I 0 Dim(RefElemCGI) OpDesc
D POutNbrRows 10U 0 Options(*NoPass)
Source Code 131103: Funktion Wx_GetDBKeyArrInt() – Ermitteln Gruppe von ganzzahligen Schlüssel-Werten

Parameter

  • Rückgabe-Wert: Feldgruppe mit 100 Elementen für ganzzahlige Schlüssel-Werte

Relative Satz-Nr. oder eindeutige Id als ganzzahliger Wert

  • POutNbrRowsAnzahl der ausgewählten Zeilen

Optionaler Parameter

Beispiel für den Aufruf

D ArrDBKey S 10I 0 Dim(RefElemCGI)
D NbrRows S 10U 0
D Index S 10U 0
*-----------------------------------------------------------------------------
/Free
//1. Ermitteln ausgewählte Zeilen - Anzahl Zeilen wird nicht ausgegeben
ArrDBKey = Wx_GetDBKeyArrInt();
//2. Ermitteln ausgewählte Zeilen – Anzahl Zeilen wird zurückgegeben
ArrDBKey = Wx_GetDBKeyArrInt(NbrRows);
If NbrRows > *Zeros;
For Index = 1 to NbrRows;
Chain ArrDBKey(Index)MyFileF;
If %Found(MyFileP);
// Verarbeitung
EndIf;
EndFor;
EndIf;
/End-Free
Source Code 132104: Funktion Wx_GetDBKeyInt() - Ermitteln Gruppe von ganzzahligen Schlüssel-Werten

Wx_GetDBKeyDec() – Numerischer Schlüssel-Wert

Mit der Funktion Wx_GetDBKeyInt() kann ein einzelner numerischer (gepackt oder gezont numerisch) Schlüssel-Wert, der im vorgelagerten Programm übergeben wurde ermittelt werden.
Der Aufruf ist z.B. erforderlich, wenn ein Datensatz im Änderungsmodus bearbeitet oder angezeigt werden sollt. Basierend auf den zurückgelieferten Informationen (Relative-Satz-Nr. oder eindeutige Id) kann der Datensatz z.B. mit dem RPG OpCode CHAIN eingelesen werden.

Prototype

*****************************************************************************
P* Procedure name: Wx_GetDBKeyDec
P* Purpose: Get Single Decimal File/Table Key from Session Information
P* = Either Relative Record No or Identity Value
P* Returns: Decimal File/Table Key
P* Parameters:
*****************************************************************************
D Wx_GetDBKeyDec...
D PR Like(FldRef.DftDec) OpDesc
Source Code 133105: Funktion Wx_GetDBKeyDec() - Ermitteln numerischen Schlüssel-Wert

Parameter

  • Rückgabe-WertRelative Satz-Nr. oder eindeutige Id als Dezimal-Wert

Bei ungültigen numerischen Werten wird -1 zurückgegeben

  • Keine Parameter erforderlich!

Beispiel für den Aufruf

D MyDBKey S 11P 2
*-----------------------------------------------------------------------------
/Free
MyDBKey = Wx_GetDBKeyDec();
/End-Free
Source Code 134106: Funktion Wx_GetDBKeyDec() - Ermitteln numerischen Schlüssel-Wert

Wx_GetDBKeyArrDec() – Gruppe von dezimalen Schlüssel-Werten

Mit der Funktion Wx_GetDBKeyArrDec() kann eine Gruppe von dezimalen Schlüssel-Werten ermittelt werden.
Der Aufruf ist erforderlich, wenn bei Mehrfach-Auswahl alle ausgewählten Datensätze verarbeitet werden müssen.
Die dezimalen Schlüssel-Werte werden in einer Feldgruppe mit aktuell 100 Elementen (Referenz-Wert RefElemCGI) ausgegeben.

Prototype

***************************************************************************
P* Procedure name: Wx_GetDBKeyArrDec
P* Purpose: Get Array of Single Decimal File/Table Keys from Session
P* = Either Relative Record Numbers or Identity Values
P* Returns: Decimal File/Table Keys
P* Parameters:
***************************************************************************
D Wx_GetDBKeyArrDec...
D PR Like(FldRef.DftDec) OpDesc
D Dim(RefElemCGI)
D POutNbrRows 10U 0 Options(*NoPass)
Source Code 135107: Funktion Wx_GetDBKeyArrDec() – Ermitteln Gruppe von dezimalen Schlüssel-Werten

Parameter

  • Rückgabe-Wert: Feldgruppe mit 100 Elementen für dezimale Schlüssel-Werte

Relative Satz-Nr. oder eindeutige Id als Dezimal-Wert
Bei ungültigen numerischen Werten wird –1 zurückgegeben.

  • POutNbrRows: Anzahl der ausgewählten Zeilen

Optionaler Parameter

Beispiel für den Aufruf

D ArrDBKey S 15P 5 Dim(RefElemCGI)
D NbrRows S 10U 0
D Index S 10U 0
*-----------------------------------------------------------------------------
/Free
//1. Ermitteln dezimale Schlüssel-Werte – Anzahl Zeilen nicht ausgegeben
ArrDBKey = Wx_GetDBKeyArrDec();
//2. Ermitteln dezimale Schlüssel-Wert – Anzahl der Zeilen wird ausgegeben
ArrDBKey = Wx_GetDBKeyArrDec(NbrRows);
If NbrRows > *Zeros;
For Index = 1 to NbrRows;
Chain ArrDBKey(Index) MyFileF;
If %Found(MyFileP)
//Verarbeitung
EndIf;
EndFor;
EndIf;
/End-Free
Source Code 136108: Funktion Wx_GetDBKeyDec() - Ermitteln Gruppe von dezimalen Schlüssel-Werten

Wx_GetDBKeyChar() – Alphanum. Schlüssel-Wert

Mit der Funktion Wx_GetDBKeyChar() kann ein einzelner alphanumerischer Schlüssel-Wert, der im vorgelagerten Programm übergeben wurde ermittelt werden.
Der Aufruf ist z.B. erforderlich, wenn ein Datensatz im Änderungsmodus bearbeitet oder angezeigt werden sollt. Basierend auf den zurückgelieferten Informationen (Relative-Satz-Nr. oder eindeutige Id) kann der Datensatz z.B. mit dem RPG OpCode CHAIN eingelesen werden.

Prototype

***************************************************************************
P* Procedure name: Wx_GetDBKeyChar
P* Purpose: Get Single Character File/Table Key from Session Information
P* Returns: Character File/Table Key
P* Parameters:
***************************************************************************
D Wx_GetDBKeyChar...
D PR Like(FldRef.TextVar) OpDesc
Source Code 137109: Funktion Wx_GetDBKeyChar() - Ermitteln alphanumerischen Schlüssel-Wert

Parameter

  • Rückgabe-WertRelative Satz-Nr. oder eindeutige Id als alphanumerischer Wert


  • Keine Parameter erforderlich!

Beispiel für den Aufruf

D MyDBKey S Like(FldRef.TextVar)
*-----------------------------------------------------------------------------
/Free
MyDBKey = Wx_GetDBKeyChar();
/End-Free
Source Code 138110: Funktion Wx_GetDBKeyChar() - Ermitteln alphanumerischen Schlüssel-Wert

Wx_GetDBKeyArrChar() – Gruppe von alphanumerischen Schlüssel-Werten

Mit der Funktion Wx_GetDBKeyArrChar() kann eine Gruppe von alphanumerischen Schlüssel-Werten ermittelt werden.
Der Aufruf ist erforderlich, wenn bei Mehrfach-Auswahl alle ausgewählten Datensätze verarbeitet werden müssen.
Die alphanumerischen Schlüssel-Werte werden in einer Feldgruppe mit aktuell 100 Elementen (Referenz-Wert RefElemCGI) ausgegeben.

Prototype

**************************************************************************
P* Procedure name: Wx_GetDBKeyArrChar
P* Purpose: Get Array of Single Byte Character File/Table Keys from
P* Returns: Character File/Table Keys
P* Parameters:
**************************************************************************
D Wx_GetDBKeyArrChar...
D PR Like(FldRef.TextVar) OpDesc
D Dim(RefElemCGI)
D POutNbrRows 10U 0 Options(*NoPass)
Source Code 139111: Funktion Wx_GetDBKeyArrChar() – Ermitteln Gruppe von alphanumerischen Schlüssel-Werten

Parameter

  • Rückgabe-Wert: Feldgruppe mit 100 Elementen für alphanumerische Schlüssel-Werte

Relative Satz-Nr. oder eindeutige Id als alphanumerischer Wert

  • POutNbrRows:Anzahl ausgewählte Zeilen

Optionaler Parameter

Beispiel für den Aufruf

D ArrDBKey S Like(FldRef.TextVar) Dim(RefElemCGI)
D NbrRows S 10U 0
D Index S 10U 0
*-----------------------------------------------------------------------------
/Free
//1. Ermitteln alphanumerische Schlüssel-Werte – Anzahl Zeilen nicht ermittelt
ArrDBKey = Wx_GetDBKeyArrChar();
//2. Ermitteln alphanumerische Schlüssel-Werte – Anzahl Zeilen wird ermittelt
ArrDBKey = Wx_GetDBKeyArrChar(NbrRows);
If NbrRows > *Zeros;
For Index = 1 to NbrRows;
Chain ArrDBKey(Index) MyFileF;
If %Found(MyFileP);
//Verarbeitung
EndIf;
EndFor;
EndIf;
/End-Free
Source Code 140112: Funktion Wx_GetDBKeyArrChar() - Ermitteln Gruppe von alphanumerischen Schlüssel-Werten

Wx_GetDBKeyUC() – Unicode-Schlüssel-Wert

Mit der Funktion Wx_GetDBKeyChar() kann ein einzelner Unicode Schlüssel-Wert, der im vorgelagerten Programm übergeben wurde ermittelt werden.
Der Aufruf ist z.B. erforderlich, wenn ein Datensatz im Änderungsmodus bearbeitet oder angezeigt werden sollt. Basierend auf den zurückgelieferten Informationen (Relative-Satz-Nr. oder eindeutige Id) kann der Datensatz z.B. mit dem RPG OpCode CHAIN eingelesen werden.

Prototype

***************************************************************************
P* Procedure name: Wx_GetDBKeyUC
P* Purpose: Get Double Byte File/Table Key from Session Information
P* Returns: Unicode File/Table Key
P* Parameters:
***************************************************************************
D Wx_GetDBKeyUC...
D PR Like(FldRef.UCVar) OpDesc
Source Code 141113: Funktion Wx_GetDBKeyUC() - Ermitteln Unicode-Schlüssel-Wert

Parameter

  • Rückgabe-WertRelative Satz-Nr. oder eindeutige Id als Unicode-Wert


  • Keine Parameter erforderlich!

Beispiel für den Aufruf

D MyDBKey S Like(FldRef.UCVar)
*-----------------------------------------------------------------------------
/Free
MyDBKey = Wx_GetDBKeyChar();
/End-Free
Source Code 142114: Funktion Wx_GetDBKeyUC() - Ermitteln Unicode-Schlüssel-Wert

Wx_GetDBKeyArrUC() – Gruppe von Unicode- Schlüssel-Werten

Mit der Funktion Wx_GetDBKeyArrUC() kann eine Gruppe von Unicode-Schlüssel-Werten ermittelt werden.
Der Aufruf ist erforderlich, wenn bei Mehrfach-Auswahl alle ausgewählten Datensätze verarbeitet werden müssen.
Die Unicode-Schlüssel-Werte werden in einer Feldgruppe mit aktuell 100 Elementen (Referenz-Wert RefElemCGI) ausgegeben.

Prototype

***************************************************************************
P* Procedure name: Wx_GetDBKeyArrUC
P* Purpose: Get Array of Double Byte Unicode File/Table Keys from Session
P* Returns: Unicode File/Table Keys
P* Parameters:
***************************************************************************
D Wx_GetDBKeyArrUC...
D PR Like(FldRef.UCVar) Dim(RefElemCGI)
D POutNbrRows 10U 0 Options(*NoPass)
Source Code 143115: Funktion Wx_GetDBKeyArrUC() – Ermitteln Gruppe von Unicode Schlüssel-Werten

Parameter

  • Rückgabe-Wert: Feldgruppe mit 100 Elementen für Unicode-Schlüssel-Werte

Relative Satz-Nr. oder eindeutige Id als Unicode-Wert

  • POutNbrRows: Anzahl der ausgewählten Zeilen

Optionaler Parameter

Beispiel für den Aufruf

D ArrDBKey S Like(FldRef.UCVar) Dim(RefElemCGI)
D NbrRows S 10U 0
D Index S 10U 0
*-----------------------------------------------------------------------------
/Free
//1. Ermitteln Unicode Schlüssel-Wert – Anzahl Zeilen nicht ausgegeben
ArrDBKey = Wx_GetDBKeyArrUC();
//2. Ermitteln Unicode Schlüssel-Wert – Anzahl Zeilen wird ausgegeben
ArrDBKey = Wx_GetDBKeyArrUC();
IF NbrRows > *Zeros;
For Index = 1 to NbrRows;
Chain ArrDBKey(Index)MyFileF;
If %Found(MyFileF)
//Verarbeitung
EndIf;
EndFor;
EndIf;
/End-Free
Source Code 144116: Funktion Wx_GetDBKeyUC() - Ermitteln Gruppe von Unicode-Schlüssel-Werten

Wx_GetDBKeyFldChar() – Zusammengesetzte Schlüssel

Mit der Funktion Wx_GetDBKeyFld() können zusammengesetzte Schlüssel empfangen werden. Die einzelnen Schlüssel-Werte werden als alphanumerische Feldgruppen-Elemente ausgegeben. Die Konvertierung in den für einen Zugriff über Chain erforderlichen Datentypen muss im Change-Programm (z.B. über MOVE oder entsprechende Built-In-Funktionen) erfolgen.
Die Feldgruppen-Elemente werden in der gleichen Reihenfolge ausgegeben, in der die Schlüssel-Spalten in dem vorgelagerten Work-Programm (über Funktion Wx_WrkCompKey) angegeben wurden.
Der Aufruf ist z.B. erforderlich, wenn ein Datensatz im Änderungsmodus bearbeitet oder angezeigt werden sollt. Basierend auf den zurückgelieferten Informationen (1-n Schlüssel-Werte) kann der Datensatz z.B. mit dem RPG OpCode CHAIN eingelesen werden.

Prototype


***************************************************************************
P* Procedure name: Wx_GetDBKeyFldChar
P* Purpose: Get Single Character File/Table Key from Session Information
P* Returns: Character File/Table Key
P* Key Fields are returned as character array elements
P* Parameters: POutNbrKeys => Number of Elements (= Keys) --> Optional
***************************************************************************
D Wx_GetDBKeyFldChar...
D PR Like(FldRef.TextVar) OpDesc
D Dim(RefElemCGI)
D POutNbrKeys 10U 0 Options(*NoPass)
Source Code 145117: Funktion Wx_GetDBKeyFldChar() – Ermitteln zusammengesetzten Schlüssel (Werte)

Parameter

  • Rückgabe-Wert Feldgruppe mit bis zu 100 alphanumerischen

Elementen/Schlüssel-Werten.

  • POutNbrKeys Anzahl Schlüssel-Felder

Optionaler Parameter

Beispiel für den Aufruf

D MyKeyArr S Like(FldRef.TextVar)
D Dim(RefElemCGI)
D NbrKeys S 10U 0
*-----------------------------------------------------------------------------
/Free
//1. Ermitteln zusammenges. Schlüssel – Anz- Schlüssel-Felder nicht ausgegeben
MyKeyArr = Wx_GetDBKeyFldChar();
//2. Ermitteln zusammengesetzten Schlüssel – Anzahl Schl.-Felder ausgegeben
MyKeyArr = Wx_GetDBKeyFldChar(NbrKeys);
Chain (MyKeyArr(1): %Dec(MyKeyArr(2): 11: 2): Date(MyKeyArr(3))
MyFileF;
If %Found(MyFileP)
//Verarbeitung
EndIf;
/End-Free
Source Code 146118: Funktion Wx_GetComDBKeyChar() - Ermitteln zusammengesetzte Schlüssel (Werte)

Wx_GetDBKeyFldArrChar() – Gruppe von zusammengesetzten Schlüsseln

Mit der Funktion Wx_GetDBKeyFldArrChar() kann eine Gruppe von zusammengesetzten Schlüsseln ermittelt werden.
Der Aufruf ist erforderlich, wenn bei Mehrfach-Auswahl alle ausgewählten Datensätze mit einem zusammengesetzten Schlüssel verarbeitet werden müssen.
Die einzelnen zusammengesetzten Schlüssel-Werte werden als alphanumerische Feldgruppen-Elemente ausgegeben. Aktuell kann ein zusammengesetzter Schlüssel aus bis zu 100 Schlüssel-Feldern/Werten bestehen. Die Konvertierung in den für einen Zugriff über Chain erforderlichen Datentypen muss im Change-Programm (z.B. über MOVE oder entsprechende Built-In-Funktionen) erfolgen.
Die einzelnen Feldgruppen werden wiederum als Datenstruktur-Unterfelder einer Array-Datenstruktur (gleicher Aufbau wie Mehrfach-Datenstruktur) ausgegeben. Aktuell kann die Array-Datenstruktur 100 verschiedene Dimensionen/Elemente haben, d.h. sie kann 100 Feldgruppen mit zusammengesetzten Schlüsseln aufnehmen.

Prototype

***************************************************************************
P* Procedure name: Wx_GetDBKeyFldArrChar
P* Purpose: Get Array of Single Byte Character compound File/Table Key
P* Returns: Character File/Table Keys
P* Rows/Records are returned as dimension of the Array Data
P* Character Key Fields are returned as subfield array element
P* Parameters: POutNbrRows => Number of Elements (= Rows) --> Optional
P* Parameters: POutNbrKeys => Number of Elements (= Keys) --> Optional
***************************************************************************
D Wx_GetDBKeyFldArrChar...
D PR LikeDS(RefArrDSWXCompKeys) OpDesc
D Dim(RefElemCGI)
D POutNbrRows 10U 0 Options(*NoPass)
D POutNbrKeys 10U 0 Options(*NoPass)
Source Code 147119: Funktion Wx_GetDBKeyArrUC() – Ermitteln Gruppe von zusammengesetzten Schlüssel-Werten

Parameter

  • Rückgabe-Wert: Array-Datenstruktur mit 100 Elementen

In den einzelnen Elementen ist eine Feldgruppe für die alphanumerischen Schlüssel-Werte mit ebenfalls 100 Elementen definiert.
Die Konvertierung der Schlüssel-Werte in die erwarteten Datentypen muss im Programm erfolgen.

  • POutNbrRows: Anzahl der ausgewählten Zeilen

Optionaler Parameter

  • POutNbrKeys:Anzahl der zusammengesetzten Schlüssel-Felder

Optionaler Parameter

Beispiel für den Aufruf

D ArrDSDBKey S LikeDS(RefArrDSWXCompKeys)
D Dim(RefElemCGI)
D NbrRows S 10U 0
D NbrKeys S 10U 0
D Index S 10U 0
*-----------------------------------------------------------------------------
/Free
//1. Ermitteln Array Datenstruktur der ausgewählten Sätze
// Weder Anzahl Zeilen noch Anzahl Keys ausgegeben
ArrDSDBKey = Wx_GetDCompBKeyArrChar();
//2. Ermitteln Array Datenstruktur der ausgewählten Sätze
// Anzahl Zeilen ausgegeben
ArrDSDBKey = Wx_GetDCompBKeyArrChar(NbrRows);

//3. Ermitteln Array Datenstruktur der ausgewählten Sätze
// Anzahl Zeilen und Anzahl Schlüssel-Werte ausgegeben
ArrDSDBKey = Wx_GetDCompBKeyArrChar(NbrRows: NbrKeys);
For Index = 1 to NbrRows;
Chain (ArrDSDBKey(Index).ArrKeys(1):
%Dec(ArrDSDBKey(Index).ArrKeys2: 15: 3):
%Date(ArrDSDBKey(Index).ArrDate: *YMD))
MyFileF;
If %Found(MyFileP)
//Verarbeitung
EndIf;
EndFor;
/End-Free
Source Code 148120: Funktion Wx_GetDBKeyUC() - Ermitteln Gruppe von Unicode-Schlüssel-Werten


Editierbare List-Anzeigen

Um Listanzeigen/Work-Tables editieren zu können, muss ein spezieller Änderungsbutton mit Hilfe der Funktion Wx_WrkBtnEdtList() definiert werden.
Wurde dieser Button definiert können die Inhalte der Worktable geändert/überschrieben werden.
Bei Klick auf den Button wird ein XML-Dokument, in dem alle Spalten-Werte für die geänderten Zeilen ausgegeben werden. Das XML-Dokument kann maximal 16350 Zeichen fassen.
Das XML-Dokument kann mit der folgenden Funktion in eine Variable ausgegeben werden.

  • Wx_GetEdtListXML()Ausgabe des XML-Dokuments mit den geänderten Werten

In eine alphanumerische Variable
Einzelne Spalten können durch Angabe des Schlüssel-Wortes Output bei Aufruf der Prozedur Wx_WrtFld)( zur Änderung gesperrt werden.
Die editierbaren und gesperrten Spalten werden farblich unterschiedlich dargestellt.

XML-Dokument für editierbare Worktables - Aufbau

Das XML-Dokument in dem die geänderten Werte ausgegeben werden hat den folgenden Aufbau:

  • Root-Element <rows>in Kleinbuchstaben
  • Zeilen-Element <row> in Kleinbuchstaben

Die Spalten-Elemente sind jeweils unterhalb des Zeilen-Elements angeordnet

  • Spalten-Element für Schlüssel-Werte

<ID> in Großbuchstaben

  • Spalten-Elemente Die Element-Namen entsprechen den Feld-Namen, die in der Funktion

Wx_WrkFld() angegeben wurden.
Die Spalten-Element-Namen werden in Groß-Buchstaben ausgeben.
<?xml version="1.0"?>
<rows>
<row>
<ID>111</ID>
<SPALTE1>Wert Spalte 1</SPALTE1>
<SPALTE2>Wert Spalte 2</SPALTE2>
... weitere Spalten
</row>
<row>
<ID>111</ID>
<SPALTE1>Wert Spalte 1</SPALTE1>
... weitere Spalten
</row>
... weitere Zeilen
</rows>
Source Code 231201: Aufbau XML-Dokument für editierbare Listen
Das folgende Schaubild zeigt ein XML-Dokument, das nach der Änderung in der Worktable ausgegeben wurde. Außerdem wird der RPG-Code mit dem die Spalten in der Worktable definiert wurden angezeigt.

Abbildung 24: XML-Dokument für editierbare Worktables

Wx_GetEdtListXML() – Empfangen alphanumerisches XML-Dokument mit geänderten Werten

Sofern Daten aus Änderungen aus editierbaren Worktables ( Prüfung über Funktion Wx_isModeEdtList()) zurückgegeben wurden, kann mit Hilfe der Funktion Wx_GetEdtListXML() ein XML-Dokument, das alle Änderungen enthält in eine alphanumerische Variable ausgegeben werden.
Das XML-Dokument kann aktuell nur maximal 16350 Zeichen beinhalten. Werden mehr Informationen ausgegeben, so werden diese abgeschnitten und das XML-Dokument ist unvollständig.
Der Programmierer muss das empfangene XML-Dokument z.B. mit den RPG-OpCodes XML-INTO oder XML-SAX in eine Datenstruktur ausgeben und anschließend die Daten verarbeiten.

Prototype

***************************************************************************
P* Procedure name: Wx_GetEdtListXML
P* Purpose: Get All changed information as well formed XML document
P* = Unique Key is returned as attribute id in the row element
P* = column names as defined when creating the worktable are
P* for the modified values
P* Returns: Well formed XML document with the modified data
P* Parameters:
*--------------------------------------------------------------------------

  • Attention: Currently restricted to 16350 characters
    ***************************************************************************
    D Wx_GetEdtListXML...
    D PR Like(FldRefLA.VarLen) OpDesc
    Source Code 232202: Prototype - Funktion Wx_GetEdtListXML() – Empfangen XML-Dokument mit geänderten Werten

    Parameter

  • Rückgabe-Wert Text-String mit XML-Dokument

Beispiele für den Aufruf

D GblXMLDoc S Like(FldRefLA.VarLen)
D RefDSRow DS Qualified Based(DummyPtr)
D Id 10I 0
D DCAPP 10A
D DCNAM 10A
D NEWSEQ 5P 0
D DCTXT 30A
D DCKEY 20A
D Rows DS Qualified Inz
D Row LikeDS(RefDSRow) Dim(100)
------------------------------------------------------------------------------
/Free
If Wx_isModeEdtList();
GblXMLDoc = Wx_GetEdtListXML();
XML-INTO Rows %XML(GblXMLDoc: 'allowmissing=yes allowextra=yes +
case=any');
EndIf;
/End-Free
Source Code 233203: Aufruf – Funktion Wx_GetEdtListXML() – Empfangen XML-Dokument mit geänderten Werten

RPG-Code – Empfangen/Verarbeiten XML-Dokument

Das folgende Schaubild zeigt das XML-Dokument, die RPG-Datenstrukturen und die Verarbeitung des XML-Dokuments mit dem RPG OpCode XML-INTO.
Die Id, sowie die Spalten/Elemente müssen zunächst in einer Referenz-Datenstruktur hinterlegt werden. Die Spalten/Element und Datenstruktur-Unterfeld-Namen müssen identisch sein.
Da Spalten/Element-Namen und Datenstruktur- bzw. Datenstruktur-Unterfeld-Namen für die Verarbeitung des XML-Dokuments identisch sein müssen, muss die empfangende Datenstruktur rows heißen.
Diese Datenstruktur benötigt ein für jede Zeile ein Datenstruktur-Unterfeld mit dem Namen row und dem Aufbau Referenz-Datenstruktur. Die Definition des Unterfeldes row erfolgt mit Hilfe des Schlüssel-Wortes LIKEDS und maximale Anzahl der empfangenden Datensätze wird über das Schlüssel-Wort DIM festgelegt.
Da die Element-Namen z.T. in Groß-Buchstaben und z.T. in keinen Buchstaben ausgegeben werden, muss die Option case=any in der Funktion %XML angegeben werden.
Da außerdem nicht immer die maximale Anzahl an Datensätzen empfangen wird und die Datenstruktur außerdem noch andere Datenstruktur-Unterfelder enthalten könnte, müssen die Optionen allowmissing=yes und allowextra=yes angegeben werden.

Abbildung 25: Empfangen/Verarbeiten XML-Dokument nach Änderung in editierbaren Worktables

Feherbehandlung in editerbaren Subfiles

Die erfassten Daten werden über ein XML-Dokument (bzw. XML-INTO) in die WOPiXX-Programme zurückgebracht.
In diesen Programmen können die erfassten Werte geprüft und sofern alles korrekt ist fortgeschrieben werden.
Im Fehlerfall können für die Fehlerhaften Eingaben Fehlermeldungen ausgegeben werden. Zu diesm Zweck kann eine der beiden folgenden Funktionen verwendet werden:

  • Wx_WrkFldErr()Ausgabe eines Fehler-Textes für eine einzelne Spalte in einer einzelnen Zeile
  • WX_MultWrkFldErr() Ausgabe eines Fehler-Texte für mehrere Spalten in einer einzelnen Zeile

Die fehlerhaften Felder werden mit einem Icon markiert und farblich anders dargestellt.
Der Fehler-Text wird durch eine Mouse-Over-Aktion über dem fehlerhaften Feld in Form eines Tooltips sichtbargemacht.

Abbildung 4: Editierbare List-Anzeigen - Darstellung der Fehlerhafte Eingaben

WX_WrkFldErr() – Fehler

Sofern eine Eingabe fehlerhaft ist, kann durch Ausführung der Funktion WX_WrkFldErr() eine Fehlernachricht für eine einzige Spalte in einer einzigen Zeile ausgegeben werden.
Wichtig ist an dieser Stelle, dass neben dem Spalten-Namen die Id (der eindeutige Schlüssel), genauso wie er im XML-Dokument steht angeben wird. (Über die ID und den Spalten-Namen können die Nachrichten dann zugewiesen werden.

Prototype

//****************************************************************************************
// Procedure name: Wx_WrkFldErr
// Purpose: Set Field Error
// Returns:
// Parameters: ParMsg => Message-Id or Text
// Parameters: ParId => Unique Id/Key in Work File
// Parameters: ParField => Field
//---------------------------------------------------------------------------------------
// 2018-02-08 BHA: Creation //****************************************************************************************
DCL-PR Wx_WrkFldErr;
ParMsg Like(FldRef.MsgData) Const;
ParId Like(FldRefMA.Varlen) Const;
ParField Like(FldRef.NameSQL) Const;
End-PR;
Source Code 234: Prototype - Funktion Wx_GetReseqArrInt() – Numerische Schlüssel-Werte in neuer Reihenfolge

Parameter

  • ParMsg Nachrichten-Text oder Message-Id der Fehlermeldung


  • ParId Eindeutige Kennung der Zeile (ID) – wie im XML-Dokument übergeben


  • ParField Spalten-Name der fehlerhaften Eingabe.

Beispiele für den Aufruf

DCL-DS RefDSRow Qualified Template Inz;
Id Int(10);
DCAPP Char(10);
DCNAM Char(10);
NEWSEQ Packed(5);
DCTXT Char(30);
DCKEY Char(20);
DCDTA Char(50);
DCICN Char(50);
End-Ds;
DCL-DS Rows Qualified Inz;
Row LikeDS(RefDSRow) Dim(100);
Anz_Row Int(10);
End-Ds;
//------------------------------------------------------------------------
Monitor;
Clear Rows;
LocString = Wx_GetEdtListXML();
XML-INTO Rows %XML(LocString: 'allowmissing=yes allowextra=yes +
case=any countprefix=Anz_');
For LocIndex = 1 to Rows.Anz_Row;
If Rows.Row(LocIndex).Id = *Zeros;
Leave;
EndIf;
If %Len(%Trim(Rows.Row(LocIndex).DCICN)) = *Zeros;
WX_WrkFldErr('MSG4711':
%Char(Rows.Row(LocIndex).Id):
'DCICN');
EndIf;
//weiterer Source Code
Source Code 235: Aufruf - Funktion Wx_GetReseqArrInt() – Numerische Schlüssel-Werte in neuer Reihenfolge

WX_MultWrkFldErr() – Fehler

Sofern innerhalb der gleichen Zeile mehrere editierbare Spalten mit der gleichen Fehlermeldung bestückt werden sollen, kann dies mit Hilfe der Funktion WX_MultWrkErr.
Wichtig ist auch an dieser Stelle, dass neben den Nahmen der fehlerhaften Spalten die Id (der eindeutige Schlüssel), genauso wie er im XML-Dokument steht, angeben wird. (Über die ID und den Spalten-Namen können die Nachrichten dann zugewiesen werden.

Prototype

//**********************************************************************
// Procedure name: Wx_MultWrkFldErr
// Purpose: Set Error for Multiple Fields
// Returns:
// Parameters: ParMsg => Message-Id or Text
// Parameters: ParId => Id / Unique Key in the work file
// Parameters: ParField01 => Field 01
// Parameters: ParField02 => Field 02
// Parameters: ParField03 => Field 03
// Parameters: ParField04 => Field 04
// Parameters: ParField05 => Field 05
// Parameters: ParField06 => Field 06
// Parameters: ParField07 => Field 07
// Parameters: ParField08 => Field 08
// Parameters: ParField09 => Field 09
// Parameters: ParField10 => Field 10
// Parameters: ParFile => File
// Parameters: ParLib => Bibliothek
//----------------------------------------------------------------------
// 2018-02-07 BHA: Creation
//**********************************************************************
DCL-Proc Wx_MultWrkFldErr Export;
DCL-PI Wx_MultWrkFldErr;
ParMsg Like(FldRef.MsgData) Const;
ParId Like(FldRefMA.VarLen) Const;
ParField01 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField02 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField03 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField04 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField05 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField06 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField07 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField08 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField09 Like(FldRef.NameSQL) Const Options(*NoPass);
ParField10 Like(FldRef.NameSQL) Const Options(*NoPass);
End-PI;
Source Code 236 - Prototyp Wx_MultWrkFldErr() - Fehlermeldung für mehrere Spalten

Parameter

  • ParMsg Nachrichten-Text oder Message-Id der Fehlermeldung


  • ParId Eindeutige Kennung der Zeile (ID) – wie im XML-Dokument übergeben


  • ParField01-10Spalten-Namen der fehlerhaften Eingaben.

Parameter-Feld ParField01 (bzw. 1 Spalte muss angegeben werden.
Die übrigen Spalten-Parameter sind optional.

Beispiele für den Aufruf

DCL-DS RefDSRow Qualified Template Inz;
Id Int(10);
DCAPP Char(10);
DCNAM Char(10);
NEWSEQ Packed(5);
DCTXT Char(30);
DCKEY Char(20);
DCDTA Char(50);
DCICN Char(50);
End-Ds;
DCL-DS Rows Qualified Inz;
Row LikeDS(RefDSRow) Dim(100);
Anz_Row Int(10);
End-Ds;
//------------------------------------------------------------------------
Monitor;
Clear Rows;
LocString = Wx_GetEdtListXML();
XML-INTO Rows %XML(LocString: 'allowmissing=yes allowextra=yes +
case=any countprefix=Anz_');
For LocIndex = 1 to Rows.Anz_Row;
If Rows.Row(LocIndex).Id = *Zeros;
Leave;
EndIf;
If %Len(%Trim(Rows.Row(LocIndex).DCTXT)) > *Zeros
and Rows.Row(LocIndex).DCTXT = Rows.Row(LocIndex).DCICN;
WX_MultWrkFldErr('MSG4712':
%Char(Rows.Row(LocIndex).Id):
'DCICN': 'DCTXT');
EndIf;
//weiterer Source Code
Source Code 237: Editierbare List-Anzeige - Fehlermeldung für mehrere Spalten

Direkter Aufruf von CGI-Programmen

CGI-Programme können nicht über die RPG-OpCodes CALL oder CALLP aufgerufen werden. Um den Aufruf von CGI-Programmen aus anderen CGI-Programmen zu erleichtern wurden Prozeduren eingeführt, die den OpCodes nachempfunden wurden.
Der direkte Aufruf von CGI-Programmen ist z.B. in Change-Programmen erforderlich, sofern der Modus eine eindeutige Kennung ist, jedoch keinem Programm-Namen entspricht.
Ebenso könnte sein, dass unter einer bestimmten Bedingung (Auftrags-Kopf wurde zwar ausgewählt, jedoch zwischenzeitlich vom Kollegen gelöscht) ein anderes CGI-Programm (z.B. Erfassung Auftrags-Daten) ausgeführt werden soll.
Der direkte Aufruf von CGI-Programmen erfolgt über Prozedur Wx_CallPGM().
Achtung:Da aus einem CGI-Programm ein anderes CGI-Programm aufgerufen wird, und ein CGI-Programm nach der Ausgabe an den Browser beendet wird, wird auch das rufende Programm beendet.

Wx_CallPGM() – Direkter Aufruf CGI-Programm

Die Prozedur Wx_CallPGM() generiert die URL, die für den Aufruf erforderlich ist und initiiert den Aufruf.
An die Prozedur Wx_CallPGM wird der Name des aufzurufenden Programms übergeben. Weiterhin können bis zu 5 Parameter-Werte übergeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_CallPGM
P* Purpose: Call Next CGI Program with Single Parameters
P* Returns: URL
P* Parameters: ParPGM => Program
P* Parameters: ParParm1 => Parameter 1 (Optional)
P* Parameters: ParParm2 => Parameter 2 (Optional)
P* Parameters: ParParm3 => Parameter 3 (Optional)
P* Parameters: ParParm4 => Parameter 4 (Optional)
P* Parameters: ParParm5 => Parameter 5 (Optional)
***************************************************************************
D Wx_CallPGM...
D PR OpDesc
D ParPGM Like(FldRef.PGM) Const
D ParParm1 Like(FldRef.TextVAR) Const
D Options(*NoPass)
D ParParm2 Like(FldRef.TextVAR) Const
D Options(*NoPass)
D ParParm3 Like(FldRef.TextVAR) Const
D Options(*NoPass)
D ParParm4 Like(FldRef.TextVAR) Const
D Options(*NoPass)
D ParParm5 Like(FldRef.TextVAR) Const
D Options(*NoPass)
D ParMode Like(FldRef.ModeChar) Const
D Options(*NoPass)
Source Code 238204: Prototype Prozedur Wx_CallPGM - Direkter Aufruf CGI Programm

Parameter

  • ParPGMName des aufzurufenden Programms

Bibliothek kann nicht angegeben werden.

  • ParParam1- ParParam5 Alphanumerischer Parameter-Wert

Optionaler Parameter
Es können bis zu 5 alphanumerische Parameter-Werte übergeben werden. Diese Parameter-Werte können in dem Folge-Programm verwendet werden.
Anstatt die gewünschten Parameter-Werte über die Funktion Wx_CallPGM() zu setzen, ist es auch möglich die Werte über durch Aufruf einer der Funktionen Wx_SetParmXXXX zu setzen (vergl. 3.13 Ermitteln und Setzen von Parameter-Werten)

Beispiele für den Aufruf

If GblKGID = *Zeros;
Wx_CallPGM('KXWRKNGR');
ElseIf Wx_isMode('TEILN');
Wx_CallPGM('KXWRKKOTN': %Char(GblKGID));
ElseIf Wx_isMode('UMSATZ');
Wx_CallPGM('KXUMSATZ': %Char(GblJAHR), GblDs.KundeNr, Wx_GetParmChar(3));
EndIf;
Source Code 239205: Aufruf Prozedur - Wx_CallPGM - Direkter Aufruf CGI Programm

Change Programm

Für Change Programme stehen die folgenden WOPiXX-Prozeduren zur Verfügung:

Tabelle 4: WOPiXX-Prozeduren für Change-Programme
Für ein Change-Programm sind nicht immer alle WOPiXX-Prozeduren erforderlich.
Der Aufruf der WOPiXX-Prozeduren sollte jedoch (weitgehend) in der Reihenfolge, in der die Prozeduren aufgelistet sind erfolgen.
Die blau eingefärbten Prozeduren können sowohl in Work- als auch in Change-Tables aufgerufen werden. Die übrigen Prozeduren können nur in Verbindung mit Change-Tables verwendet werden.

In einem Change-Programm müssen die folgenden Schritte abgedeckt sein

    • Sofern erforderlich Schlüssel-Werte aus vorgelagertem Work-Programm empfangen

Prozeduren Wx_GetDBKeyXX

    • Sofern erforderlich Parameter aus vorgelagertem Programm empfangen

Prozeduren Wx_GetParmXX

    • Sofern erforderlich Modus prüfen

Prozeduren Wx_isModeXX

    • Sofern erforderlich abhängig vom Modus CGI-Programm aufrufen

Prozedur Wx_CallPGM() und individuelle Programmierung

    • HTML-Dokument öffnen

Prozedur Wx_OpnHTMLChg()

    • Verwendete Dateien/Tabellen/Views definieren

Prozedur Wx_ChgFile()

    • Datensätze einlesen

individuelle Programmierung

    • Ein-/Ausgabe Felder definieren

Prozedur Wx_ChgFld()

    • HTML-Dokument ausgeben und erfasste Daten empfangen

Prozedur Wx_GetChgInput()

    • Sofern erforderlich individuelle Eingabe-Prüfung und

Ausgabe von Fehler-Meldungen
Prozeduren Wx_FldErr() oder Wx_MultFldErr()

    • Datensatz fortschreiben

individuelle Programmierung

    • HTML-Dokument ausgeben bzw. auf vorheriges Programm zurückspringen

Prozedur Wx_WrtChgTbl()

Template für Change-Programm

Ein Template für ein Change-Programm mit Copy-Strecken und den erforderlichen Prozedur-Aufrufen in der erforderlichen Reihenfolge befindet sich in:

  • Bibliothek WOPIX
  • Quellen-Datei QCPYLESRC
  • Member EXCHGTEMP

Dieses Template kann kopiert und für die individuellen Change-Programme modifiziert werden.

Wx_OpnHTMLChg() – HTML Dokument öffnen

Für die Dialog-Ausgabe muss zunächst festgelegt werden, ob eine List-Anzeige (Work-Table) oder Detail-Anzeige (Change Table) erstellt werden soll. Die Unterscheidung erfolgt durch den Aufruf von unterschiedlichen Prozeduren für Work- oder Change-Tables.
Zum Erstellen einer Change-Table wird zunächst die Prozedur WX_OpnHTMLChg() (Open HTML Document for Change 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 WOPiXX/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) kann angegeben werden. Wird kein Folge-Programm angegeben, so wird davon ausgegangen, dass das gleiche Programm erneut aufgerufen werden soll. Dies ist bei Ein/Ausgabe-Programmen i.d.R. erforderlich, da das Programm beim Senden des HTML-Dokuments an den Browser beendet wird und zum Empfangen der erfassten Daten erneut aufgerufen wird. (Wird in der WOPiXX-Prozedur DW_GetChgInput() gesteuert).
Die Prozedur Wx_OpnHTMLChg() darf pro Change-Programm nur einmalig aufgerufen werden.

Prototype

***************************************************************************
P* Procedure name: Wx_OpnHTMLChg
P* Purpose: Open HTML Document for CGI Change Program
P* Returns:
P* Parameters: ParMsg => Message-Id Header or Header-Text
P* Parameters: ParCGIPGM => Program to Call
P* Parameters: ParHTMLDoc => HTML-Document
P* --> Not Passed or *DEFAULT passed --> Default
P* Parameters: ParOpnOpt => Additional Open Options
***************************************************************************
D Wx_OpnHTMLChg...
D PR OpDesc
D ParMsg Like(FldRef.MsgText) Const
D PInCGIPGM Like(FldRef.PGM) Const
D Options(*NoPass)
D PInHtmlDoc Like(FldRef.HTMLDOC) Const
D Options(*NoPass)
D PInOpnOpt Like(FldRefCGI.Options) Const
D Options(*NoPass)
Source Code 240206: Prototype - Prozedur Wx_OpnHTMLChg() - HTML-Dokument für Change Tables öffnen

Parameter

  • ParTitleMessage-Id oder Text für Titel


  • PInCGIPGMFolge-Programm

Optionaler-Parameter
Wird kein CGI-Programm übergeben, wird das aktuelle Programm erneut aufgerufen.

  • PInHTMLDoc HTML-Dokument

Optionaler Parameter
Muss nur angegeben werden, wenn ein anderes als das Default HTML-Dokument verwendet werden soll

  • PInOpnOptOptions

Optionaler Parameter

  • 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/ANWENDUNG

  • 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/icons/ANWENDUNG
Parm3 und Parm4 sind optional

Beispiele für den Aufruf

Wx_OpnHTMLChg('Artikel-Stamm');
Wx_OpnHTMLChg('Adress-Stamm': 'EXCHGAD01');
Wx_OpnHTMLChg('TOP0017': '': 'MyChgUmsatz.html');
Wx_OpnHTMLChg('TOP0017': '': 'MyChgUmsatz.html':
'helpDoc(HLP0002, HLP0001, *NONE, Phone-52.png) '));
Source Code 241207: Prozedur Wx_OpnHTMLWrk - HTML Dokument für Worktables öffnen

Wx_ChgNavTab() – Reiter definieren

Die einzelnen Ein-/Ausgabe-Felder in Change Tables können unter Navigation Tabs/Reitern gruppiert und zusammengefasst werden.
Über die Funktion Wx_ChgNavTab() wird ein Reiter definiert.
Alle Ein-/Ausgabe-Felder, die im Anschluss an diesen Reiter definiert werden, werden unter diesem Reiter angeordnet.
Wird ein weiterer Reiter definiert, werden die im Anschluss definierten Ein/Ausgabe-Felder unter diesem neuen Reiter angeordnet.
Anmerkung: In einer Change Table können nur maximal 100 Ein-/Ausgabe-Felder definiert werden (unabhängig davon, unter wie vielen Reitern die Ein-/Ausgabe-Felder angeordnet werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ChgNavTab
P* Purpose: Define Navigation Tabs for Change Table
P* Returns:
P* Parameters: ParNavTab => Navigation Tab
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParOptions => Options
***************************************************************************
D Wx_ChgNavTab...
D PR OPDesc
D ParNavTab Like(FldRefCGI.Options) Const
D ParDescr Like(FldRef.MsgData) Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
Source Code 242208: Prototype - Procedure Wx_ChgNavTab() - Reiter definieren

Parameter

  • ParNavTabEindeutiger (interner) Name für den Navigation Tab/Reiter


  • ParDescrBeschreibung/Text, der im Navigation Tab/Reiter angezeigt wird.

Die Beschreibung kann entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParOptions Aufbereitungsoptionen für Navigation Tab/Reiter

Optionaler Parameter

  • Icn(Icon)Icon das in dem Reiter angezeigt werden soll

Das wird ohne Pfad angegeben und Icon muss im Anwendungs-Verzeichnis für Icons hinterlegt werden:
/www/dirweb/icons/Anwendung

Beispiele für den Aufruf

Wx_ChgNavTab('Allgemein': 'KXD0037');
//Definition der Ein-/Ausgabe-Felder für Navigation Tab Allgemein
Wx_ChgNavTab('Ausgabe': 'Ausgabe');
//Definition aller Ein-/Ausgabe-Felder für Navigation Tab Ausgabe
Wx_ChgNavTab('Suche': 'KXD0047');
//Definition aller Ein-/Ausgabe-Felder für Navigation Tab Suche
Wx_ChgNavTab('Adresse' :'NAV0001' : 'icn(folderOpen.gif)');
//Definition aller Ein/Ausgabe-Felder für Navigation Tab Adresse
Source Code 243209: Aufruf Prozedur - Wx_ChgNavTab - Navigation Tabs/Reiter definieren

Abbildung 26: Navigation Tabs/Reiter - Ergebnis aus Source Code 167

Wx_ChgBtn() – Buttons definieren

In Change-Programmen können zusätzliche Buttons definiert werden, zum Aufruf von weiteren Web-Programmen.
Beim Klicken auf den entsprechenden Button wird das gewünschte Folge-Programm aktiviert.
Weiterhin besteht die Möglichkeit für alle Buttons eine Bestätigung anzufordern und auch für Standard-Buttons kann der Button-Text beliebig verändert werden.
Buttons in Change-Programmen werden über die Funktion Wx_ChgBtn() definiert.

Prototype

***************************************************************************
P* Procedure name: Wx_ChgBtn
P* Purpose: Define Buttons used in Change Tables
P* Returns:
P* Parameters: ParButton => => Button --> Several Default *ITEMs (s
P* Default Options: change, cancel, refresh
P* save, copy, apply
P* *DFT/*DEFAULT --> all of the listed above
P* Parameters: ParMsg => Message-Id or Button Text
P* Parameters: ParOptions => Options
P* Parameters: ParTblOptions => Options
***************************************************************************
D Wx_ChgBtn...
D PR OpDesc
D ParButton Like(FldRef.MnuItm) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParTblOptions Like(FldRef.TextVar) Const
D Options(*NoPass)

Source Code 244210: Prototype - Procedure Wx_ChgNavTab() - Reiter definieren

Parameter

  • ParButton Name des Programms, das aufgerufen werden soll oder einer der Default-Werte (Change, Cancel, Refresh, Save, Copy, Apply – mit oder ohne führenden *) oder *DFT oder *DEFAULT für alle Default Buttons.


  • ParMsg Button-Text

Message-Id oder Message-Text

  • ParOptions Optionen für Buttons z.B. Confirm für Bestätigung.

Beispiele für den Aufruf

Wx_ChgBtn('*Save': 'Bestätigen+Sichern': 'confirm');
Wx_ChgBtn('*CANCEL': 'MSG4711': 'confirm(Wollen Sie das wirklich?)');
Wx_ChgBtn('WXWRKLIBH': 'Bibliotheksliste');
Source Code 245211: Aufruf Prozedur – Wx_ChgBtn – Definieren Buttons in Change Tables

Abbildung 27: Wx_ChgBtn - Buttons in Change Tables definieren

Wx_ChgFile() – Datei für Change Table definieren

Um Ein-/Ausgabe-Felder, die in Dateien/Tabellen/Views hinterlegt sind, müssen zunächst die Dateien/Tabellen/Views über die Prozedur Wx_ChgFile() definiert werden.
Über die Funktion Wx_ChgFile() können bis zu 10 Dateien/Tabellen/Views definiert werden. Im Gegensatz zu den Work Tables bei denen eine Verknüpfung zwischen den einzelnen Tabellen angegeben werden musste, können bei Change Tables die Dateien/Tabellen/Views unabhängig voneinander angegeben werden.
Sofern nur eine einzige Datei/Tabelle/View benötigt wird, kann diese auch direkt zusammen mit dem ersten Feld über Funktion Wx_ChgFileFld() (vergl. 3.18.7 Wx_ChgFileFld() – Datei und 1.Feld definieren) definiert werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ChgFile
P* Purpose: Define Files used for Change Tables
P* --> Up to 10 Files can be specified
P* Returns:
P* Parameters: ParFile1 => File/Table 1
P* Parameters: ParFile2 => File/Table 2 (Optional)
P* Parameters: ParFile3 => File/Table 3 (Optional)
P* Parameters: ParFile4 => File/Table 4 (Optional)
P* Parameters: ParFile5 => File/Table 5 (Optional)
P* Parameters: ParFile6 => File/Table 6 (Optional)
P* Parameters: ParFile7 => File/Table 7 (Optional)
P* Parameters: ParFile8 => File/Table 8 (Optional)
P* Parameters: ParFile9 => File/Table 9 (Optional)
P* Parameters: ParFile10 => File/Table 10 (Optional)
***************************************************************************
D Wx_ChgFile...
D PR OPDesc
D ParFile1 Like(FldRef.NameSQL) Const
D ParFile2 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParFile3 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParFile4 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParFile5 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParFile6 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParFile7 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParFile8 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParFile9 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParFile10 Like(FldRef.NameSQL) Const
D Options(*NoPass)
Source Code 246212: Prototype - Prozedur Wx_ChgFile - Dateien für Change Table definieren

Parameter

  • ParFile1Physische Datei/Tabelle/View

Kann als kurzer System-Name (Max.10 Zeichen) oder langer SQL Name (Max. 128 Zeichen) angegeben werden.

  • ParFile2 – ParFile10 Physische Datei/Tabelle/View

Optionaler Parameter
Kurzer System- oder langer SQL Name

Beispiel für den Aufruf

Wx_ChgFile('AuftrKopfX');
Wx_ChgFile('AuftrKopfX': 'AuftrPosX': 'KundSt');
Source Code 247213: Beispiel Aufruf Prozedur WX_ChgFile() – Dateien für Change Table definieren

Wx_ChgFld() – Felder in Change Tables definieren

Ein-/Ausgabe-Felder, die in den zuvor definierten Tabellen hinterlegt sind, müssen mit der Prozedur Wx_ChgFld() für WOPiXX registriert werden.

Damit die Daten zwischen WOPiXX und dem individuellen CGI-Programm ausgetauscht werden können, muss ein Pointer auf das gewünschte Feld, dessen Daten ausgetauscht werden sollen, an die WOPiXX-Prozedur übergeben werden.

WOPiXX ermittelt basierend auf der Feldbeschreibung den Datentypen und die Länge der übergebenen Daten, übersetzt die Daten in HTML-Schreibweise und bringt die eingegebenen Daten im Feld-Format zurück.

Anmerkung:Alle Felder und Variablen, über die Informationen mit WOPiXX ausgetauscht werden, müssen als Datenstruktur-Unterfelder definiert werden!

Felder in Datenstrukturen werden vom RPG-Compiler nicht konvertiert.

Prototype

***************************************************************************
P* Procedure name: Wx_ChgFld
P* Purpose: Define Fields used for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No H
***************************************************************************
D Wx_ChgFld...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)

Source Code 248214: Prototype - Prozedur Wx_FltFld - Definieren Filter-Felder

Parameter

  • ParFieldFeld/Spalten-Name des Ein-/Ausgabe-Feldes

Das Ein-/Ausgabe-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.

  • ParPtrPointer auf das Ein-/Ausgabe-Feld

Das Ein-/Ausgabe-Feld muss in einer der zuvor definierten Tabellen vorhanden sein und in einer Datenstruktur hinterlegt sein.

Übergabe erfolgt in Verbindung mit der Built-In-Funktion %ADDR().

  • ParDescrBeschreibung, die links neben dem Filter-Feld angezeigt wird

Optionaler Parameter

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder nicht oder leer oder mit *Blanks gefüllt übergeben.

Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.

Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParOptions Aufbereitungsoptionen

Optionaler Parameter

Vergl.  Aufbereitungsoptionen für Detail-Anzeigen 

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter

Werden in JavaScript konvertiert und zur Laufzeit ausgeführt

  • ParHelpBedienerhilfe

Optionaler Parameter

Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.

Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

If GblKGId = *Zeros;

Wx_ChgFld('KGTINR': %Addr(GblDSKGP.KGTINR): 'KXD0022': //Event
'required ExecSQL(ITPWITITP)');

EndIf;

Wx_ChgFld('KGINFOKZA': %Addr(GblDSKGP.KGINFOKZA): 'KXD0084': //Info-Kennz.1
'ExecSQL(ITPINFOKZ2) ' + LocDftOpt);

Wx_ChgFld('KGINFOKZB': %Addr(GblDSKGP.KGINFOKZB): '': //Info-Kennz.2
'ExecSQL(ITPINFOKZ2) ' + LocDftOpt);

Wx_ChgFld('KGSTRDAT': %Addr(GblDSKGP.KGSTRDAT): 'KXD0035': //Startdatum
LocDftOpt + ' NoNewLin Required');

Wx_ChgFld('KGSTRTIM': %Addr(GblDSKGP.KGSTRTIM): 'KXD0036': LocDftOpt);//Startzeit

Wx_ChgFld('KGENDDAT': %Addr(GblDSKGP.KGENDDAT): 'KXD0039': //Endedatum
LocDftOpt + ' NoNewLin Required');

Wx_ChgFld('KGENDTIM': %Addr(GblDSKGP.KGENDTIM): 'KXD0036': LocDftOpt);//Ende-Zeit

Wx_ChgFld('KGHOTEL' : %Addr(GblDSKGP.KGHOTEL): 'KXD0041'); //Hotel

Wx_ChgFld('KGHOTELSTR' : %Addr(GblDSKGP.KGHOTELSTR); //Hotel – Strasse

Wx_ChgFld('KGHOTELORT' : %Addr(GblDSKGP.KGHOTELORT); //Hotel - Ort

Wx_ChgFld('KGHOTELTEL' : %Addr(GblDSKGP.KGHOTELTEL); //Hotel - Telefon

Wx_ChgFld('KGANFAHRT' : %Addr(GblDSKGP.KGANFAHRT): 'KXD0042'); //Hotel - Anfahrt

Source Code 249215 : Aufruf Prozedur Wx_ChgFld() – Ein-/Ausgabe-Felder definieren

Abbildung 28 : Definierte Ein/Ausgabe-Felder - Ergebnis aus Source Code 173

Wx_ChgFileFld() – Datei und 1.Feld definieren

Sofern nur auf eine einzige physische Datei/Tabelle/View zugegriffen wird, kann die Datei/Tabelle/View über die Funktion WX_ChgFileFld() direkt zusammen mit dem ersten Ein-/Ausgabe-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_ChgFld() übergeben werden können.

Prototype

***************************************************************************
P* Procedure name: Wx_ChgFileFld
P* Purpose: Define File and Field for Change Tables
P* Returns:
P* Parameters: ParFile => File
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
***************************************************************************
D Wx_ChgFileFld...
D PR OPDesc
D ParFile Like(FldRef.NameSQL) Const
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 250216: Prototype - Prozedur Wx_FltFileFld() - Definiere Filter-Datei und 1.Feld

Parameter

  • ParFilePhysische 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_ChgFile()

  • ParFieldFeld/Spalten-Name des Ein-/Ausgabe-Feldes

Das Ein-/Ausgabe-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.

  • ParPtrPointer auf das Ein-/Ausgabe-Feld

Das Ein-/Ausgabe-Feld muss in einer der angegebenen Datei/Tabelle/View vorhanden und in einer Datenstruktur hinterlegt sein.
Übergabe erfolgt in Verbindung mit der Built-In-Funktion %ADDR().

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird

Optionaler Parameter
Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder nicht oder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParOptions Aufbereitungsoptionen

Optionaler Parameter
Vergl. Aufbereitungsoptionen für Detail-Anzeigen

  • ParCond Bedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt

  • ParHelp Bedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ChgFileFld('AdresseX': 'KundeNr': %Addr(DS.KundeNr): 'FLD0001':
'Range(000000, 999999) Right Required');

Wx_ChgFileFld('ArtikelBas': 'ArtikelNr': %Addr(ArtikelNr): 'FLD0008');

Source Code 251217: Aufruf Prozedur Wx_FltFileFld() - Definieren Filter-File und 1. Feld

Definieren Arbeits-Felder/Variablen

Für Change Tables ist es nicht erforderlich, dass alle Ein-/Ausgabe-Felder in den definierten Dateien/Tabellen/Views vorhanden sind.

Für Change Tables können vielmehr auch Variablen, die in RPG entweder in den globalen oder lokalen D-Bestimmungen definiert wurden in WOPiXX registriert werden.

Da der Datentyp und die Länge der Variablen nicht aus den definierten Tabellen ermittelt werden kann, ist es erforderlich, diese Informationen bei der Definition der Variablen in WOPiXX anzugeben.

WOPiXX stellt mehrere Funktionen zur Registrierung von Arbeitsfeldern/Variablen in WOPiXX zur Verfügung:

  • Wx_ManChgFld() Definieren Variable - Alle Datentypen
  • Wx_ManChgFldChar() Definieren alphanumerische Variable mit fixer Länge
  • Wx_ManChgFldVarChar() Definieren alphanumerische Variable mit variabler Länge
  • Wx_ManChgFldUC2() Definieren Unicode-Variable mit fixer Länge
  • Wx_ManChgFldVarUC2() Definieren Unicode-Variable mit variabler Länge
  • Wx_ManChgFldPack()Definieren gepackte Variable
  • Wx_ManChgFldZone()Definieren gezonte Variable
  • Wx_ManChgFldInt()Definieren Integer-Variable
  • Wx_ManChgFldFloat()Definieren Fließkomma-Variable
  • Wx_ManChgFldDate()Definieren Datums-Variable
  • Wx_ManChgFldTime()Definieren Zeit-Variable
  • Wx_ManChgFldTimestamp()Definieren Zeitmarken-Variable
  • Wx_ManChgFldRef()Definieren Variable basierend auf einem Referenz-Feld

Anmerkung:Wie auch die Ein-/Ausgabe-Felder, die in Dateien/Tabellen/Views hinterlegt sind, müssen auch die Arbeits-Felder/Variablen als in RPG als Datenstruktur-Unterfelder definiert werden.

Datums- und Zeitfelder sollten mit Datums- bzw. Zeit-Format *ISO definiert werden.

Wx_ManChgFld() – Definieren Variable für jeden Datentypen

Mit der Prozedur Wx_ManChgFld() können Arbeitsfelder/Variablen mit jedem in RPG zulässigen Datentypen definiert werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ManChgFld
P* Purpose: Define Fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParDataType => Data Type
P* Parameters: ParLen => Length (Not Size!!!)
P* Parameters: ParDecPos => Decimal Positions
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No Help
***************************************************************************
D Wx_ManChgFld...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D ParDataType Like(FldRef.DataType) Const
D ParLen 10I 0 Options(*NoPass) Const
D ParDecPos 3I 0 Options(*NoPass) Const
D ParDatFmt Like(FldRef.Text10V) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)

Source Code 252218: Prozedur Wx_ManChgFld() - Definieren Variable für alle Datentypen

Parameter

  • ParField Eindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtr Pointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.

  • ParDescr Beschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.

Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.

Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParDataType Datentyp in dem das Arbeitsfeld/Variable definiert wurde

Siehe Gültige Datentypen

  • ParLen Länge des Arbeitsfeldes/Variable

Optionaler Parameter, muss nur angegeben werden, sofern die Länge nicht allein durch den Datentypen definiert wurde.

Ist die Länge erforderlich, muss die Anzahl der Zeichen (nicht Anzahl an Bytes) muss übergeben werden.

Bei alphanumerischen und Unicode Feldern mit fixer Länge entspricht die Länge der definierten Länge.

Bei alphanumerischen und Unicode Feldern mit variabler Länge entspricht die Länge der maximalen Länge.

Bei gezonten und gepackten numerischen Feldern wird die Anzahl der Ziffern angegeben, d.h. Definition 11P 2  11

Sofern bei Integer- oder Fließkomma-Feldern der SQL-Datentyp übergeben wurde, ist die Längenangabe nicht erforderlich.

Sofern bei Integer-Feldern der RPG Datentyp (I) angegeben wurde, muss die Länge so wie in RPG definiert angegeben werden, d.h. 5I 05.

Sofern bei Fließkomma-Feldern der RPG Datentyp (F) verwendet wurde, muss die Länge so wie in RPG definiert angegeben werden, d.h. 8F  8.

Für Datums-, Zeit- und Zeitmarken-Felder ist keine Längenangabe erforderlich.

  • ParDec PosDezimal-Positionen

Optionaler Parameter, nur für gepackte und gezonte numerische Arbeitsfelder/Variablen erforderlich.

  • ParDatFmt Datums- und Zeit-Formate

Optionaler Parameter, nur für Datums- und Zeit-Arbeitsfelder/Variablen erforderlich.

Die Angabe ist bei Datums- und Zeit-Feldern auch nur dann erforderlich, wenn diese Arbeitsfelder/Variablen in RPG nicht im *ISO-Format definiert wurden.

Gültige Werte für die Datums- und Zeit-Formate sind:

  • *ISOISO-Datums-Format=JJJJ-MM-TT

ISO-Zeit-Format = HH.MM.SS

  • *EUREuropäisches Datum =TT.MM.JJJJ
  • *USAAmerikanisches Datum =MM/TT/JJJJ

Amerikansche Zeit = HH:MMam/PM

  • *YMDJahr/Monat/Tag Format =JJ-MM-TT
  • *DMYTag/Monat/Jahr Format =TT.MM.JJ
  • *MDYMonat/Tag/Jahr Format = MM/TT/JJ
  • *HMSStunde/Minute/Sekunde = HH:MM:SS


  • ParOptions Aufbereitungsoptionen

Optionaler Parameter

Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFld('LandBez': %Addr(GblLandBez): '': 'VARCHAR':
%Size(GblLandBez) - 2: 0: '':
'DependList(File=LandBase, LaBez, LaLand=Land) '+
'output ');
Wx_ManChgFld('ERFDATE': %Addr(GblErfDate): 'Erfassungsdatum': 'Date');
Wx_ManChgFld('TOTAL': %Addr(GblTotal): 'Gesamt': 'P': 11: 2: '':
'Output');
Source Code 253219: Aufruf Prozedur - Wx_ManChgFld() - Arbeitsfeld definieren

Wx_ManChgFldChar – Def. alphanumerische Variable fixer Länge

Mit Hilfe der Prozedur Wx_ManChgFldChar() können alphanumerische Arbeitsfelder/Variablen mit fixer Länge definiert werden.
Im Gegensatz zur Definition mit Prozedur Wx_ManChgFld() müssen nur die Informationen, die zur Erstellung von alphanumerischen Variablen mit fixer Länge erforderlich sind angegeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ManChgFldChar
P* Purpose: Define fixed Length Character Fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No Help
***************************************************************************
D Wx_ManChgFldChar...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D ParLen 10I 0 Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 254220: Prototype - Prozedur Wx_ManChgFldChar() - Definieren alphanumerische Variable mit fixer Länge

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParLenLänge des Arbeitsfeldes/Variable

Die zu übergebende Länge entspricht der Längen-Definition der Variablen.

  • Beispiel:Definition 256A  Länge = 256

Die Länge kann direkt angegeben oder mit Hilfe der Built-In-Funktion %LEN() ermittelt werden.

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt.

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldChar('KBDelete': %Addr(GblDS.KBDelete): 'Löschen':
%Len(GblDS.KBDelete): 'CheckBox');
Wx_ManChgFldChar('KGINFOTEXA': %Addr(GblDS.KGINFOTEXA): '':
%Len(GblDS.KGINFOTEXA):
'DependList(File=INFOFV05, ININTX, +
ININCD=KGINFOKZA) output ');
Wx_ManChgFldChar('SPNAME': %Addr(GblDS.SPNAME): '':
%Len(GblDS.SPNAME));
Source Code 255221: Aufruf - Prozedur Wx_ManChgFldChar() - Definieren alphanumerische Variable mit fixer Länge

Wx_ManChgFldVarChar – Def. alphanumerische Variable variabler Länge

Mit Hilfe der Prozedur Wx_ManChgFldVarChar() können alphanumerische Arbeitsfelder/Variablen mit variabler Länge definiert werden.
Im Gegensatz zur Definition mit Prozedur Wx_ManChgFld() müssen nur die Informationen, die zur Erstellung von alphanumerischen Variablen mit variabler Länge erforderlich sind angegeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ManChgFldVarChar
P* Purpose: Define fixed Length Character Fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (= Maximum Length)
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No Help
***************************************************************************
D Wx_ManChgFldVarChar...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D ParLen 10I 0 Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 256222: Prototype - Prozedur Wx_ManChgFldVarChar() - Definieren alphanumerische Variable mit variabler Länge

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.
Der Pointer muss auf die Variable incl. der beiden führenden unsichtbaren Bytes in denen die Länge gespeichert ist zeigen und nicht auf die Daten)

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParLen Maximale Länge des Arbeitsfeldes/Variable

Die zu übergebende Länge entspricht der maximalen Länge, die bei der Definition der Variablen angegeben wurde.

  • Beispiel:Definition 256A varying  Länge = 256

Ab Release 7.1 kann die maximale Länge mit Hilfe der Built-In-Funktion %LEN() ermittelt werden.  %LEN(*Max: MyVar)
Vor Release 7.1 kann die maximale Länge mit Hilfe der Built-In-Funktion %SIZE() abzüglich der führenden Bytes ermittelt werden:
 %SIZE(MyVar) – 2
Die maximale Länge kann auch direkt im Parameter angegeben werden.

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt.

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldVarChar('CSVFILE': %Addr(GblDS.CsvFile): 'KXD0093':
%Size(GblDS.CsvFile) - 2: 'required');
Wx_ManChgFldVarChar('LINKHOTEL': %Addr(GblDS.LinkHotel): '':
%Size(GblDS.LinkHotel) - 2: 'output iswww');
Wx_ManChgFldVarChar('GUTLAST': %Addr(GblDS.GutLast):
'Gutschrift/LastSchrift': %Size(GblDS.GutLast) - 2:
'ValuesList(' + %Trim(GblConstGut) + ', ' +
%Trim(GblConstLast) + ') +
required');
Source Code 257223: Aufruf Prozedur Wx_ManChgFldVarChar() - Definieren alphanumerisches Feld mit variabler Länge

Wx_ManChgFldUC2 – Definieren Unicode-Variable mit fixer Länge

Mit Hilfe der Prozedur Wx_ManChgFldUC2() können Unicode-Arbeitsfelder/Variablen mit fixer Länge definiert werden.
Im Gegensatz zur Definition mit Prozedur Wx_ManChgFld() müssen nur die Informationen, die zur Erstellung von Unicode-Variablen mit fixer Länge erforderlich sind angegeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ManChgFldUC2
P* Purpose: Define fixed Length Unicode Fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No Help
***************************************************************************
D Wx_ManChgFldUC2...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D ParLen 10I 0 Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 258224: Prototype - Prozedur Wx_ManChgFldUC2() - Definieren Unicode-Variable mit fixer Länge

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParLenLänge des Arbeitsfeldes/Variable

Die zu übergebende Länge entspricht der Längen-Definition der Variablen.

  • Beispiel:Definition 256C  Länge = 256

Die Länge kann direkt angegeben oder mit Hilfe der Built-In-Funktion %LEN() ermittelt werden.

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt.

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldUC2('KundeName': %Addr(GblDS.KundeName): '':
%Len(GblDS.LimdeMa,e):
'DependList(File=Kundst, KNDNAM, +
KNDNR=KundeNr) output ');
Wx_ManChgFldUC2('SPNAME': %Addr(GblDS.SPNAME): '':
%Len(GblDS.SPNAME));
Source Code 259225: Aufruf - Prozedur Wx_ManChgFldUC2() - Definieren Unicode-Variable mit fixer Länge

Wx_ManChgFldVarUC2 – Definieren Unicode-Variable mit variabler Länge

Mit Hilfe der Prozedur Wx_ManChgFldVarUC() können Unicode-Arbeitsfelder/Variablen mit variabler Länge definiert werden.
Im Gegensatz zur Definition mit Prozedur Wx_ManChgFld() müssen nur die Informationen, die zur Erstellung von Unicode-Variablen mit variabler Länge erforderlich sind angegeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ManChgFldVarUC2
P* Purpose: Define fixed Length Unicode Fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (= Maximum Length)
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No Help
***************************************************************************
D Wx_ManChgFldVarUC2...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D ParLen 10I 0 Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 260226: Prototype - Prozedur Wx_ManChgFldVarChar() - Definieren Unicode-Variable mit variabler Länge

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.
Der Pointer muss auf die Variable incl. der (beiden) führenden unsichtbaren Bytes in denen die Länge gespeichert ist zeigen und nicht auf die Daten)

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParLenMaximale Länge des Arbeitsfeldes/Variable

Die zu übergebende Länge entspricht der maximalen Länge, die bei der Definition der Variablen angegeben wurde.

  • Beispiel:Definition 256C varying  Länge = 256

Ab Release 7.1 kann die maximale Länge mit Hilfe der Built-In-Funktion %LEN() ermittelt werden.  %LEN(*Max: MyVar)
Die maximale Länge kann auch direkt im Parameter angegeben werden.

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt.

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldVarUC2('LINKHOTEL': %Addr(GblDS.LinkHotel): '':
%Size(GblDS.LinkHotel) - 2: 'output iswww');
Wx_ManChgFldVarUC2('GUTLAST': %Addr(GblDS.GutLast):
'Gutschrift/LastSchrift': %Size(GblDS.GutLast) - 2:
'ValuesList(' + %Trim(GblConstGut) + ', ' +
%Trim(GblConstLast) + ') +
required');
Source Code 261227: Aufruf Prozedur Wx_ManChgFldVarUC2() - Definieren Unicode-Variable mit variabler Länge

Wx_ManChgFldPack() – Definieren gepackte numerische Variable

Mit Hilfe der Prozedur Wx_ManChgFldPack() können gepackte numerische Arbeitsfelder/Variablen definiert werden.
Im Gegensatz zur Definition mit Prozedur Wx_ManChgFld() müssen nur die Informationen, die zur Erstellung von gepackten numerischen Variablen erforderlich sind angegeben werden.

Prototype

******************************************************************************
P* Procedure name: Wx_ManChgFldPack
P* Purpose: Define packed numeric fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not! Size)
P* Parameters: ParDecPos => Decimal Positions
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No Help
******************************************************************************
D Wx_ManChgFldPack...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const Fie
D ParPtr * Value Poi
D ParMsg Like(FldRef.MsgData) Const Mes
D ParLen 10I 0 Const Len
D ParDecPos 3U 0 Options(*NoPass) Const Dec
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const Con
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const Hel
D Options(*NoPass: *Trim)
Source Code 262228: Prototype - Prozedur Wx_ManChgFldPack() - Definieren gepackte numerische Variable

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParLenLänge des Arbeitsfeldes/Variable

Bei gezonten und gepackten numerischen Variablen/Arbeitsfeldern wird die Anzahl der Ziffern angegeben,

  • Beispiel:Definition 11P 2  11


  • ParDecPosDezimal-Positionen

Optionaler Parameter
Sofern der Parameter nicht angegeben wurde, werden 0 (*Zeros) Nachkommastellen angenommen.

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldPack('NUMDATE': %Addr(GblDS.NumDate): 'Datum':
%Len(GblDS.NumDate): *Zeros: ' Output DateNum');
Wx_ManChgFldPack('TOTAL': %Addr(GblDS.Total): 'Gesamt in Euro': 11: 2);
Source Code 263229: Aufruf Prozedur Wx_ManChgFldPack() - Definieren gepackt numerische Variablen

Wx_ManChgFldZone() – Definieren gezonte numerische Variable

Mit Hilfe der Prozedur Wx_ManChgFldZone() können gezonte numerische Arbeitsfelder/Variablen definiert werden.
Im Gegensatz zur Definition mit Prozedur Wx_ManChgFld() müssen nur die Informationen, die zur Erstellung von gezonten numerischen Variablen erforderlich sind angegeben werden.

Prototype


***************************************************************************
P* Procedure name: Wx_ManChgFldZone
P* Purpose: Define Zoned numeric fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not! Size)
P* Parameters: ParDecPos => Numeric Positions
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No Help
***************************************************************************
D Wx_ManChgFldZone...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D ParLen 10I 0 Const
D ParDecPos 3U 0 Options(*NoPass) Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 264230: Prototype - Prozedur Wx_ManChgFldZone() - Definieren gezonte numerische Variable

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParLenLänge des Arbeitsfeldes/Variable

Bei gezonten und gepackten numerischen Variablen/Arbeitsfeldern wird die Anzahl der Ziffern angegeben,

  • Beispiel:Definition 11S 2  11


  • ParDecPosDezimal-Positionen

Optionaler Parameter
Sofern der Parameter nicht angegeben wurde, werden 0 (*Zeros) Nachkommastellen angenommen.

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldZone ('NUMDATE': %Addr(GblDS.NumDate): 'Datum':
%Len(GblDS.NumDate): *Zeros: ' Output DateNum');
Wx_ManChgFldZone('TOTAL': %Addr(GblDS.Total): 'Gesamt in Euro': 11: 2);
Source Code 265231: Aufruf Prozedur Wx_ManChgFldZone() - Definieren gezont numerische Variablen

Wx_ManChgFldInt() – Definieren ganzzahlige Variable

Mit Hilfe der Prozedur Wx_ManChgFldInt() können ganzzahlige (Integer) Arbeitsfelder/Variablen definiert werden.
Im Gegensatz zur Definition mit Prozedur Wx_ManChgFld() müssen nur die Informationen, die zur Erstellung von ganzzahligen (Integer) Variablen erforderlich sind angegeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ManChgFldInt
P* Purpose: Define Integer numeric fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not! Size)
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No Help
***************************************************************************
D Wx_ManChgFldInt...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D ParLen 10I 0 Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 266232: Prototype - Prozedur Wx_ManChgFldInt() - Definieren ganzzahlige/Integer-Variable

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParLenLänge des Arbeitsfeldes/Variable

Zur Definition von Integer-Variablen sind nur die folgenden Längenangaben zulässig:

  • Small IntegerLänge = 5
  • IntegerLänge = 10
  • Big IntegerLänge = 20


  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldInt ('Counter': %Addr(GblDS.Counter): 'Zähler':
%Len(GblDS.Counter): ' Output');
Wx_ManChgFldInt('Stueck': %Addr(GblDS.Stueck): 'Anzahl': 10);
Source Code 267233: Aufruf Prozedur Wx_ManChgFldInt() - Definieren ganzzahlige/Integer Variablen

Wx_ManChgFldFloat() – Definieren Fließkomma-Variable

Mit Hilfe der Prozedur Wx_ManChgFldFloat() können Fließkomma-Arbeitsfelder/Variablen definiert werden.
Im Gegensatz zur Definition mit Prozedur Wx_ManChgFld() müssen nur die Informationen, die zur Erstellung von Fließkomma-Variablen erforderlich sind angegeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ManChgFldFloat
P* Purpose: Define Float numeric fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParLen => Length (Not! Size)
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No Help
***************************************************************************
D Wx_ManChgFldFloat...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D ParLen 10I 0 Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 268234: Prototype - Prozedur Wx_ManChgFldFloat() - Definieren Fließkomma-Variable

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParLenLänge des Arbeitsfeldes/Variable

Zur Definition von Fließkomma-Variablen sind nur die folgenden Längenangaben zulässig:

  • FloatLänge = 4
  • Double Länge = 8


  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet. Beispiele für den Aufruf
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldFloat('MyFloat': %Addr(GblDS.MyFloat): 'TXT0018':
%Len(GblDS.MyFloat): ' Output');
Wx_ManChgFldFloat('MyFloat2': %Addr(GblDS.MyFloat2): 'Beschreibung': 8);
Source Code 269235: Aufruf Prozedur Wx_ManChgFldFloat() - Definieren Fließkomma-Variable

Wx_ManChgFldDate() – Definieren Datums-Variable

Mit Hilfe der Prozedur Wx_ManChgFldDate() können Datums-Arbeitsfelder/Variablen definiert werden.
Im Gegensatz zur Definition mit Prozedur Wx_ManChgFld() müssen nur die Informationen, die zur Erstellung von Datums-Variablen erforderlich sind angegeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ManChgFldDate
P* Purpose: Define Date fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParDatFmt => Date Format
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No Help
***************************************************************************
D Wx_ManChgFldDate...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D Options(*NoPass)
D PInDatFmt Like(FldRef.Text10V) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 270236: Prototype - Prozedur Wx_ManChgFldDate() - Definieren Datums-Variable

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird

Optionaler Parameter
Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder nicht, leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParDatFmt Datums-Format

Optionaler Parameter
Wird das Datumsformat nicht angegeben, so wird davon ausgegangen, dass das *ISO-Format verwendet wird.
Die folgenden Datumsformate sind zulässig

  • *ISOISO-Datums-Format=JJJJ-MM-TT
  • *EUREuropäisches Datum =TT.MM.JJJJ
  • *USAAmerikanisches Datum =MM/TT/JJJJ
  • *YMDJahr/Monat/Tag Format =JJ-MM-TT
  • *DMYTag/Monat/Jahr Format =TT.MM.JJ
  • *MDYMonat/Tag/Jahr Format = MM/TT/JJ


  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldDate('FAKTURADAT': %Addr(GblDS.FakturaDat): 'KXD0065');
Wx_ManChgFldDate('StornoDat': %Addr(GblDS.StornoDat):
'Storno-Datum': '*EUR': ' Output ');
Source Code 271237: Aufruf Prozedur Wx_ManChgFldDate() - Definieren Datums-Variable

Wx_ManChgFldTime() – Definieren Zeit-Variable

Mit Hilfe der Prozedur Wx_ManChgFldTime() können Zeit-Arbeitsfelder/Variablen definiert werden.
Im Gegensatz zur Definition mit Prozedur Wx_ManChgFld() müssen nur die Informationen, die zur Erstellung von Zeit-Variablen erforderlich sind angegeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ManChgFldTime
P* Purpose: Define Time fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No H
***************************************************************************
D Wx_ManChgFldTime...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 272238: Prototype - Prozedur Wx_ManChgFldTime() - Definieren Zeit-Variable

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird.

Optionaler Parameter
Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder nicht, leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldTime('FAKTURATIM': %Addr(GblDS.FakturaTim): 'KXD0067');
Wx_ManChgFldTime('StornoTim': %Addr(GblDS.StornoTim): 'Storno-Zeit':
' Output ');
Source Code 273239: Aufruf Prozedur Wx_ManChgFldTime() - Definieren Zeit-Variable

Wx_ManChgFldTimestamp() – Definieren Zeit-Variable

Mit Hilfe der Prozedur Wx_ManChgFldTimestamp() können Zeitmarken-Arbeitsfelder/Variablen definiert werden.
Im Gegensatz zur Definition mit Prozedur Wx_ManChgFld() müssen nur die Informationen, die zur Erstellung von Zeitmarken-Variablen erforderlich sind angegeben werden.

Prototype


***************************************************************************
P* Procedure name: Wx_ManChgFldTimestamp
P* Purpose: Define Timestamp fields manually for Change Table
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParHelp => Help --> Special Value *NONE = No Help
***************************************************************************
D Wx_ManChgFldTimestamp...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParMsg Like(FldRef.MsgData) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 274240: Prototype - Prozedur Wx_ManChgFldTimestamp() - Definieren Zeitmarken-Variable

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird.

Optionaler Parameter
Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder nicht, leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldTimestamp('FAKTURATSP': %Addr(GblDS.FakturaTSp): 'KXD0060');
Wx_ManChgFldTimestamp('StornoTSP': %Addr(GblDS.StornoTSP): 'Storno-Datum/Zeit':
' Output ');
Source Code 275241: Aufruf Prozedur Wx_ManChgFldTimestamp() - Definieren Zeitmarken-Variable

Wx_ManChgFldRef() – Definieren Variable basierend auf Referenz-Feld

Mit Hilfe der Prozedur Wx_ManChgFldRef() können Arbeitsfelder/Variablen basierend auf der Definition von anderen Feldern definiert werden.

Prototype

***************************************************************************
P* Procedure name: Wx_ManChgFldRef
P* Purpose: Define Fields manually with field reference for Change Ta
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParPtr => Pointer to the original Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParOptions => Options
P* Parameters: ParCond => Conditions
P* Parameters: ParNavTab => Navigation Tabs
P* Parameters: ParFile => File
P* Parameters: ParLib => Library
P* Parameters: ParHelp => Help --> Special Value *NONE = No H
***************************************************************************
D Wx_ManChgFldRef...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParPtr * Value
D ParRefField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
D ParNavTab Like(FldRef.Text15V) Const
D Options(*NoPass)
D ParFile Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParLib Like(FldRef.Lib) Const
D Options(*NoPass)
D ParHelp Like(FldRefCGI.Help) Const
D Options(*NoPass: *Trim)
Source Code 276242: Prototype - Prozedur Wx_ManChgFldRef() - Definieren Variable über Referenz-Feld

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

Die eindeutige Kennung muss nicht dem Namen der Variablen entsprechen, darf jedoch innerhalb der Change Table nur einmalig definiert werden.

  • ParPtrPointer auf das Arbeitsfeld/Variable

Das Arbeitsfeld/Variable muss als Datenstruktur-Unterfeld definiert sein.

  • ParRefFieldReferenz-Feld

Das Referenz-Feld muss in einer der Dateien/Tabellen/Views, die über die Funktion Wx_ChgFile() definiert wurden hinterlegt sein.

  • ParDescrBeschreibung, die links neben dem Ein-/Ausgabe-Feld angezeigt wird.

Optionaler Parameter
Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder nicht, leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
Vergl. 3.3.7 Aufbereitungsoptionen für Detail-Anzeigen

  • ParCondBedingungen unter denen das Ein-/Ausgabe-Feld angezeigt werden soll.

Optionaler Parameter
Werden in JavaScript konvertiert und zur Laufzeit ausgeführt

  • ParHelpBedienerhilfe

Optionaler Parameter
Kann wahlweise direkt als Text oder Message-Id angegeben werden. Als Hilfe-Text wird der Level 2 Message-Text verwendet.
Sonderwert *NONE = automatische Ermittlung der Bediener-Hilfe unterbinden

Beispiele für den Aufruf

Wx_ManChgFldTimestamp('FAKTURATSP': %Addr(GblDS.FakturaTSp): 'KXD0060');
Wx_ManChgFldTimestamp('StornoTSP': %Addr(GblDS.StornoTSP): 'Storno-Datum/Zeit':
' Output ');
Source Code 277243: Aufruf Prozedur Wx_ManChgFldRef() - Definieren Variable über Referenz-Feld

Bedienerhilfe

Für Ein-/Ausgabe-Felder können individuelle Bedienerhilfe-Texte definiert werden.
Default: Der Level 2 Message-Text der Feldüberschrift wird als Bedienerhilfe ausgegeben.
Die Bedienerhilfe kann zum einen über einen optionalen Parameter in allen Definitions-Funktionen für Change-Tables (z.B. Wx_ChgFld() oder Wx_ManChgFldChar()) angegeben werden.
Alternativ kann die Bedienerhilfe die Funktion Wx_ChgHelp() für einzelne Felder eingebunden werden.
Dabei kann wahlweise direkt ein Text oder eine Message-Id übergeben werden. Wird eine Message-Id übergeben wird per Default der Level 2-Message-Text dieser Message-Id ermittelt und als Hilfe-Text ausgegeben.
Default: 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 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_ChgNoHelp() entweder für ein einzelnes Feld oder alle Felder unterbunden werden.
Sofern für ein Ein/Ausgabe-Feld eine Bedienerhilfe vorliegt, wird die Ausgabe des Fragezeichen-Icons gekennzeichnet. Bei der Mouse Over-Aktion wird der Hilfe-Text angezeigt.

Abbildung 29: Bedienerhilfe in Change Programmen

Wx_ChgHelp – Bedienerhilfe hinzufügen

Mit Hilfe der Funktion Wx_ChgHelp können in Change-Programmen Hilfe-Texte zugewiesen werden.

Prototyp

***************************************************************************
P* Procedure name: Wx_ChgHelp
P* Purpose: Add individual help to a change field
P* If a Message-Id is passed the 2nd Level Message Text will
P* be used as help text
P* If a Message-Text is passed this text will be used as Hel
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Help text or message id
P* Parameters: ParMsgTxt => Variable Message Texte
P* (Optional if a message id is specified)
***************************************************************************
D Wx_ChgHelp...
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 278244: Prototype - Procedure Wx_ChgHelp - Bedienerhilfe hinzufügen

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable


  • ParMsgBedienerhilfe oder Message-Id der Bedienerhilfe

Bedienerhilfe wird aus Level 2 Message-Text der Message-Id ermittelt

  • ParMsgTxtVariable Message-Textes

Sofern eine Message-Id übergeben wurde, können zusätzlich Variable Message-Texte (die die Platzhalter in dem Message-Text ersetzen angegeben werden)

Beispiele für den Aufruf

Wx_ChgHelp('ARTNR': 'ABC1234');
Wx_ChgHelp('ARTNR': 'ABC1234': MyFld1 + ' ' + MyFld2);
Wx_ChgHelp('KUNDENR': 'Dies ist ein Hilfetext für die Kunden-Nr. ');
Source Code 279245: Aufruf Prozedur Wx_ChgHelp() - Bedienerhilfe hinzufügen

Wx_ChgNoHelp – Bedienerhilfe unterbinden

Mit der Funktion Wx_ChgNoHelp() kann die automatische Ermittlung der Bedienerhilfe für einzelne Felder oder alle Felder unterbunden werden.

Prototyp

*************************************************************************
P* Procedure name: Wx_ChgNoHelp
P* Purpose: Prevents from adding automatic help texts
P* Returns:
P* Parameters: ParField => Field (Optional)
P* Not Passed or Special Value *ALL
P*  No Help Text for any field
*************************************************************************
D Wx_ChgNoHelp...
D PR OpDesc
D ParField Like(FldRef.NameSQL) Const
D Options(*NoPass: *Trim)
Source Code 280246: Prototype Procedure Wx_ChgNoHelp - Automatische Ermittlung der Bedienerhilfe unterbinden

Parameter

  • ParFieldEindeutige Kennung des Arbeitsfelds/Variable

(Optional)
Nicht übergeben oder Sonderwert *NONE  Bedienerhilfe wird für alle Felder unterbunden

Beispiele für den Aufruf

Wx_ChgNoHelp('ARTNR');
Wx_ChgNoHelp();
Source Code 281247: Aufruf Procedure Wx_ChgNoHelp - Automatische Ermittlung der Bedienerhilfe unterbinden

Bedingte Ein-/Ausgabe-Felder – Condition Group

WOPiXX stellt mehrere Funktionen zur Verfügung, mit deren Hilfe JavaScript-Code erzeugt wird, der zur Laufzeit dafür sorgt, dass Ein-/Ausgabe-Felder nur unter bestimmten Bedingungen angezeigt werden.
Die Bedingungen unter denen die Ein-/Ausgabe-Felder angezeigt werden können auch bei den Prozeduren Wx_ChgFileFld(), Wx_ChgFld() sowie allen Prozeduren durch die Arbeits-Felder/Variablen definiert werden können (z.B. Wx_ManChgFld()) über einen optionalen Parameter hinzugefügt 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 Folgenden definierten Ein-/Ausgabe-Felder werden unter der gleichen Bedingung angezeigt.
WOPiXX erlaubt verschachtelte Condition-Groups bzw. If-Anweisungen.
Die folgenden Prozeduren werden zur Steuerung zur Verfügung gestellt:

  • Wx_ChgIf() If-Anweisung = Beginn der Condition Group

(vergl. 3.18.10.1 Wx_ChgIf() – Beginn der Condition Group)

  • Wx_ChgElse()Else-Bedingung

(vergl. 3.18.10.2 Wx_ChgElse() – Else-Anweisung)

  • Wx_ChgEndIf()EndIf-Anweisung = Ende der Condition Group

(vergl. 3.18.10.3 Wx_ChgEndIf() – Ende Condition Group)
Condition Groups können verschachtelt werden. Die Verschachtelung, sowie die Anzahl der Wx_ChgIf()-Prozedur-Aufrufe und die Anzahl der Wx_ChgEndIf()-Prozedur-Aufrufe werden zur Laufzeit geprüft. Im Fehlerfall wird eine Fehlermeldung ausgegeben.
In den Bedingungen können nur Ein-/Ausgabe-Felder geprüft werden, die zuvor mit WOPiXX-Funktionen definiert wurden.
Die Bedingungen können in RPG oder CL oder Java-Script-Schreibweise angegeben werden. (vergl. 3.5 Bedingtes Anzeigen von Ein-/Ausgabe-Feldern).

Wx_ChgIf() – Beginn der Condition Group

Mit Hilfe der Prozedur Wx_ChgIf() 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_ChgIf() definiert werden, werden unter den gleichen Bedingungen angezeigt.
Wird die Prozedur Wx_ChgIf() erneut, mit einer weiteren Bedingung aufgerufen, werden alle im Anschluss definierten Felder und Variablen nur dann angezeigt, wenn beide Bedingungen erfüllt sind.

Prototype

***************************************************************************
P* Procedure name: Wx_ChgIf
P* Purpose: Begin IF-Condition - Change
P* Returns:
P* Parameters: ParCond => Condition
***************************************************************************
D Wx_ChgIf...
D PR OpDesc
D ParCond Like(FldRefCGI.Cond) Const
Source Code 282248: Prototype - Prozedur Wx_ChgIf - Festlegen von Bedingungen

Parameter:

  • ParCondBedingungen (vergl. 3.5 Bedingtes Anzeigen von Ein-/Ausgabe-Feldern)


Wx_ChgElse() – Else-Anweisung

Über die Prozedur Wx_ChgElse() kann eine ELSE-Anweisung definiert werden.
Alle Ein-/Ausgabe-Felder, die nach Ausführung der Prozedur Wx_ChgElse() über WOPiXX-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.

Prototype

***************************************************************************
P* Procedure name: Wx_ChgElse
P* Purpose: Begin Else(IF)-Condition - Change
P* Returns:
P* Parameters: ParCond => Condition
***************************************************************************
D Wx_ChgElse...
D PR OpDesc
D ParCond Like(FldRefCGI.Cond) Const
D Options(*NoPass)
Source Code 283249: Prototype - Prozedur Wx_ChgElse - Else-Bedingungen

Parameter

  • ParCondBedingungen (vergl. 3.5 Bedingtes Anzeigen von Ein-/Ausgabe-Feldern)

Optionaler Parameter
Durch Angabe von Bedingungen in der Else-Funktion wird eine ElseIf-Funktionalität erreicht.

Wx_ChgEndIf() – Ende Condition Group

Durch den Aufruf der Prozedur Wx_ChgEndIf() wird die äußerste Condition Group beendet.
Zu jedem Wx_ChgIf()-Prozedur-Aufruf, muss auch ein Wx_ChgEndIf()-Prozedur-Aufruf ausgeführt werden. Stimmt die Anzahl der Wx_ChgIf()-Prozedur-Aufrufe mit der Anzahl der Wx_ChgEndIf()-Prozedur-Aufrufe nicht überein, tritt zur Laufzeit ein Fehler auf.
Alle Ein-/Ausgabe-Felder, die mit WOPiXX-Funktionen nach der Ausführung der Prozedur Wx_ChgEndIf() definiert werden, werden ohne Berücksichtigung der Bedingungen aus der beendeten Condition Group angezeigt.

Prototype

***************************************************************************
P* Procedure name: Wx_ChgEndIf
P* Purpose: End IF-Condition - Change
P* Returns:
P* Parameters:
***************************************************************************
D Wx_ChgEndIf...
D PR OpDesc
Source Code 284250: Prototype - Prozedur Wx_ChgEndIf - Ende der If-Anweisung

Parameter

  • Für die Prozedur Wx_ChgEndIf() sind keine Parameter erforderlich


Condition Group Beispiel

Wx_ChgIf('STATUS = 01');
Wx_ChgFld('AKBESTMGE': 'Bestell-Menge');
//...weitere Ein-/Ausgabe-Felder für die gleiche Bedingung
Wx_ChgElse('STATUS = 02');
Wx_ChgFld('AKLIEFMGE': 'Liefer-Menge');
//...weitere Ein/Ausgabe-Felder für die ElseIf-Bedingung
Wx_ChgElse();
Wx_ChgFld('AKTEILMGE': 'Teillieferung');
//...weitere Ein-/Ausgabe-Felder für die Else-Bedingung
Wx_ChgEndIf();
Source Code 285251: Aufruf Prozeduren Wx_ChgIf(), Wx_ChgElse(), Wx_ChgEndIf() - Bedingte Ein-/Ausgabe-Felder

Definition von HTML-Tabellen

Innerhalb von Change Tables können Ein-/Ausgabe-Felder in Tabellen angeordnet werden. Die Definition der Tabellen bzw. der Aufruf der entsprechenden WOPiXX-Funktionen erfolgt unmittelbar vor der Definition des ersten (Ein-/Ausgabe-)Feldes innerhalb der Tabelle.
Zur Tabellen-Definition werden die folgenden Prozeduren zur Verfügung gestellt.

  • Wx_HTMLTbl Definition der Tabelle  Anzahl Zeilen/Spalten
  • Wx_HTMLTblColHdg Definition der Spalten


Wx_HTMLTbl – Definition Tabelle

Über die Funktion Wx_HTMLTbl wird die HTML Tabelle definiert, d.h. es wird angegeben wie viele Zeilen und Spalten in dieser Tabelle hinterlegt sein sollen.
Außer der Anzahl der Zeilen und Spalten sollen in Zukunft noch weitere Kriterien angegeben werden können. Die entsprechenden Parameter sind bereits als optionale Parameter vorhanden.
Mit jedem Aufruf der Prozedur Wx_HTMLTbl wird eine neue Tabelle definiert.

Prototype

***************************************************************************
P* Procedure name: Wx_HTMLTbl
P* Purpose: Define HTML Table within a Change table
P*
P* Returns:
P* Parameters: ParTableName => Table Name
P* Parameters: ParNbrCols => Number of Columns (currently 1-32 colums)
P* Parameters: ParNbrRows => Number of Rows
P* Parameters: ParMsg => Header Text
P* Parameters: ParOptions => Options
************************************************************************
D Wx_HTMLTbl...
D PR OpDesc
D ParTableName Like(FldRef.NameSQL) Const
D Options(*Trim)
D ParNbrCols 10I 0 Const
D ParNbrRows 10I 0 Const
D ParMsg Like(FldRef.MsgData) Const
D Options(*NoPass: *Trim)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
Source Code 286252: Prototyp Prozedur Wx_HTMLTbl() – Definition HTML Tabelle (Header)
Die Prozedur erfordert 3 Parameter. Über zwei optionale Parameter können in Zukunft zusätzliche Informationen übergeben werden.

  • ParTableName: Eindeutiger Tabellen-Namen

Jede Tabelle erhält innerhalb der Change Table einen eindeutigen Namen über den sie intern verwaltet wird.
Der Tabellen-Name ist frei wählbar. Groß/Kleinschreibung wird nicht berücksichtigt.

  • ParNbrCols: Anzahl der Spalten innerhalb der Tabelle

Innerhalb einer Tabelle können aktuell bis zu 32 Spalten definiert werden.
Es ist in diesem Zusammenhang zu beachten, dass pro Change Table nur maximal 100 Ein/Ausgabe-Felder definiert werden können.

  • ParNbrRows: Anzahl der Zeilen innerhalb der Tabelle


  • ParMSG Message-Id oder Text für die Tabellen-Überschrift

Optionaler-Parameter
Wird aktuell noch nicht unterstützt.

  • ParOptions: Tabellen-Optionen

Optionaler Parameter
Tabellen-Optionen können in Form von Schlüssel-Worten angegeben werden.
Wird aktuell noch nicht unterstützt

Beispiele für den Aufruf

//Tabelle1 mit 3 Spalten und 5 Zeilen
Wx_HTMLTbl('Tabelle1': 3: 5);
//Definition der Spalten
//Definition der Ein/Ausgabe-Felder innerhalb der Tabelle
//Tabelle Auswahl mit 4 Spalten und 1 Zeile
Wx_HTMLTbl('Auswahl': 4: 1);
//Definition der Spalten
//Definition der Ein/Ausgabe-Felder innerhalb der Tabelle
Source Code 287253: Aufruf Prozedur Wx_HTMLTbl – Definieren HTML Tabelle

Wx_HTMLTblColHdg() – Definition Spalten

Über die Prozedur Wx_HTMLTblColHdg() können die einzelnen Spalten in der zuvor über Prozedur Wx_HTMLTbl() definierten Tabelle näher beschrieben werden.
Aktuell wird nur die Tabellen-Überschrift unterstützt. Für die Zukunft werden noch weitere Optionen geplant, die in Form von Schlüssel-Worten übergeben werden. Die entsprechenden Parameter sind bereits vorgesehen.
Durch den mehrfachen Aufruf der Funktion Wx_HTMLTbl wird jeweils die nächste (noch nicht definierte) Spalte definiert. Um eine bestimmte Spalte zu definieren kann auch die Spalten-Nr. direkt übergeben werden.
Wird die Funktion Wx_HTMLTblColHdg() nicht nach der Funktion Wx_HTMLTbl() aufgerufen erhält die Tabelle keine Spalten-Überschriften.

Prototyp

*******************************************************************************
P* Procedure name: Wx_HTMLTblColHdg
P* Purpose: Add Column (Heading) Defintions to an HTML Table
P* within a Change table
P* Column defintions are added to the most recently defined
P* HTML table
P* Returns:
P* Parameters: ParMsg => Message Id or Message Text
P* Parameters: ParColNo => Column No
P* Passed: The column heading for specified
P* column will be updated
P* Not Passed: The next column
P* (after the last defined)
P* will be defined
P* Parameters: ParOptions => Options
********************************************************************************
D Wx_HTMLTblColHdg...
D PR OpDesc
D ParMsg Like(FldRef.MsgData) Const
D Options(*Trim)
D ParColNo 10I 0 Options(*NoPass) Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass: *Trim)
Source Code 288254: Prototype - Prozedur Wx_HTMLTblColHdg - Definieren HTML Spalten

Parameter

Die Funktion erfordert einen Parameter.

  • ParMsgMessage-Id oder Text der als Spaltenüberschrift angezeigt werden soll


  • ParColNoSpalten-Nr.

Optional
Wird die Spalten-Nr. nicht übergeben, wird die nächste (nach der zuletzt definierten) Spalte verwendet.
War die Spalte bereits definiert, wird zuvor gesetzte Überschrift ersetzt.

  • ParOptions Optionen

Optional
In Zukunft können weitere Optionen in Form von Schlüssel-Worten angegeben werden. (aktuell noch nicht unterstützt).

Beispiele für den Aufruf

//Tabelle1 mit 3 Spalten und 5 Zeilen
Wx_HTMLTbl('Tabelle1': 3: 5); //Tabelle
Wx_HTMLTblColHdg('Spalten-Überschrift1'); //Spalte 1
Wx_HTMLTblColHdg('2.Spalte'); //Spalte 2
Wx_HTMLTblColHdg('MSG0123'); //Spalte 3 – mit Message Id
//Definition der Ein/Ausgabe-Felder innerhalb der Tabelle
//Tabelle Auswahl mit 4 Spalten und 1 Zeile
Wx_HTMLTbl('Auswahl': 4: 1);
Wx_HTMLTblColHdg('Spalten-Überschrift3': 3); //Spalte 3
Wx_HTMLTblColHdg('Zweite Spalte': 2); //Spalte 2
Wx_HTMLTblColHdg('Letzte Spalte'); //Spalte 4
//Definition der Ein/Ausgabe-Felder innerhalb der Tabelle
//Tabelle AdrTab mit 3 Spalten und 3 Zeilen
//Vorgabe von unterschiedlichen Spalten-Breiten
Wx_HTMLTbl('AdrTab' :3 :3);
Wx_HTMLTblColHdg('Strasse': 1: 'width="450"');
Wx_HTMLTblColHdg('PLZ': 2: 'width="100"');
Wx_HTMLTblColHdg('Ort': 3: 'width="450"');
Source Code 289255: Aufruf Prozedur Wx_HTMLTblColHdg() - Spalten Definition

Abbildung 30: Tabelle mit 3 Spalten (3 Zeilen) und unterschiedlicher Spalten-Breite

Wx_GetChgInput() – Empfangen Eingabe-Daten

Über die Prozedur Wx_GetChgInput() werden die die eingegebenen Daten empfangen.
Der Aufruf muss nach der Definition der Ein-/Ausgabe-Felder über WOPiXX-Prozeduren und vor der individuellen Eingabe-Prüfung bzw. vor dem Fortscheibend der erfassten Daten erfolgen.
Für den WOPiXX-Programmierer kann die Prozedur Wx_GetChgInput() mit der Ausführung des OpCodes EXFMT in Green-Screen-Dialog-Programmen verglichen werden. Tatsächlich wird in der Prozedur das HTML-Dokument an den Browser geschickt und das Programm beendet. Beim nächsten Aufruf über den Browser werden die erfassten Daten empfangen und können wie nach einem EXFMT weiterverarbeitet werden.

Prototype

***************************************************************************
P* Procedure name: Wx_GetChgInput
P* Purpose: Get Input Values
P* --> Input values get retrieved for either mode SAVE or APPLY
P* Returns:
***************************************************************************
D Wx_GetChgInput...
D PR OPDesc
Source Code 290256: Prototype - Prozedur Wx_GetChgInput() - Empfangen Eingabe-Daten

Parameter

    • Die Prozedur erfordert weder einen Rückgabewert noch Parameter. Die Ein-/Ausgabe-Daten werden direkt in die entsprechenden Datenstruktur-Unterfelder ausgegeben.

Beispiel für den Aufruf

//Ein-/Ausgabe-Felder definieren
Wx_ChgFld('Land':%Addr(GblDS.Land): 'Land':
'Required CTL(Country)');
Wx_ChgFld('PLZ': %Addr(GblDS.PLZ): 'FLD0012': 'NoNewLin');
Wx_ChgFld('Ort': %Addr(GblDS.Ort): '': 'Required SelectList');
//Eingabe-Daten empfangen
Wx_GetChgInput();
//Individuelle Eingabe-Prüfung
//Fortschreiben der erfassten Daten
Source Code 291257: Aufruf - Prozedur Wx_GetChgInput() - Empfangen Eingabe-Daten

Error-Handling

Viele Eingabe-Prüfungen können bereits durch die Angabe von entsprechenden Optionen (z.B. Range für einen Bereich oder vordefinierte Comboboxen) direkt in HTML bzw. über JavaScript-Funktionen erfolgen. Ähnlich den Schlüssel-Worten, die im DDS gesetzt werden können.
Der Programmierer kann zusätzliche individuelle Prüfungen im Programm hinterlegen.
Die (individuelle) Eingabe-Prüfung darf erst nach Aufruf der Prozedur Wx_GetChgInput() (Empfangen der Eingabe-Werte) erfolgen. Die erfassten Werte werden durch die Prozedur Wx_GetChgInput() in die Datenstruktur-Unterfelder übertragen, die bei der Definition der Ein-/Ausgabe-Felder angegeben wurden.
Für den Fehler-Fall bzw. zur Ausgabe und Prüfung von (individuellen) Fehlermeldungen werden die folgenden WOPiXX-Funktionen zur Verfügung gestellt.

  • Wx_FldErr() Fehlermeldung für ein einzelnes Ein-/Ausgabe-Feld

(vergl. 3.18.13.1)

  • Wx_MultFldErr() Fehlermeldung für eine Gruppe von Ein-/Ausgabe-Feldern

(vergl. 3.18.13.2)

  • Wx_isChgFldErr()Prüfung, ob mindestens eine individuelle Fehlermeldung

ausgegeben wurde
(vergl. 3.18.13.3)
Soll die Fehlermeldung unmittelbar nach der Prüfung ausgegeben werden, ist der Aufruf der Prozedur Wx_WrtChgTbl() – Change Table erforderlich.
Anstatt die Fehlermeldungen einzeln auszugeben können auch zunächst alle Prüfungen durchgeführt, die Fehler über Wx_FldErr() oder Wx_MultFldErr() ausgegeben werden.
Ob ein Fehler über die Funktionen Wx_FldErr() oder Wx_MultFldErr() ausgegeben wurde, kann mit der Funktion Wx_isChgFldErr() geprüft werden.
Sofern kein Fehler festgestellt wurde, kann der Programmierer die Daten fortschreiben.
Die Aufbereitung und Ausgabe des HTML-Dokuments erfolgt über die Prozedur Wx_WrtChgTbl(). In der Prozedur Wx_WrtChgTbl() wird ebenfalls geprüft, ob ein Fehler ausgegeben wurde. Im Fehler-Fall wird das aktuelle Dokument erneut (inklusive der Fehlermeldung) ausgegeben. Wurde kein Fehler festgestellt, wird auf das vorgelagerte Programm (z.B. Worktable) zurückverzweigt.
Die Fehlermeldungen werden immer unmittelbar nach dem fehlerhaften Ein-/Ausgabe-Feld in rot angezeigt, unabhängig davon, ob die Fehlermeldung durch eine Java-Script-Prüfung oder den Aufruf WOPiXX-Prozeduren Wx_FldErr() oder Wx_MultFldErr() erzeugt wurde.

Abbildung 31: Beispiel Fehlerhafte Eingaben und Fehlermeldungen

Wx_FldErr() – Individuelle Fehlermeldung für Ein-/Ausgabe-Feld

Wurde bei der individuellen Eingabe-Prüfung für ein bestimmtes Ein-/Ausgabe-Feld ein Fehler festgestellt, so kann mit Hilfe der Prozedur Wx_FldErr() eine individuelle Fehlermeldung für dieses Ein-/Ausgabe-Feld ausgegeben werden.
An die Prozedur müssen sowohl die Fehlermeldung (oder eine entsprechende Message-Id) sowie das Feld (bzw. die eindeutige Kennung, die bei der Definition angegeben wurde) als Parameter übergeben werden.
Soll die Fehlermeldung unmittelbar nach der Prüfung ausgegeben werden, ist der Aufruf der Prozedur Wx_WrtChgTbl() – Change Table erforderlich.

Prototype

***************************************************************************
P* Procedure name: Wx_FldErr
P* Purpose: Set Field Error
P* Returns:
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParField => Field
P* Parameters: ParFile => File
P* Parameters: ParLib => Bibliothek
***************************************************************************
D Wx_FldErr...
D PR OPDesc
D ParMsg Like(FldRef.MsgData) Const
D ParField Like(FldRef.NameSQL) Const
D ParFile Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParLib Like(FldRef.Lib) Const
D Options(*NoPass)
Source Code 292258: Prototype - Prozedur Wx_FldErr() - Fehlermeldung für einzelnes Ein-/Ausgabe-Feld

Parameter

  • ParMsgFehlermeldung

Die Fehlermeldung kann entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParFieldFeld/Spalten-Name des Ein-/Ausgabe-Feldes oder eindeutige Kennung bei Arbeits-Feldern.

Das Ein-/Ausgabe-Feld (Feld-Name oder eindeutige Kennung) muss über eine WOPiXX-Prozedur definiert worden sein.

Beispiele für den Aufruf

If GblDs.Land = 'D' and %Len(%Trim(GblDS.PLZ)) <> 5; //Prüfen PLZ Deutschland
Wx_FldErr('Ungültige Postleitzahl': 'PLZ');
EndIf;
Monitor;
If Wx_isModeAdd();
GblDS.KBGUELTAB = %Date(GblDS.KBGUELTNum); //Prüfen numerisches Datum
EndIf;
On-Error;
Wx_FldErr(PGMSDS.MsgTxt: 'KBGUELTAB');
EndMon;
If %Len(%Trim(GblDS.EMeMail)) = *Zeros//Ohne eMail-Adresse
and ( %Len(%Trim(GblDS.EMSend)) <> *Zeros //Mit Senden an
or %Len(%Trim(GblDS.EMSign)) <> *Zeros); //Mit Signatur
Wx_FldErr('KXE0031': 'ADDEMAIL');
ElseIf %Len(%Trim(GblDS.EMeMail)) <> *Zeros //Mit Mail-Adresse
and %Len(%Trim(GblDS.EMSign)) = *Zeros; //Ohne Signatur
Wx_FldErr('KXE0030': 'ADDSIGN');
EndIf;
If GblDS.KGSTRTIM < %Time(073000: *ISO) //Startzeit vor 7:30
and GblDS.KGSTRTIM <> *LoVal; //Startzeit <> 00:00:00
Wx_FldErr('KXE0005': 'STRTIM');
EndIf;
If GblDS.KGENDTIM <= GblDS.KGSTRTIM; //Endezeit vor Startzeit
Wx_FldErr('KXE0007': 'STRTIM');
Wx_FldErr('KXE0007': 'ENDTIM');
EndIf;
Source Code 293259: Aufruf Prozedur Wx_FldErr() - Fehlermeldung für einzelnes Ein-/Ausgabe-Feld

Abbildung 32 : Individuelle Eingabe-Prüfung - Ungültige Postleitzahl

Wx_MultFldErr() – Individuelle Fehlermeldung für mehrere Felder

Sofern bei einer individuellen Eingabe-Prüfung die gleiche Fehlermeldung für mehrere Ein-/Ausgabe-Felder angezeigt werden soll, kann entweder die Prozedur Wx_FldErr() mehrfach aufgerufen oder die Prozedur Wx_MultFldErr().
Bei der Funktion Wx_MultFldErr() können bis zu 10 Ein-/Ausgabe-Felder angegeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_MultFldErr
P* Purpose: Set Error for Multiple Fields
P* Returns:
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParField01 => Field 01
P* Parameters: ParField02 => Field 02
P* Parameters: ParField03 => Field 03
P* Parameters: ParField04 => Field 04
P* Parameters: ParField05 => Field 05
P* Parameters: ParField06 => Field 06
P* Parameters: ParField07 => Field 07
P* Parameters: ParField08 => Field 08
P* Parameters: ParField09 => Field 09
P* Parameters: ParField10 => Field 10
P* Parameters: ParFile => File
P* Parameters: ParLib => Bibliothek
***************************************************************************
D Wx_MultFldErr...
D PR OPDesc
D ParMsg Like(FldRef.MsgData) Const
D ParField01 Like(FldRef.NameSQL) Const
D ParField02 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField03 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField04 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField05 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField06 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField07 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField08 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField09 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParField10 Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParFile Like(FldRef.NameSQL) Const
D Options(*NoPass)
D ParLib Like(FldRef.Lib) Const
D Options(*NoPass)
Source Code 294260: Prototype - Prozedur Wx_MultFldErr() - Fehlermeldung für mehrere Ein-/Ausgabe-Felder

Parameter

  • ParMsgFehlermeldung

Die Fehlermeldung kann entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParField01Feld/Spalten-Name des Ein-/Ausgabe-Feldes oder eindeutige Kennung bei Arbeits-Feldern.

Das Ein-/Ausgabe-Feld (Feld-Name oder eindeutige Kennung) muss über eine WOPiXX-Prozedur definiert worden sein.

  • ParField02 – ParField10 Feld/Spalten-Name der weiteren Ein-/Ausgabe-Felder oder eindeutige Kennungen bei Arbeits-Feldern.

Das Ein-/Ausgabe-Feld (Feld-Name oder eindeutige Kennung) muss über eine WOPiXX-Prozedur definiert worden sein.
Optionaler Parameter

Beispiele für den Aufruf

If GblDS.EKPreis > GblDS.VKPreis;
Wx_MultFldErr('Verkaufspreis muss über dem Einkaufspreis liegen':
'EKPreis': 'VKPreis');
EndIf;
If ( GblDS.Hoehe > *Zeros
or GblDS.Breite > *Zeros
or GblDS.Tiefe > *Zeros)
and ( GblDS.Hoehe = *Zeros
or GblDS.Breite = *Zeros
or GblDS.Tiefe = *Zeros);
Wx_MultFldErr('Höhe, Breite und Tiefe müssen angegeben werden':
'Hoehe': 'Breite': 'Tiefe');
EndIf;
If GblDS.KGSTRDAT > GblDS.KGENDDAT;
Wx_MultFldErr('KXE0004': 'STRDAT': 'ENDDAT');
ElseIf GblDS.KGSTRDAT = GblDS.KGENDDAT
and GblDS.KGSTRTIM > GblDS.KGENDTIM;
Wx_MultFldErr('KXE0004': 'STRTIM': 'ENDTIM');
EndIf;
Source Code 295261: Aufruf Prozedur Wx_MultFldErr() - Fehlermeldung für mehrere Ein-/Ausgabe-Felder

Abbildung 33: Beispiel - gleiche Fehlermeldung für mehrere Felder

Wx_isChgFldErr() – Prüfung mindestens eine individuelle Fehlermeldung

Über die Funktion Wx_isChgFldErr() kann geprüft werden, ob mindestens ein Fehler mit Hilfe der Funktionen Wx_FldErr() oder Wx_MultFldErr() registriert wurde.
Sofern kein Fehler aufgetreten ist, kann der Datensatz ordnungsgemäß fortgeschrieben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_isChgFldErr
P* Purpose: Check if Field Errors occurred
P* Returns: True/*On = Field Errors Occurred
P* False/*Off = No Field Error
***************************************************************************
D Wx_isChgFldErr...
D PR N OpDesc
Source Code 296262: Prototype - Prozedur Wx_isChgFldErr() - Prüfung individueller Fehler aufgetreten

Parameter

  • Rückgabe-Wert*ON = mindestens ein individueller Fehler aufgetreten

*OFF = kein Fehler aufgetreten

  • Keine Parameter erforderlich

Beispiel für den Aufruf

If Not Wx_isChgFldErr();
If GblDS.Id = *Zeros;
Write MyFileF GblDS;
Else;
Update MyFileF GblDS;
EndIf;
EndIf;
Source Code 297263: Aufruf Prozedur Wx_isChgFldErr() - Prüfen individueller Fehler aufgetreten

Prozeduren zum Beenden von Change Tables

Change Tables können auf zwei Arten beendet werden:

  • Wx_WrtChgTbl() Beenden Change Programm

Je nachdem, ob ein individueller Fehler registriert wurde oder nicht, wird das aktuelle HTML-Dokument erneut ausgegeben oder auf das vorgelagerte Programm zurückgesprungen.

  • Wx_RtnPrv()Rücksprung auf vorgelagertes Programm

Sofern in Change-Programmen für die Aktion/Modus keine Dialog-Ausgabe erforderlich ist (z.B. Löschen von Datensätzen)

Wx_RtnPrv() – Rücksprung auf vorgelagertes Programm

Ist in einem Change Programm keine Dialog-Ausgabe erforderlich (z.B. zum Löschen von Datensätzen oder zur Aktivierung eines Buchungsprogramms), muss nach Ausführung der entsprechenden Aktion das Change Programm durch Aufruf der Funktion Wx_RtnPrv() auf das vorgelagerte Programm zurückgegangen werden.

Prototype

***************************************************************************
P* Procedure name: Wx_RtnPrv
P* Purpose: Return to previous display HTML
P* Returns:
P* Parameters: ParMsg => Message Text or Message-Id
P* --> If an error occurs
***************************************************************************
D Wx_RtnPrv...
D PR OPDesc
D ParMsg Like(FldRef.MsgData) Const
D Options(*NoPass)
Source Code 298264: Prototype - Prozedur Wx_RtnPrv() - Auf vorgelagertes Programm zurückspringen

Parameter

  • ParMsgFehlermeldung, die im vorgelagerten Programm ausgegeben werden soll.

Optionaler Parameter
Sofern keine Fehlermeldung ausgegeben werden soll, wird der Parameter entweder nicht, leer oder mit *Blanks gefüllt übergeben.
Die Fehlermeldung kann entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParSvrErrorSignoff

Optionaler Parameter
Sofern der Parameter mit *ON übergeben wird, wird die Sitzung beendet. (Signoff)

Beispiele für den Aufruf

If Wx_isModeDelete(); //Löschen
ArrKeyVal = Wx_GetDBKeyArrInt(); //Ermitteln Schlüssel für Löschen
For Index = 1 To %Elem(ArrKeyVal); //Verarb. aller Schlüssel-Werte
If ArrKeyVal(Index) > *Zeros;
Delete(E) ArrKeyVal(Index) MyFileF; //Datensatz löschen
If %Error; //Fehler aufgetreten
ErrMsg = 'Fehler beim Löschen'; //Fehlermeldung sichern
EndIf;
EndIf;
EndFor;
Wx_RtnPrv(ErrMsg); //Rücksprung
EndIf;
Source Code 299265: Prozedur Wx_RtnPrv() - Rücksprung auf vorgelagertes Programm

Wx_WrtChgTbl() – Beenden Change Programm

Nachdem die Eingabe-Prüfungen erfolgt sind, die Datensätze, sofern keine Fehler aufgetreten sind, fortgeschrieben wurden, muss das Change Programm beendet werden.
Die Funktion Wx_WrtChgTbl() gibt im Fehler-Fall die Change Table erneut aus oder verzweigt auf das vorgelagerte Programm, sofern kein Fehler aufgetreten ist.

Prototype

***************************************************************************
P* Procedure name: Wx_WrtChgTbl
P* Purpose: Write Change Table
P* Returns:
P* Parameters: ParMsg => Message Text or Message-Id
P* --> If an error occurs
P* Parameters: ParParm01 => Parameter 01 for the next Call
P* Parameters: ParParm02 => Parameter 02 for the next Call
P* Parameters: ParParm03 => Parameter 03 for the next Call
P* Parameters: ParParm04 => Parameter 04 for the next Call
P* Parameters: ParParm05 => Parameter 05 for the next Call
***************************************************************************
D Wx_WrtChgTbl...
D PR OPDesc
D ParMsg Like(FldRef.MsgData) Const
D Options(*NoPass)
D ParParm01 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParParm02 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParParm03 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParParm04 Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParParm05 Like(FldRef.TextVar) Const
D Options(*NoPass)
Source Code 300266: Prototype Prozedur Wx_WrtChgTbl() - Beenden Change Program

Parameter

  • ParMsgGlobale Fehlermeldung, die im aktuellen HTML-Dokument ausgegeben werden soll.

Optionaler Parameter
Sofern keine Fehlermeldung ausgegeben werden soll, wird der Parameter entweder nicht, leer oder mit *Blanks gefüllt übergeben.
Die Fehlermeldung kann entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParParm1 – ParParm5 Parameter-Wert

Optionale Parameter
Es können bis zu 5 alphanumerische Parameter-Werte übergeben werden. Diese Parameter-Werte können in dem Folge-Programm verwendet werden.
Anstatt die gewünschten Parameter-Werte über die Funktion Wx_WrtChgTbl() zu setzen, ist es auch möglich die Werte über durch Aufruf einer der Funktionen Wx_SetParmXXXX zu setzen (vergl. 3.13 Ermitteln und Setzen von Parameter-Werten).

Beispiele für den Aufruf

Monitor;
Clear ErrMsg; //Error Message initialisieren
If KeyVal > *Zeros; //Mit Schlüssel-Wert
GblDSSav = GblDS; //geänderten Datensatz sichern
Chain KeyVal MyFileF1 GblDS; //Aktuellen Datensatz in DS einlesen
GblDS = GblDSSav; //gesicherten Datensatz umladen
EndIf;
If KeyVal = *Zeros or Not %Found(MyFile); //Ohne Schlüssel / nicht gefunden
Write MyFileF GblDS; //Schreiben neuen Datensatz
Else;
Update MyFileF GblDS; //eingelesenen Datensatz aktualisieren
EndIf;
On-Error; //Fehler beim Update oder Write
ErrMsg = 'Fehler beim Schreiben des Datensatzes'; //Fehlermeldung angeben
EndMon;
Wx_WrtChgTbl(ErrMsg); //HTML-Dokument erneut anzeigen oder
//Rücksprung auf vorher. CGI-Programm
Return;
Source Code 301267: Aufruf Prozedur Wx_WrtChgTbl() - Beenden Change Programm

Header-Informationen

Mit Hilfe der Header-Funktionen können sowohl bei Work- als auch bei Change Tables im Kopf-Bereich zusätzliche Informationen / Texte ausgegeben werden.
Die folgenden Funktionen stehen zur Verfügung:

  • Wx_HdrTextBeliebige Texte im Header anzeigen

(Vergl. 3.19.1 Wx_HdrText() – Beliebigen Text in Header ausgeben)

  • Wx_HdrFile()Definition der Dateien, aus denen die Header-Felder stammen

(Vergl. 3.19.2 Wx_HdrFile() – Datei für Header-Informationen)

  • Wx_HdrFld()Definition der Header-Felder

Vergl. 3.19.3 Wx_HdrFld() – Feld für Header-Informationen)

  • Wx_HdrFileFld() Definition der Datei sowie des ersten Header-Felds

(Vergl. 3.19.4 Wx_HdrFileFld() – Datei und erstes Feld für Header)

Abbildung 34: Beispiel Header-Informationen in Work- und Change-Programmen

Wx_HdrText() – Beliebigen Text in Header ausgeben

Mit Hilfe der Prozedur Wx_HdrText() können sowohl in Change als auch Work-Programmen Informationen in dem Header-Bereich angezeigt werden.

Prototype


***************************************************************************
P* Procedure name: Wx_HdrText
P* Purpose: Header Text Information
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParValue => Message-Id/Value to be displayed as Character
P* Parameters: ParOptions => Options
***************************************************************************
D Wx_HdrText...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D ParValue Like(FldRefCGI.DftValue) Const
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
Source Code 302268: Prototype Wx_HdrText() - Beliebigen Text in Header ausgeben

Parameter

  • ParFieldEindeutige Kennung des Header-Feldes

Es ist nicht erforderlich, dass ParField in einer Datei/Tabelle/View hinterlegt ist. Die Kennung muss jedoch innerhalb des Headers eindeutig sein.

  • ParDescrBeschreibung, die links neben dem Header-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParValueHeader-Informationen

Beliebiger alphanumerischer Text, der im Header angezeigt werden wird.
Der Text kann entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParOptions Aufbereitungsoptionen

Optionaler Parameter
(Vergl. 3.3.8 Aufbereitungsoptionen für Header)

Beispiele für den Aufruf

Wx_HdrText('EVENT': 'KXD0022': //Kongress
%Trim(GblDS.KGKNGR) + ' ' + %Trim(EVKGBEZ));
Wx_HdrText('STRDAT': 'Von/Bis':
%Char(GblDS.KGSTRDAT: *EUR) + ' - ' + //Zeitraum
%Char(GblDS.KGENDDAT: *EUR));
If %Len(%Trim(GblDS.KGHOTEL)) <> *Zeros; //Hotel
Wx_HdrText'KGHOTEL': 'KXD0041':
%Trim(GblDS.KGHOTEL + ' ' + GblDS.KGHOTELORT +
' ' + GblDS.KGHOTELSTR + ' ' + GblDS.KGHOTELTEL));
EndIf;
Source Code 303269: Aufruf Prozedur Wx_HdrText - Beliebigen Text in Header ausgeben

Abbildung 35 : Ergebnis aus dem vorherigen Source Code

Wx_HdrFile() – Datei für Header-Informationen

Sofern in den Header-Informationen im Programm verwendete Feld-Werte angezeigt werden sollen, müssen zunächst die Dateien/Tabellen/Views für die Header-Informationen definiert werden.
Die für die Header-Informationen definierten Dateien/Tabellen/Views werden auch zur Definition der Filter- und Spalten in den Work-Programmen bzw. zur Definition der Ein-/Ausgabe-Felder in den Change Tables verwendet.
Werden für Work-Programme mehrere Dateien/Tabellen/Views hinterlegt, so muss die Verknüpfung zwischen den einzelnen Dateien/Tabellen/Views angegeben werden. In Change-Programmen ist die Angabe der Verknüpfungen nicht erforderlich.
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.

Prototype

***************************************************************************
P* Procedure name: Wx_HdrFile
P* Purpose: Define Files used for Header
P* --> Up to 10 Files can be specified
P* --> If more than 1 File is specified: Join Conditions are
P* required
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_HdrFile...
D 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)
Source Code 304270: Prototype Prozedur Wx_HdrFile – Dateien für Header-Informationen definieren

Parameter

  • ParFile1Physische Datei/Tabelle/View

Kann als kurzer System-Name (Max.10 Zeichen) oder langer SQL Name (Max. 128 Zeichen) angegeben werden.

  • ParFile2Physische Datei/Tabelle/View

Optionaler Parameter
Kurzer System- oder langer SQL Name

  • ParJoin2Verknüpfung zwischen Datei/Tabelle/View 1 und 2

Optionaler Parameter
Muss in einem Work-Programm (bei List-Ausgabe) 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'
In Change-Programmen ist die Angabe der Verknüpfung nicht erforderlich.

    • Die Parameter ParFile3 – ParFile10 sind optional und werden analog ParFile2 verwendet.
    • Die Parameter ParJoin3 – ParJoin10 sind optional werden analog ParJoin2 verwendet.

Beispiel für den Aufruf

Wx_HdrFile('AuftrKopfX');
Wx_HdrFile('AuftrKopfX': 'AuftrPosX':
'Join AuftrPosX on AuftrKopfX.BestNr = AuftrPosX.BestNr':
'KundSt':
'Left Outer Join KundSt on KundeNr = KndNr');
Source Code 305271: Beispiel Aufruf Prozedur Wx_HdrFld() – Dateien für Header-Informationen definieren

Wx_HdrFld() – Feld für Header-Informationen

Ausgabe-Felder mit Header-Informationen, die in den zuvor definierten Tabellen hinterlegt sind, können mit der Prozedur Wx_HdrFld() ausgegeben werden.
Zusätzlich zu dem Feld-Inhalt, kann ein zusätzlicher String (z.B. Artikel-Bezeichnung zu Artikel-Nr.) angegeben werden. Beide Texte werden miteinander verknüpft, durch ein Blank getrennt ausgegeben.
Werden Header-Felder in Worktables definiert, kann über Option AddFlt dafür gesorgt werden, dass diese Header-Informationen in der Where-Anweisung des automatisch generierten SQL Select-Statement berücksichtigt werden.
Wird das Header-Feld als Filter berücksichtigt, kann zusätzlich der Vergleichsoperator für die Where-Bedingung angegeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_HdrFld
P* Purpose: Define Fields used for Header
P* Returns:
P* Parameters: ParField => Field
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParValue => Value to Display as Character Value
P* Parameters: ParDescr => Additional Descriptions as Character Value
P* Parameters: ParOptions => Options
P* Parameters: ParCompare => Comparison Operator (Optional) --> Default: =
P* (=, <>, >=, <=, <, >, Like, Not Like,
P* Not LikeLeft, LikeRight, Not LikeRight)
***************************************************************************
D Wx_HdrFld...
D PR OPDesc
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D ParValue Like(FldRefCGI.DftValue) Const
D ParDescr Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCompare Like(FldRef.Text15V) Const
D Options(*NoPass)
Source Code 306272: Prototype - Prozedur Wx_HdrFld – Definieren Felder mit Header-Informationen

Parameter

  • ParFieldFeld/Spalten-Name des Ein-/Ausgabe-Feldes

Das Ein-/Ausgabe-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.

  • ParDescrBeschreibung, die links neben dem Filter-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParValueAlphanumerischer Feldwert

Sofern es sich um das Feld, das die Header-Informationen enthält nicht um ein alphanumerisches Feld handelt, muss der Feld-Inhalt mit Hilfe der Built-in-Funktion %Char() konvertiert werden.

  • ParAddInfozusätzliche alphanumerische Informationen

Optionaler Parameter
Neben dem Feld-Wert können weitere alphanumerische Informationen angegeben werden (z.B. ParValue=Artikel-Nr. und ParAddInfo=Artikel-Bezeichnung)
Der Feldwert und die zusätzlichen Informationen (sofern angegeben) werden aufeinanderfolgend in der gleichen Zeile nur durch ein Blank getrennt ausgegeben.

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
(vergl. 3.3.8 Aufbereitungsoptionen für Header)
Sofern in Work-Programmen bei dem entsprechenden Header-Field die Option AddFlt angegeben wurde, wird der Header-Wert als Filter-Information in die Where-Bedingung des automatisch erstellten Select-Statement integriert.

  • ParCompare Vergleichsoperator

Optionaler Parameter wird nur bei Work-Programmen berücksichtigt, wenn Option AddFlt angegeben wurde.

Beispiel für den Aufruf

Wx_HdrFileFld('AuftrKVX01': 'Firma': 'FLD0007': DSCsrC01.Firma: '': //Firma
'AddFlt');
Wx_HdrFld('BestNr': 'FLD0025': DSCsrC01.BestNr: '': 'AddFlt'); //Bestell-Nr.
Wx_HdrFld('KundeNr': 'FLD0001': DSCsrC01.KundeNr: DSCsrC01.NameOrt); //Kunde
Wx_HdrFld('LiefTerm':'FLD0030': DSCsrC01.LiefTerm); //Liefer-Termin
Wx_HdrFld('LiefBed': 'FLD0028': //Liefer-Bedingungen
DSCsrC01.LiefBed: DSCsrC01.LiefBedT);
Wx_HdrFld('AuftrArt':'FLD0027': //Auftrags-Art
DSCsrC01.AuftrArt: DSCsrC01.AuftrArtT);
Wx_HdrFld('KopfStatus': 'FLD0026': //Kopf-Status
DSCsrC01.KopfStatus: DSCsrC01.KopfStsT);
Source Code 307273 :Aufruf Prozedur Wx_HdrFld() – Felder mit Header-Informationen definieren

Abbildung 36: Ergebnis aus Source Code 231

Wx_HdrFileFld() – Datei und erstes Feld für Header

Sofern nur auf eine einzige physische Datei/Tabelle/View zugegriffen wird, kann diese Datei/Tabelle/View über die Funktion Wx_HdrFileFld() direkt zusammen mit dem ersten Header-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_HdrFld() übergeben werden können.

Prototype

***************************************************************************
P* Procedure name: Wx_HdrFileFld
P* Purpose: Define Fields used for Header
P* Returns:
P* Parameters: ParFile => File
P* Parameters: ParField => Field
P* Parameters: ParValue => Value to Display as Unicode Value
P* Parameters: ParDescr => Additional Descriptions as Unicode Value
P* Parameters: ParMsg => Message-Id or Text
P* Parameters: ParOptions => Options
P* Parameters: ParCompare => Comparison Operator (Optional) --> Default: =
P* (=, <>, >=, <=, <, >, Like, Not Like,
P* Not LikeLeft, LikeRight, Not LikeRight)
***************************************************************************
D Wx_HdrFileFld...
D PR OPDesc
D ParFile Like(FldRef.NameSQL) Const
D ParField Like(FldRef.NameSQL) Const
D ParMsg Like(FldRef.MsgData) Const
D ParValue Like(FldRefCGI.DftValue) Const
D ParDescr Like(FldRef.TextVar) Const
D Options(*NoPass)
D ParOptions Like(FldRefCGI.Options) Const
D Options(*NoPass)
D ParCompare Like(FldRef.Text15V) Const
D Options(*NoPass)
Source Code 308274: Prototype - Prozedur Wx_HdrFileFld() - Definiere Header-Datei und 1.Feld

Parameter

  • ParFilePhysische 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_HdrFile()

  • ParFieldFeld/Spalten-Name des Ein-/Ausgabe-Feldes

Das Ein-/Ausgabe-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.

  • ParDescrBeschreibung, die links neben dem Filter-Feld angezeigt wird

Sofern keine Beschreibung angezeigt werden soll, wird der Parameter entweder leer oder mit *Blanks gefüllt übergeben.
Soll eine Beschreibung angezeigt werden, kann diese entweder direkt oder als Message-Id angegeben werden.
Bei Verwendung einer Message-Id muss die zugehörige Message-File in Directweb für die Anwendung hinterlegt sein.

  • ParValueAlphanumerischer Feldwert

Sofern es sich um das Feld, das die Header-Informationen enthält nicht um ein alphanumerisches Feld handelt, muss der Feld-Inhalt mit Hilfe der Built-in-Funktion %Char() konvertiert werden.

  • ParAddInfozusätzliche alphanumerische Informationen

Optionaler Parameter
Neben dem Feld-Wert können weitere alphanumerische Informationen angegeben werden (z.B. ParValue=Artikel-Nr. und ParAddInfo=Artikel-Bezeichnung)
Der Feldwert und die zusätzlichen Informationen (sofern angegeben) werden aufeinanderfolgend in der gleichen Zeile nur durch ein Blank getrennt ausgegeben.

  • ParOptionsAufbereitungsoptionen

Optionaler Parameter
(vergl. 3.3.8 Aufbereitungsoptionen für Header)
Sofern in Work-Programmen bei dem entsprechenden Header-Field die Option AddFlt angegeben wurde, wird der Header-Wert als Filter-Information in die Where-Bedingung des automatisch erstellten Select-Statement integriert.

  • ParCompareVergleichsoperator

Optionaler Parameter wird nur bei Work-Programmen berücksichtigt, wenn Option AddFlt angegeben wurde.

Beispiele für den Aufruf

Wx_HdrFileFld('AuftrKVX01': 'Firma': 'FLD0007':
DSCsrC01.Firma: '': 'AddFlt');
Wx_HdrFileFld('WXUMSKNDJS': 'Jahr': 'FLD0013':
GblJahr: '': 'AddFlt');
Source Code 309275: Aufruf Prozedur Wx_HdrFileFld() - Definieren Header-File und 1. Feld

Sonstige Funktionen

In WOPiXX sind auch einige allgemein gültige und einsetzbare Prozeduren/Funktionen enthalten.

Wx_SplitStringArr() – String in Feldgruppe splitten

Über die Funktion Wx_SplitStringArr kann ein Textstring, in dem die einzelnen Werte durch ein beliebiges Trennzeichen getrennt sind in eine Feldgruppe ausgegeben werden.
Aktuell kann ein Text in bis zu 256 Elemente mit einer Länge von maximal 256 Zeichen aufgeteilt werden.
Längere Element-Texte werden ohne Warnung abgeschnitten.
Enthält der String mehr als 256 Elemente wird eine entsprechende Escape Message ausgegeben, d.h. die Prozedur bricht ab. Der Fehler kann über eine Monitor-Group abgefangen werden.

Prototype

***************************************************************************
// Procedure name: WX_SplitStringArr
// Purpose: Split String into Array Elements depending on the
// passed separator
// Texts longer than the Element length will be truncated
// without any warning
// --> An escape message is sent if more elements are available
// Returns: Array with the split texts
// Parameter: ParString => String
// Parameter: ParSep => Separator
// Parameter: ParEmpty => Empty Fields = Return an empty Element
// *ON = Empty Element
*--------------------------------------------------------------------------
* Attention: Maximum 256 Elements with 256 Characters
***************************************************************************
D Wx_SplitStringArr...
D PR Like(FldRef.TextVar) OpDesc
D Dim(RefElemText)
D ParString Like(FldRefLA.VarLen) Const
D ParSep Like(FldRef.Sep) Const
D POutNbrElem 10U 0 Options(*NoPass)
D ParEmpty N Options(*NoPass) Const
Source Code 310276: Prototype - Funktion Wx_SplitStringArr - Text in Feldgruppe aufsplitten

Parameter

  • Rückgabe-Wert Feldgruppe mit dem aufgesplitteten Text

Bis zu 256 Elemente mit einer Länge von maximal 256 Zeichen

  • ParStringText-String, der aufgesplittet werden soll


  • ParSepTrennzeichen

Abhängig von dem angegeben Trennzeichen wird der String aufgesplittet.
Jedes beliebige Zeichen kann angegeben werden.

  • POutNbrElements Ausgabe-Parameter Anzahl Elemente

Optionaler Parameter
Muss als Unsigned Integer-Variable (10U 0) definiert werden

  • ParEmptyAusgabe von leeren Elementen

Optionaler Parameter
Sofern mehrere Trennzeichen unmittelbar aufeinander folgen, kann über diesen Parameter gesteuert werden, ob leere Elemente ausgegeben werden sollen.
Sofern der Parameter nicht angegeben wurde oder mit *OFF übergeben wurde, werden keine leeren Elemente ausgegeben, d.h. die Ausgabe-Feldgruppe enthält nur gefüllte Elemente (und leere Elemente am Ende)
Leere Elemente können z.B. hilfreich sein, wenn *.csv-Dateien in Spalten aufgeteilt werden müssen.

Beispiele für den Aufruf

D GblText S 1024A Varying
D GblArrChar S Like(FldRef.TextVar) Dim(RefElemText)
D GblElem S 10U 0
D ConstSep C Const('|')
*------------------------------------------------------------------------------
/Free
GblArrChar = Wx_SplitStringArr(GblText: ';');
GblArrChar = Wx_SplitStringArr(GblText: ConstSep: GblElem);
GblArrChar = Wx_SplitSTringArr(GblText: ';': GblElem: *ON);
For GblIndex = 1 To GblElem;
//Verarbeitung
EndFor;
/End-Free
Source Code 311277: Aufruf - Funktion Wx_SplitStringArr() - Text in Feldgruppe aufsplitten

Wx_SplitStringArrUC2() – Unicode-Test in Feldgruppe splitten

Über die Funktion Wx_SplitStringArrUC2 kann ein Textstring in Double-Byte-Unicode (RPG Datentyp C), in dem die einzelnen Werte durch ein beliebiges Double-Byte-Unicode-Trennzeichen getrennt sind in eine Feldgruppe ausgegeben werden.
Aktuell kann ein Text in bis zu 256 Elemente mit einer Länge von maximal 256 Double-Byte-Unicode-Zeichen aufgeteilt werden.
Längere Element-Texte werden ohne Warnung abgeschnitten.
Enthält der String mehr als 256 Elemente wird eine entsprechende Escape Message ausgegeben, d.h. die Prozedur bricht ab. Der Fehler kann über eine Monitor-Group abgefangen werden.

Prototype

***************************************************************************
// Procedure name: WX_SplitStringArrUC2
// Purpose: Split Unicode String into Unicode Array Elements depending
// on the passed separator
// Texts longer than the Element length will be truncated
// --> An escape message is sent if more elements are available
// Returns: Array with the split texts
// Parameter: ParString => String
// Parameter: ParSep => Separator
// Parameter: ParEmpty => Empty Fields = Return an empty Element
// *ON = Empty Element
*--------------------------------------------------------------------------
* Attention: Maximum 256 Elements with 256 Characters
***************************************************************************
D Wx_SplitStringArrUC2...
D PR Like(FldRef.UCVar) OpDesc
D Dim(RefElemText)
D ParString Like(FldRefLU.VarLen) Const
D ParSep Like(FldRef.SepUC) Const
D POutNbrElem 10U 0 Options(*NoPass)
D ParEmpty N Options(*NoPass) Const
Source Code 312278: Prototype - Funktion Wx_SplitStringArrUC2 – Unicode-Text in Feldgruppe aufsplitten

Parameter

  • Rückgabe-Wert Feldgruppe mit dem aufgesplitteten Text

Bis zu 256 Elemente mit einer Länge von maximal 256 Zeichen

  • ParString Unicode-Text-String, der aufgesplittet werden soll


  • ParSep Unicode-Trennzeichen

Abhängig von dem angegeben Trennzeichen wird der String aufgesplittet.
Jedes beliebige Zeichen kann angegeben werden.

  • POutNbrElements Ausgabe-Parameter Anzahl Elemente

Optionaler Parameter
Muss als Unsigned Integer-Variable (10U 0) definiert werden

  • ParEmptyAusgabe von leeren Elementen

Optionaler Parameter
Sofern mehrere Trennzeichen unmittelbar aufeinander folgen, kann über diesen Parameter gesteuert werden, ob leere Elemente ausgegeben werden sollen.
Sofern der Parameter nicht angegeben wurde oder mit *OFF übergeben wurde, werden keine leeren Elemente ausgegeben, d.h. die Ausgabe-Feldgruppe enthält nur gefüllte Elemente (und leere Elemente am Ende)

Beispiele für den Aufruf

D GblText S 4096C Varying
D GblArrChar S Like(FldRef.UCVar) Dim(RefElemText)
D GblElem S 10U 0
D ConstSep C Const(%UCS2('|'))
*-----------------------------------------------------------------------------
/Free
GblArrChar = Wx_SplitStringArrUC2(GblText: ';');
GblArrChar = Wx_SplitStringArrUC2(GblText: ConstSep: GblElem);
GblArrChar = Wx_SplitSTringArrUC2(GblText: ';': GblElem: *ON);
For GblIndex = 1 To GblElem;
//Verarbeitung
EndFor;
/End-Free
Source Code 313279: Aufruf - Funktion Wx_SplitStringArrUC2() – Unicode-Text in Feldgruppe aufsplitten

Referenztabellen

Gültige Datentypen in WOPiXX

Der Datentyp kann in DDS/RPG oder SQL-Schreibweise angegeben werden.

Char / Aalphanumerisch mit fixer LängeSingle Byte Charcter Set (SBCS)
VarChar / A + Option Varyingalphanumerisch mit variabler LängeSingle Byte Character Set (SBCS)
Graphic / CUnicode mit fixer LängeDouble Byte Character Set (DBCS) CCSID 13488

VarGraphic / C + Option Varying

Unicode mit variabler LängeDouble Byte Character Set (DBCS) CCSID 13488
Decimal / P

gepackt numerisch


Numeric /Sgezont numerisch
SmallInt / Integer / Bigint / Iganzzahlig/Integer
Float / Double / FFließkomma
Date / DDatum
Time / TZeit
TimestampZeitmarke
  • No labels