Toolmaker Produkt-Dokumentation

Prozeduren für CHG-Programme

Inhaltsübersicht

Übersicht: verfügbare Prozeduren für CHG-Programme

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

 
Tabelle 4: RPGWX-Prozeduren für Change-Programme


Für ein Change-Programm sind nicht immer alle RPGWX-Prozeduren erforderlich.
Der Aufruf der RPGWX-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

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

Prozeduren Wx_GetDBKeyXX

2. Sofern erforderlich Parameter aus vorgelagertem Programm empfangen

Prozeduren Wx_GetParmXX

3. Sofern erforderlich Modus prüfen

Prozeduren Wx_isModeXX

4. Sofern erforderlich abhängig vom Modus CGI-Programm aufrufen

Prozedur Wx_CallPGM() und individuelle Programmierung

5. HTML-Dokument öffnen

Prozedur Wx_OpnHTMLChg()

6. Verwendete Dateien/Tabellen/Views definieren

→ Prozedur Wx_ChgFile()

7. Datensätze einlesen

→ individuelle Programmierung

8. Ein-/Ausgabe Felder definieren

Prozedur Wx_ChgFld()

9. HTML-Dokument ausgeben und erfasste Daten empfangen

Prozedur Wx_GetChgInput()

10. Sofern erforderlich individuelle Eingabe-Prüfung und Ausgabe von Fehler-Meldungen

Prozeduren Wx_FldErr() oder Wx_MultFldErr()

11. Datensatz fortschreiben

individuelle Programmierung

12. 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.


Basis-Deklaration für die Seitenaufbereitung in einem CHG-Programm

Wx_OpnHTMLChg() – HTML Dokument öffnen

Mit der Prozedur WX_OpnHTMLChg() (Open HTML Document for Change Tables) signalisiert man dem System, dass man im Browser eine CHG-Anzeige aufbauen möchte: ein Programm, mit dem ein Datensatz bearbeitet (editiert, angzeigt, kopiert, gelöscht) wird.

In dieser Prozedur wird zunächst das Default-HTML-Template ermittelt und geöffnet. Anstatt des Default-HTML-Templates zu verwenden, kann auch ein Individuelles HTML-Dokument verwendet werden. In diesem Fall muss jedoch dafür gesorgt werden, dass die Platz-Halter für Work- bzw. Change-Tables, Überschriften, Error-Messages etc., die von RPGWX/Directweb ersetzt werden, in dem individuellen Dokument integriert sind.

Der Titel, der zur Laufzeit angezeigt werden soll wird als Parameter übergeben und kann wahlweise als Text oder als Message-Id aus der bei dem Einrichten der Anwendung angegebenen Nachrichten-Datei übergeben werden.

Das Folge-Programm (Detail-Anzeige oder eine weitere List-Anzeige) 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 RPGWX-Prozedur DW_GetChgInput() gesteuert).

Die Prozedur Wx_OpnHTMLChg() darf pro Change-Programm nur einmalig aufgerufen werden.

Wx_OpnHTMLChg - 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)

 
Parameter

ParTitle - Message-Id oder Text für Titel

PInCGIPGM - Folge-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

PInOpnOpt - Options

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) '));

Wx_ChgNavTab() – Reiter definieren

Optional: 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.

Wx_ChgNavTab() - Prototyp
***************************************************************************
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)

Parameter

ParNavTab - Eindeutiger (interner) Name für den Navigation Tab/Reiter

ParDescr - Beschreibung/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, das in dem Reiter angezeigt werden soll

Der Name der Icon-Datei wird ohne Pfad angegeben.  Sie muss im Anwendungs-Verzeichnis für Icons hinterlegt werden:
/www/dirweb/htdocs/icons/<anwendung>

Das Icon sollte 16 x 16 pixel gross sein.

Gültige Formate für die Icon-Datei: PNG, GIF, ICO, JPG

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
 

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

Wx_ChgBtn() – Buttons definieren

