Häufig sind die Felder einer Transaktion auf mehrere Reiter verteilt. Zur schnellen Dateneingabe kann es sinnvoll sein, Felder aus mehreren Reitern auf einem einzigen zusammenzuführen. Das ist schwieriger, als nur innerhalb eines Bildschirmbildes Felder anders anzuordnen, da die Logik der Transaktion eine Rolle spielt. |
Die wesentlichen Techniken sehen Sie in diesem Tutorial. Unser Ziel ist, für die Transaktionen
die Felder zur Vermögensbewertung bereits auf dem ersten Reiter "Allgemein" zur Verfügung stellen. Die Standardtransaktion AS02 sieht wie folgt aus:
Wir wollen die rot umrahmten Felder stattdessen auf dem Reiter "Allgemein" zur Verfügung stellen. Auf dem Reiter "Vermögenst." werden sie gelöscht, die Grundstücksfelder nach oben geschoben und der Reiter umbenannt in "Grundstücke". Der neue Reiter "Allgemein" sieht dann so aus:
Sie sehen, dass wir dabei zwei Eingabefelder in eine Auswahl von Radiobuttons umgewandelt haben (Gruppen "Eigentumsart" und "Bewertung nach"). |
Vorgehen:
Eine .zip-Datei mit den hier verwendeten Skripten können Sie für eigene Tests nutzen: as_zip.zip. Auf den Einstiegsbildern von AS01 sowie AS02/AS03 setzen wir alle benutzten Variablen zurück. Durch die Namenskonvention, unsere InpustScript-Variablen für die drei Transaktionen mit "AS_" beginnen zu lassen, ist das einfach machbar: // GuiXT Script saplaist.d0105.txt // GuiXT Script saplaist.d0100.txt Die Layoutänderungen sowie der Aufruf der richtigen InputScripts erfolgt in dem GuiXT Skript zu dem AS01/AS02/AS03-Screen saplaist.1000: // GuiXT Script "saplaist.d1000.txt"
// Zur Sicherheit Variablen auch löschen, wenn
// die Anlagennummer sich geändert hat (falls Aufruf aus Liste o.ä.)
if
not
V[AS_Anlage=&F[Anlage]]
Set
V[AS_*]
""
Set
V[AS_Anlage]
"&F[Anlage]"
endif
// readonly-flag setzen bei Anzeige, um später für alle Transaktionen
// die gleichen InputField-Anweisungen zu verwenden
if
Q[Transaction=AS03]
Set
V[AS_readonly]
"-readonly"
endif
// Werte erstmalig lesen bei Ändern oder Anzeigen
if
Q[Transaction=AS02]
or
Q[Transaction=AS03]
if
not
V[AS_read=X]
Set
V[AS_read]
"X"
Enter
process="AS_read.txt"
// Skript hier verlassen, da Screen nicht angezeigt wird
Stop
endif
endif
// Reiter umbenennen, da nur noch die Grundstücksfelder dort vorhanden
Text
P[Vermögenst.]
"Grundstücke"
// Reiter Allgemein, eigene Felder einblenden
if
Q[Page=Allgemein]
// Inneren Scrollbar
unterdrücken
NoScrollBar
// Hinter letztem
Gruppenrahmen beginnen
offset
G[Buchungsinformationen]+(5,0)
box
(0,0)
(9,80)
"Vermögenswerte"
pushbutton
(1,78)
"@0Q\QLangtext Vermögenswert@"
"=LTXTNETA" size=(1,1)
inputfield
(1,1)
"Gliederungsschlüssel"
(1,24)
size=4
name="AS_Gliederungsschlüssel" "&V[AS_readonly]" techname="ANLA-VMGLI"
Text
(1,30)
"&V[AS_Gliederungsschlüsseltext]"
-border
inputfield
(2,1)
"Vermögenswert"
(2,24)
size=16
name="AS_Vermögenswert"
"&V[AS_readonly]" -numerical
Box
(4,1)
(8,20)
"Eigentumsart"
radiobutton
(5,2)
"Eigentum"
name="AS_Eigentumskennzeichen" value="1"
"&V[AS_readonly]"
radiobutton
(6,2)
"Leasing"
name="AS_Eigentumskennzeichen" value="2" "&V[AS_readonly]"
radiobutton
(7,2)
"Beteiligung"
name="AS_Eigentumskennzeichen" value="3" "&V[AS_readonly]"
Box
(4,30)
(8,49)
"Bewertung nach"
radiobutton
(5,31)
"Einheitswert" name="AS_ManBewertung"
value="003" "&V[AS_readonly]"
radiobutton
(6,31)
"Mietwert" name="AS_ManBewertung"
value="001" "&V[AS_readonly]"
//Anzeige der Anlage
if
Q[transaction=AS02]
or
Q[transaction=AS03]
offset
(0,0)
image
(5,90)
(20,135)
"&F[Anlage].jpg"
endif
endif
// Reiter Vermögenst., Felder löschen die jetzt auf "Allgemein" sind
if
Q[Page=Vermögenst.]
del
G[Vermögensbewertung]
pos
G[Grundstücke und ähnliche Rechte]
(5,1)
endif
if
Q[Transaction=AS01]
or
Q[Transaction=AS02]
// Bei Sichern in AS01/AS02 eigenes Skript aufrufen
on
"/11"
process="AS_save.txt"
on
"/Menu=1,7"
process="AS_save.txt"
// Kein Sichern auf Popup zulassen, wie /12 handhaben
on
"/3"
fcode="/12"
on
"/15"
fcode="/12"
// Bei "Enter" im Reiter
"Allgemein" die Zusatzeingaben schon überprüfen
if
Q[Page=Allgemein]
on
Enter
process="AS_check.txt"
endif
endif
// InputScript AS_read.txt
Enter
"=TAB05"
// AS02, Vermögensbewertung
Screen
SAPLAIST.1000
Set
V[AS_Gliederungsschlüssel]
"&F[Gliederungsschlüssel]"
Set
V[AS_Gliederungsschlüsseltext]
"&F[T092T-VMTXT]"
Set
V[AS_Eigentumskennzeichen]
"&F[Eigentumskennzeichen]"
Set
V[AS_ManBewertung]
"&F[Grund
man. Bewertung]"
Set
V[AS_Vermögenswert]
"&F[Man.Vermögenswert]"
Enter
"=TAB01"
Entsprechend setzt "AS_save.txt" vor dem Sichern die zusätzlichen Felder wieder in die Standardfelder. Für den Fall von Fehlermeldungen kehren wir auf den Reiter "Allgemein" zurück.
// InputScript AS_save.txt
// Auf Reiter "Vermögensbewertung" verzweigen
Enter
"=TAB05"
// Vermögensbewertung
Screen
SAPLAIST.1000
// Alte Werte merken, um sie
im Fehlerfall wieder einzutragen
Set
V[AS_corr_Gliederungsschlüssel]
"&F[Gliederungsschlüssel]"
Set
V[AS_corr_Vermögenswert]
"&F[Man.Vermögenswert]"
// Neue Werte eintragen
Set
F[Gliederungsschlüssel]
"&V[AS_Gliederungsschlüssel]"
Set
F[Eigentumskennzeichen]
"&V[AS_Eigentumskennzeichen]"
Set
F[Grund man. Bewertung]
"&V[AS_ManBewertung]"
Set
F[Man.Vermögenswert]
"&V[AS_Vermögenswert]"
// Sichern, im Fehlerfall
weiter
Enter
"/11"
OnError=Continue
// Werte wieder zurücksetzen,
da einige fehlerhaft
Set
F[Gliederungsschlüssel]
"&V[AS_corr_Gliederungsschlüssel]"
Set
F[Man.Vermögenswert]
"&V[AS_corr_Vermögenswert]"
// Zurück auf ersten Reiter
mit Fehlermeldung
Message
"&V[_lasterror]"
-statusline
Enter
"=TAB01"
Nicht unbedingt nötig ist schliesslich das hier implementierte Prüfen der Eingabe bei "Enter" durch ein eigenes InputScript "AS_check.txt". Die Prüfung erfolgt ja auf alle Fälle bei "Sichern". Für den Benutzer ist es jedoch angenehmer, wenn die Werte bereits beim ersten "Enter" geprüft werden.
// InputScript AS_check.txt
// Auf Reiter "Vermögensbewertung" verzweigen
Enter
"=TAB05"
// Vermögensbewertung
Screen
SAPLAIST.1000
// Alte Werte merken, um sie
im Fehlerfall wieder einzutragen
Set
V[AS_corr_Gliederungsschlüssel]
"&F[Gliederungsschlüssel]"
Set
V[AS_corr_Vermögenswert]
"&F[Man.Vermögenswert]"
// Neue Werte eintragen
Set
F[Gliederungsschlüssel]
"&V[AS_Gliederungsschlüssel]"
Set
F[Eigentumskennzeichen]
"&V[AS_Eigentumskennzeichen]"
Set
F[Grund man. Bewertung]
"&V[AS_ManBewertung]"
Set
F[Man.Vermögenswert]
"&V[AS_Vermögenswert]"
// Datenfreigabe
Enter
OnError=Continue
goto Fehler
// Vermögensbewertung
Screen
SAPLAIST.1000
// Text entnehmen
Set
V[AS_Gliederungsschlüsseltext]
"&F[T092T-VMTXT]"
// Vermögenswert mit
Standard-Aufbereitung
Set
V[AS_Vermögenswert]
"&F[Man.Vermögenswert]"
// Zurück auf ersten Reiter
Enter
"=TAB01"
// Skript verlassen, Eingaben
sind OK
Leave
// Behandlung der Fehlermeldung
label
Fehler
// Werte wieder zurücksetzen,
da einige fehlerhaft, um Reiter zu verlassen
Set
F[Gliederungsschlüssel]
"&V[AS_corr_Gliederungsschlüssel]"
Set
F[Man.Vermögenswert]
"&V[AS_corr_Vermögenswert]"
// Zurück auf ersten Reiter
mit Fehlermeldung
Message
"&V[_lasterror]"
-statusline Enter "=TAB01" |