Mit der Funktion Wx_ChgBtn() werden die angezeigten Buttons gesteuert.

  • Wenn keine Funktion verwendet wird, dann werden automatisch, die Default-Buttons (siehe unten)  angezeigt.
  • Anstelle einer der vordefinierten Funktionen kann auch ein eigenes Programm angegeben werden.
  • Beim Klicken auf den entsprechenden Button wird das gewünschte Folge-Programm aktiviert.
  • Der angzeigte Text kann für alle (eigene und vordefinierte) Funktionen definiert werden
  • Mit der Option "confirm" kann eine Bestätigung angefordert werden.

Vordefinierte Button-Funktionen

  • *DFT (oder *DEFAULT) -  es werden die Buttons angezeigt, bei der Anwendung als Standard Buttons definiert sind (Siehe: RPGWX (oder DIRWEB) → Anwendungen, Kontextmenü der Anwendung).
    Diese Buttons werden auch angezeigt, wenn das Programm keine Wx_ChgBtn() - Funktion enthält.

Standard Buttons der Anwendung RPGWX (DIRWEB)

  • *CHANGE- Sätz ändern
  • *CANCEL -  Abbrechen
  • *REFRESH - Aktualisieren
  • *SAVE - Sichern
  • *COPY - Satz kopieren
  • *APPLY - Anwenden
Wx_ChgBtn - Prototyp
***************************************************************************
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)

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');


Abbildung 27: Wx_ChgBtn - Buttons in Change Tables definieren

Anstatt *DEFAULT oder den entsprechenden Standard-Button (z.B. *CHANGE) als Parameter in der Funktion WX_ChgBtn() anzugeben, kann man auch die entsprechenden (bereitgestellen) Funktion für den entsprechenden Standard-Button aufrufen:

  • WX_ChgBtnDefault: Alle zulässigen Default-Buttons
  • WX_ChgBtnChange: Button für *CHANGE
  • WX_ChgBtnCancel: Button für *CANCEL
  • WX_ChgBtnRefresh: Button für *REFRESH
  • WX_ChgBtnSave: Button für *SAVE (Sichern)
  • WX_ChgBtnCopy: Button für *COPY
  • Wx_ChgBtnApply: Button für *APPLY

Ermitteln/Prüfen Modi

Bearbeitungs-Modi werden z.B. in Kontext-Menüs oder Buttons festgelegt. Diese Modi werden an das Folge-Programm übergeben und können dort geprüft und ermittelt werden.
Abhängig von dem übergebenen Modus können im Folge-Programm unterschiedliche Aktionen initiiert werden.
Die Prüfung der Standard-Modi kann über die folgenden Funktionen erfolgen:

  • Wx_isModeAdd()Prüfen Modus Hinzufügen
  • Wx_isModeChange()Prüfen Modus Ändern
  • Wx_isModeCopy () Prüfen Modus Kopieren
  • Wx_isModeDelete()Prüfen Modus Löschen
  • Wx_isModeProperty()Prüfen Modus Anzeigen
  • Wx_isModeWritePrüfen() Modus Kopieren oder Hinzufügen

Beliebige Modi, die in der Kontext-Menü- und Button-Definition festgelegt werden, können über die folgende Funktion geprüft werden:

  • Wx_isMode() Prüfen beliebigen Modus


Werden in Work-Programmen die Sonder-Funktionen/Buttons „Umsortieren" (Resequenzierung) oder „Änderungen speichern" (Editierbare Listanzeigen) definiert, wird die Steuerung nach Klick auf den entsprechenden Button an das Work-Programm zurückgegeben, d.h. das Work-Programm wird erneut aufgerufen.
Um festzustellen, ob das Work-Programm zu ersten Mal aufgerufen wird, oder ob ein ausgegebenes Ergebnis verarbeitet werden kann, können spezielle Modi über die folgenden Funktionen geprüft werden:

  • Wx_isModeReseq()Der Umsortieren Button wurde in einer Worktable angeklickt

String oder Feldgruppe mit den Schlüssel-Werten in der neuen
Reihenfolge kann empfangen werden.

  • Wx_isModeEdtList()Der Änderung Sichern-Button wurde in einer editierbare Worktable

angeklickt
Ein XML-Dokument mit den Änderungen kann empfangen werden
In Change-Programmen nach Klick auf einen der definierten Buttons ebenfalls der Modus abgefragt werden. Die Prüfung sollte erst nach Ausführung der Funktion Wx_GetChgInp (ähnl. OpCode EXFMT) erfolgen.
Zur Prüfung und Ermittlung der Standard-Modi können die folgenden Funktionen verwendet werden:

  • Wx_isModeSave()Prüfen Modus Sichern
  • Wx_isModeApply()Prüfen Modus Übernehmen
  • Wx_isModeUpdate()Prüfen Modus Sicher oder Übernehmen

Alle Prüf-Funktionen entweder den Wert *ON oder *OFF zurück, je nachdem, ob der aktuelle Modus dem zu prüfenden Modus entspricht.
Die Funktionen können innerhalb des individuellen CGI-Programmes mehrfach aufgerufen werden. Der Modus wird von RPGWX einmalig ermittelt und beim nächsten Aufruf zurückgegeben.
Alle Prüf-Funktionen haben einen optionalen Parameter. Wird der Parameter mit dem Wert *ON übergeben, wird der Modus erneut ermittelt, unabhängig davon ob er bereits geprüft war oder nicht.

Wx_isModeAdd() – Modus Hinzufügen

Über die Funktion Wx_isModeAdd() kann geprüft werden, ob der aktuelle Modus Hinzufügen ist.

Prototype

***************************************************************************
P* Procedure name: Wx_isModeAdd
P* Purpose: Check Current Mode --> Return True if Action is ADD
P* Returns: True/*ON = Action is ADD / False/*Off any other Action
P* Parameters: ParRtv => Retr. Mode in either way (even if already stored)
***************************************************************************
D Wx_isModeAdd...
D PR N OpDesc
D ParRtv N Options(*NoPass) Const
Source Code 195165: Prototype - Funktion Wx_isModeAdd() - Prüfen Modus Hinzufügen

Parameter

  • Rückgabe-Wert*ON = Modus Hinzufügen

*OFF = Anderer Modus

  • ParRtv *ON = Modus erneut prüfen/ermitteln

Optionaler Parameter

Beispiele für den Aufruf

/Free
If Wx_isModeAdd() or Land = *Blanks;
//Default-Wert für Land Setzen
EndIf;
If Wx_isModeAdd(*ON) = *On;
//Default-Werte setzen
EndIf;
If MyKey <> *Zeros and Not Wx_isModeAdd()
//Einlesen Datensatz;
EndIf;
/End-Free
Source Code 196166: Aufruf - Funktion Wx_isModeAdd() - Prüfen Modus Hinzufügen

Wx_isModeChange() – Modus Ändern

Über die Funktion Wx_isModeChange() kann geprüft werden, ob der aktuelle Modus Ändern ist.

Prototype

***************************************************************************
P* Procedure name: Wx_isModeChange
P* Purpose: Check Current Mode --> Return True if Action is CHANGE
P* Returns: True/*ON = Action is CHANGE / False/*Off any other Action
P* Parameters: ParRtv => Retr. Mode in either way (even if already stored)
***************************************************************************
D Wx_isModeChange...
D PR N OpDesc
D ParRtv N Options(*NoPass) Const
Source Code 197167: Prototype - Funktion Wx_isModeChange() - Prüfen Modus Ändern

Parameter

  • Rückgabe-Wert*ON = Modus Hinzufügen

*OFF = Anderer Modus

  • ParRtv *ON = Modus erneut prüfen/ermitteln

Optionaler Parameter

Beispiele für den Aufruf

/Free
If Wx_isModeChange() and LiefTerm >= %Date();
//Änderungsmodus
EndIf;
If Wx_isModeChange(*ON) = *On;
//Änderungsmodus
EndIf;
If MyKey = *Zeros or Not Wx_isModeChange()
//Nicht Änderungsmodus
EndIf;
/End-Free
Source Code 198168: Aufruf - Funktion Wx_isModeChange() - Prüfen Modus Ändern

Wx_isModeCopy() – Modus Kopieren

Über die Funktion Wx_isModeCopy() kann geprüft werden, ob der aktuelle Modus Kopieren ist.

Prototype

***************************************************************************
P* Procedure name: Wx_isModeCopy
P* Purpose: Check Current Mode --> Return True if Action is COPY
P* Returns: True/*ON = Action is COPY / False/*Off any other Action
P* Parameters: ParRtv => Retrieve Mode in either way (even if already s
***************************************************************************
D Wx_isModeCopy...
D PR N OpDesc
D ParRtv N Options(*NoPass) Const
Source Code 199169: Prototype - Funktion Wx_isModeCopy() - Prüfen Modus Kopieren

Parameter

  • Rückgabe-Wert*ON = Modus Hinzufügen

*OFF = Anderer Modus

  • ParRtv *ON = Modus erneut prüfen/ermitteln

Optionaler Parameter

Beispiele für den Aufruf

/Free
If Wx_isModeCopy();
//Initialisieren
EndIf;
If Wx_isModeCopy(*ON) = *On;
//Initialisieren
EndIf;
If MyKey = *Zeros or Not Wx_isModeCopy()
//Einlesen Datensatz
EndIf;
/End-Free
Source Code 200170: Aufruf - Funktion Wx_isModeCopy() - Prüfen Modus Kopieren

Wx_isModeDelete() – Modus Löschen

Über die Funktion Wx_isModeDelete() kann geprüft werden, ob der aktuelle Modus Löschen ist.

Prototype

***************************************************************************
P* Procedure name: Wx_isModeDelete
P* Purpose: Check Current Mode --> Return True if Action is DELETE
P* Returns: True/*ON = Action is DELETE / False/*Off any other Action
P* Parameters: ParRtv => Retrieve Mode in either way (even if already s
***************************************************************************
D Wx_isModeDelete...
D PR N OpDesc
D ParRtv N Options(*NoPass) Const
Source Code 201171: Prototype - Funktion Wx_isModeDelete() - Prüfen Modus Löschen

Parameter

  • Rückgabe-Wert*ON = Modus Hinzufügen

*OFF = Anderer Modus

  • ParRtv *ON = Modus erneut prüfen/ermitteln

Optionaler Parameter

Beispiele für den Aufruf

/Free
If Wx_isModeDelete();
ArrKeyVal = Wx_GetDBKeyArrInt();
For Index = 1 To %Elem(ArrKeyVal);
If ArrKeyVal(Index) > *Zeros;
Delete(E) ArrKeyVal(Index) AdresseF1;
EndIf;
EndFor;
Wx_RtnPrv();
EndIf;
/End-Free
Source Code 202172: Aufruf - Funktion Wx_isModeDelete() - Prüfen Modus Löschen

Wx_isModeProperty() – Modus Anzeigen

Über die Funktion Wx_isModeProperty() kann geprüft werden, ob der aktuelle Modus Anzeigen ist.

Prototype

***************************************************************************
P* Procedure name: WX_IsModeProperty
P* Purpose: Check Current Mode --> Return True if Action is PROPERTY
P* Returns: True/*ON = Action is PROPERTY / False/*Off any other Action
P* Parameters: ParRtv => Retrieve Mode in either way (even if already stored
***************************************************************************
D WX_IsModeProperty...
D PR N OpDesc
D ParRtv N Options(*NoPass) Const
Source Code 203173: Prototype - Funktion Wx_isModeProperty() - Prüfen Modus Anzeigen

Parameter

  • Rückgabe-Wert*ON = Modus Hinzufügen

*OFF = Anderer Modus

  • ParRtv *ON = Modus erneut prüfen/ermitteln

Optionaler Parameter

Beispiele für den Aufruf

/Free
If Wx_isModeProperty();
//Anzeigen
EndIf;
If Wx_isModeProperty(*ON) = *On;
//Anzeigen
EndIf;
If Not Wx_isModeProperty()
//Nicht Anzeigen
EndIf;
/End-Free
Source Code 204174: Aufruf - Funktion Wx_isModeProperty() - Prüfen Modus Anzeigen

Wx_isModeWrite() – Modus Hinzufügen oder Kopieren

Über die Funktion Wx_isModeWrite() kann geprüft werden, ob der aktuelle Modus entweder Kopieren oder Hinzufügen ist.
Dieser Modus kann geprüft werden, um festzustellen, ob ein neuer Datensatz geschrieben oder ein vorhandener Datensatz gesetzt werden kann.

Prototype

***************************************************************************
P* Procedure name: Wx_isModeWrite
P* Purpose: Check Current Mode --> Return True if Action is either COPY or
P* Write
P* Returns: True/*ON = For Additional Input Checking / False/*Off
P* Parameters: ParRtv => Retr. Mode in either way (even if already stored)
***************************************************************************
D Wx_isModeWrite...
D PR N OpDesc
D ParRtv N Options(*NoPass) Const
Source Code 205175: Prototype - Funktion Wx_isModeWrite() - Prüfen Modus Hinzufügen oder Kopieren

Parameter

  • Rückgabe-Wert*ON = Modus Hinzufügen oder Kopieren

*OFF = Anderer Modus

  • ParRtv *ON = Modus erneut prüfen/ermitteln

Optionaler Parameter

Beispiele für den Aufruf

/Free
If Wx_isModeWrite();
//Initialisieren
EndIf;
If Wx_isModeWrite(*ON) = *On;
//Initialisieren
EndIf;
If Not Wx_isModeWrite()
//Weder Kopieren noch Hinzufügen
EndIf;
/End-Free
Source Code 206176: Aufruf - Funktion Wx_isModeWrite() - Prüfen Modus Hinzufügen oder Kopieren

Wx_isModeSave() – Modus Sichern

Über die Funktion Wx_isModeSave() kann geprüft werden, ob der aktuelle Modus Sichern ist.
Der Modus sollte erst nach Ausführung der Funktion Wx_GetChgInput() (ähnl. OpCode EXFMT) geprüft werden.

Prototype

***************************************************************************
P* Procedure name: Wx_isModeSave
P* Purpose: Check Current Mode --> Return True if Action is SAVE
P* Returns: True/*ON = Action is Save / False/*Off any other Action
P* Parameters: ParRtv => Retr. Mode in either way (even if already stored)
***************************************************************************
D Wx_isModeSave...
D PR N OpDesc
D ParRtv N Options(*NoPass) Const
Source Code 207177: Prototype - Funktion Wx_isModeSave() - Prüfen Modus Sichern

Parameter

  • Rückgabe-Wert*ON = Modus Hinzufügen

*OFF = Anderer Modus

  • ParRtv *ON = Modus erneut prüfen/ermitteln

Optionaler Parameter

Beispiele für den Aufruf

/Free
If Wx_isModeSave();
//Fortschreiben Datensatz
EndIf;
If Wx_isModeSave(*ON) = *On;
//Fortschreiben Datensatz
EndIf;
If Not Wx_isModeSave()
//Nicht Modus Sichern
EndIf;
/End-Free
Source Code 208178: Aufruf - Funktion Wx_isModeSave() - Prüfen Modus Sichern

Wx_isModeApply() – Modus Übernehmen

Über die Funktion Wx_isModeApply() kann geprüft werden, ob der aktuelle Modus Übernehmen ist.
Der Modus sollte erst nach Ausführung der Funktion Wx_GetChgInput() (ähnl. OpCode EXFMT) geprüft werden.

Prototype

***************************************************************************
P* Procedure name: Wx_isModeApply
P* Purpose: Check Current Mode --> Return True if Action is APPLY
P* Returns: True/*ON = Action is APPLY / False/*Off any other Action
P* Parameters: ParRtv => Retr.Mode in either way (even if already stored)
***************************************************************************
D Wx_isModeApply...
D PR N OpDesc
D ParRtv N Options(*NoPass) Const
Source Code 209179: Prototype - Funktion Wx_isModeApply() - Prüfen Modus Übernehmen

Parameter

  • Rückgabe-Wert*ON = Modus Hinzufügen

*OFF = Anderer Modus

  • ParRtv *ON = Modus erneut prüfen/ermitteln

Optionaler Parameter

Beispiele für den Aufruf

/Free
If Wx_isModeApply();
//Fortschreiben Datensatz
EndIf;
If Wx_isModeApply(*ON) = *On;
//Fortschreiben Datensatz
EndIf;
If Not Wx_isModeApply()
//Nicht Modus Übernehmen
EndIf;
/End-Free
Source Code 210180: Aufruf - Funktion Wx_isModeApply() - Prüfen Modus Übernehmen

Wx_isModeUpdate() – Modus Sichern oder Übernehmen

Über die Funktion Wx_isModeUpdate() kann geprüft werden, ob der aktuelle Modus Sichern oder Übernehmen ist.
Der Modus sollte erst nach Ausführung der Funktion Wx_GetChgInput() (ähnl. OpCode EXFMT) geprüft werden.

Prototype

***************************************************************************
P* Procedure name: Wx_isModeUpdate
P* Purpose: Check Current Mode --> Return True if Action is either APPLY
P* or SAVE
P* Returns: True/*ON = Record must be written or updates / False/*Off
P* Parameters: ParRtv => Retrieve Mode in either way (even if already stored
***************************************************************************
D Wx_isModeUpdate...
D PR N OpDesc
D ParRtv N Options(*NoPass) Const
Source Code 211181: Prototype - Funktion Wx_isModeUpdate() - Prüfen Modus Sichern oder Übernehmen

Parameter

  • Rückgabe-Wert*ON = Modus Hinzufügen

*OFF = Anderer Modus

  • ParRtv *ON = Modus erneut prüfen/ermitteln

Optionaler Parameter

Beispiele für den Aufruf

/Free
If Wx_isModeUpdate();
//Fortschreiben Datensatz
EndIf;
If Wx_isModeUpdate(*ON) = *On;
//Fortschreiben Datensatz
EndIf;
If Not Wx_isModeUpdate()
//Weder Modus Sichern noch Modus übernehmen
EndIf;
/End-Free
Source Code 212182: Aufruf - Funktion Wx_isModeApply() - Prüfen Modus Übernehmen

Wx_isModeOutput() – Modus Anzeigen oder Eigenschaften

Über die Funktion Wx_isModeOutput() kann geprüft werden, ob der aktuelle Modus Anzeigen oder Eigenschaften ist.
Der Modus sollte erst nach Ausführung der Funktion Wx_GetChgInput() (ähnl. OpCode EXFMT) geprüft werden.

Prototype

***************************************************************************
P* Procedure name: Wx_isModeOutput
P* Purpose: Check Current Mode --> Return True if Action is either DISPLAY
P* or PROPERTY
P* Returns: True/*ON = Fields must be set to output / False/*Off
P* Parameters: ParRtv => Retr. Mode in either way (even if already stored)
***************************************************************************
D Wx_isModeOutput...
D PR N OpDesc
D ParRtv N Options(*NoPass) Const
Source Code 213183: Prototype - Funktion Wx_isModeOutput() - Prüfen Modus Anzeigen oder Eigenschaften

Parameter

  • Rückgabe-Wert*ON = Modus Anzeigen oder Eigenschaften

*OFF = Anderer Modus

  • ParRtv *ON = Modus erneut prüfen/ermitteln

Optionaler Parameter

Beispiele für den Aufruf

/Free
If Not Wx_isModeOutput();
//Datensatz fortschreiben
EndIf;
If Wx_isModeOutput(*ON) = *Off;
//Datensatz fortschreiben
EndIf;
If Wx_isModeOutput()
//Modus Anzeigen oder Eigenschaften
EndIf;
/End-Free
Source Code 214184: Aufruf - Funktion Wx_isModeApply() - Prüfen Modus Übernehmen

Wx_isMode() – Prüfen beliebigen Modus

Über die Funktion Wx_isMode() kann geprüft werden, ob der aktuelle Modus dem vorgegebenen Modus entspricht.
Der Modus kann in jeder beliebigen Kombination aus Groß- und Kleinbuchstaben übergeben werden.

Prototype

***************************************************************************
P* Procedure name: Wx_isMode
P* Purpose: Check Mode, if the current mode is equal to the passed mode
P* Returns: True/*ON = Current Mode = Passed Mode / False/*Off
P* Parameters: ParRtv => Retrieve Mode in either way (even if already stored)
***************************************************************************
D Wx_isMode...
D PR N OpDesc
D ParMode Like(FldRef.ModeChar) Const
D ParRtv N Options(*NoPass) Const
Source Code 215185: Prototype - Funktion Wx_isMode() - Prüfen beliebigen Modus

Parameter

  • Rückgabe-Wert*ON = Modus Hinzufügen

*OFF = Anderer Modus

  • ParMode Modus

Case insensitive

  • ParRtv *ON = Modus erneut prüfen/ermitteln

Beispiele für den Aufruf

/Free
Select;
When Wx_isMode('SALESITM');
Wx_CallPGM('EXWRKUM03');
When Wx_isMode('SalesCustItm': *ON);
Wx_CallPGM('EXWRKUM04': Wx_GetDBKeyChar());
EndSL;
/End-Free
Source Code 216186: Aufruf - Funktion Wx_isMode() - Prüfen beliebigen Modus

Dateien in CHG-Programmen

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 RPGWX registriert werden.

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

RPGWX 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 RPGWX ausgetauscht werden, müssen als Datenstruktur-Unterfelder definiert werden!

Felder in Datenstrukturen werden vom RPG-Compiler nicht konvertiert.

Wx_ChgFld - Prototyp
***************************************************************************
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)

Parameter

ParField - Feld/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.

ParPtr - Pointer 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().

ParDescr - Beschreibung, 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 

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

If GblKGId = *Zeros;

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

EndIf;

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

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

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

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

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

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.

Wx_ChgFileFld - Prototyp
***************************************************************************
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)

Parameter

ParFile - Physische Datei/Tabelle/View

Kann als kurzer System-Name (Max.10 Zeichen) oder langer SQL Name (Max. 128 Zeichen) angegeben werden.
Analog Parameter ParFile1 in Funktion Wx_ChgFile()

ParField - Feld/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.

ParPtr - Pointer 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().

ParDescr - Beschreibung, 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 RPGWX 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 RPGWX anzugeben.

RPGWX stellt mehrere Funktionen zur Registrierung von Arbeitsfeldern/Variablen in RPGWX 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.

Wx_ManChgFld() - Prototyp
***************************************************************************
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)

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

  • *EUR Europäisches Datum =TT.MM.JJJJ
  • *USA Amerikanisches Datum =MM/TT/JJJJ

Amerikansche Zeit = HH:MMam/PM

  • *YMD Jahr/Monat/Tag Format =JJ-MM-TT
  • *DMY Tag/Monat/Jahr Format =TT.MM.JJ
  • *MDY Monat/Tag/Jahr Format = MM/TT/JJ
  • *HMS Stunde/Minute/Sekunde = HH:MM:SS


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_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');

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.

Wx_ManChgFldChar() - Prototoyp
***************************************************************************
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)

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.

ParLen - Lä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.

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_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));

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.


Wx_ManChgFldVarChar - Prototyp
***************************************************************************
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)

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.
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)

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.

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(MyVar:*max)

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.

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_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');

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.

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

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.

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

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.

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

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.

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

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


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

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


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. 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


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

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.

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

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.

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

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.

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

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

RPGWX 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.

RPGWX 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
  • Wx_ChgElse() Else-Bedingung
  • Wx_ChgEndIf() EndIf-Anweisung = Ende der 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 RPGWX-Funktionen definiert wurden.

Die Bedingungen können in RPG oder CL oder Java-Script-Schreibweise angegeben werden, siehe auch Bedingtes Anzeigen von Filter- und Ein-/Ausgabefeldern. 

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.

Wx_ChgIf() - Prototyp
***************************************************************************
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

Syntax

Wx_ChgIf('<condition>');

  • Character-Konstanten müssen in Anführungszeichen ("Gänsefüßchen") eingeschlossen werden
  • 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

Parameter

<condition> - Ein Ausdruck, der WAHR oder FALSCH liefert

Wenn die Bedingung WAHR ist, dann werden die folgenden Anweisungen ausgeführt, bis eine der Anweisungen angetroffen wird:

  • Wx_ElseIf()
  • Wx_EndIf()

Beispiele

Wx_ChgIf('ARmailbox = "*DIRMAIL"');

Wx_ChgIf('Nettobetrag > 200');

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 RPGWX-Funktionen definiert werden, werden zur Laufzeit unter den inversen Bedingungen der zuvor definierten IF-Anweisung angezeigt.
Durch die Angabe von weiteren Bedingungen können Else-If-Bedingungen definiert werden.
Innerhalb der Else-Anweisungen können weitere Condition Groups definiert werden.

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 RPGWX-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 RPGWX-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

Die im Anschluss Zeilen*Spalten mit WX_ChgFld() oder mit irgendeiner Wx_ManChgFld…() Funktion definierten Felder, werden in der Tabelle hinterlegt.

Das erste Feld in Zeile1/Spalte1, das zweite Feld in Zeile1/Spalte2 … bis alle Spalten der ersten Zeile belegt sind in der Tabelle belegt sind und dann geht es in der nächsten Zeile weiter.

Auf der Seite Beispiel-Programme gibt es ein umfangreiches Beispiel für die Verwendung der Funktionen Wx_HtmlTbl und Wx_HtmlTblColhdg.

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.

Wx_HtmlTbl() - Prototypoe
***************************************************************************
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)

Syntax

Wx_HtmlTbl('<tablename>' :  '<nbrcol>' : '<nbrrow>')

Parameter

Die Prozedur erfordert 3 Parameter. Über zwei optionale Parameter können in Zukunft zusätzliche Informationen übergeben werden.

tablename -  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.

nbrcol - 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.

nbrrow - Anzahl der Zeilen innerhalb der Tabelle

Beispiele für den Aufruf

//Tabelle1 mit 3 Spalten und 5 Zeilen
Wx_HTMLTbl('Tabelle1': 3 : 5);

Auf der Seite Beispiel-Programme gibt es ein umfangreiches Beispiel für die Verwendung der Funktionen Wx_HtmlTbl und Wx_HtmlTblColhdg.

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.

Wx_HtmlTblColhdg() - Prototype
*******************************************************************************
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)

Syntax

Wx_HtmlTblColhdg('<headertext> : '<colnum>')

Parameter

Die Funktion erfordert einen Parameter.

headertext - Message-Id oder Text der als Spaltenüberschrift angezeigt werden soll

colnum - Spalten-Nr.

Optionaler Parameter

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.

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"');

Auf der Seite Beispiel-Programme gibt es ein umfangreiches Beispiel für die Verwendung der Funktionen Wx_HtmlTbl und Wx_HtmlTblColhdg.

Daten von der Browser-Maske empfangen

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 RPGWX-Prozeduren und vor der individuellen Eingabe-Prüfung bzw. vor dem Fortscheibend der erfassten Daten erfolgen.
Für den RPGWX-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': 'NoNewLine');
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 RPGWX-Funktionen zur Verfügung gestellt.

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 RPGWX-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 RPGWX-Prozedur definiert worden sein.

Wx_FldErr - 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;


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 RPGWX-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 RPGWX-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

Bedingtes Anzeigen von Filter- und  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.

Dafür gibt es drei Möglichkeiten:

  • Optionale Parameter in den RPGWX-Prozeduren
  • Condition Group
  • Bedingungen

Optionaler Parameter in RPGWX-Prozeduren

Alle Prozeduren, durch die Filter- oder Ein-/Ausgabe-Felder definiert werden können (z.B. Wx_ChgFldXXXX, Wx_ManChgFldXXXX), 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:

  • Beginn der Bedingung
    • Wx_ChgIf() - für Ein-/Ausgabefelder
    • Wx_FltIf() - für Filterfelder
  • Else-Fall
    • Wx_ChgElse() - für Ein-/Ausgabefelder
    • Wx_FltElse() - für Filterfelder
  • Abschluss der Bedingung
    • Wx_ChgEndIf() - für Ein-/Ausgabefelder
    • Wx_FltEndIf() - für Filterfelder


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 RPGWX-IF-Funktion muss eine entsprechende RPGWX-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.

Die Prozeduren Wx_ChgIf() etc. werden weiter oben beschrieben im Absatz Condition Group

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

Beispiele für bedingte Filter-Felder



Beispiel für bedingte 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


 

Ergebnis Bedingte Filter-Felder für Firma 10



Ergebnis Bedingte Filter-Felder für Firma 15