InputAssistant Tutorial Allgemeines 1 2 3 4  Felder auf Reitern 5 6 weiter

 

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

  • AS01: Hinzufügen Anlagenstammsatz

  • AS02: Ändern Anlagenstammsatz

  • AS03: Anzeigen Anlagenstammsatz

die Felder zur Vermögensbewertung bereits auf dem ersten Reiter “Allgemein” zur Verfügung stellen. Die  Standardtransaktion AS02 (SAP 4.6C) sieht wie folgt aus:

Sap Guixt image.ia.8.01 Felder auf Reitern

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:

Sap Guixt image.ia.8.02 Felder auf Reitern

Sie sehen, dass wir dabei zwei Eingabefelder in eine Auswahl von Radiobuttons umgewandelt haben (Gruppen “Eigentumsart” und “Bewertung nach”).

Vorgehen:

  • Wir ändern das Layout auf den beiden Reitern wie gewünscht ab (Löschen der  Vermögensfelder auf Reiter “Vermögenst.”, Hochschieben der Grundstücksfelder, Aufnahme der neuen Felder auf dem Reiter “Allgemein”. 

  • Durch Aufruf geeigneter InputScripts sorgen wir dafür, dass die Felder im Anzeige- und Änderungsmodus gefüllt werden. Hierzu gehen wir bei erstem Aufruf des Reiters “Allgemein” in einem InputScript auf den Reiter “Vermögenst.”, setzen die Werte in InputScript-Variablen, und kehren zum Reiter “Allgemein” zurück. Bitte beachten Sie, dass das InputScript auch dann Zugriff auf alle Felder hat, wenn diese durch ein GuiXT Skript bei der Anzeige des Reiters weggeblendet sind.

  • Analog sorgen wir bei Hinzufügen und Ändern dafür, dass bei “Sichern” zunächst unsere zusätzlichen Felder übertragen werden

  • Besonderes Augenmerk gilt der Behandlung von Fehlern bei der Eingabe. Wir zeigen Fehlermeldungen zu unseren neuen Eingabefeldern ebenfalls auf dem Reiter “Allgemein” an, sodass der Benutzer unmittelbar korrigieren kann. 

Eine .zip-Datei mit den hier verwendeten Skripten können Sie für eigene Tests nutzen: as_zip.zip. Bitte auf SAP 4.6C testen (oder anpassen) und GuiXT 2004 Q3 4 oder später verwenden.

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
// Löschen der Variablen für AS01 

Set V[AS_*] “” 

// GuiXT Script saplaist.d0100.txt
// Löschen der Variablen für AS02 /AS03

Set V[AS_*] “”

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
// Transaktionen AS01 / AS02 / AS03

// Benutzte InputScripts:
//
// AS_read.txt  Daten lesen
// AS_save.txt  Sichern
// AS_check.txt Prüfen 
//——————————————-

// Alle Variablen V[AS_*] werden auf dem Einstiegsbild der Transaktion zurückgesetzt

// Zur Sicherheit Variablen auch löschen, wenn
// die Anlagennummer sich geändert hat (falls Transaktionsaufruf aus Liste
// mit Überspringen des Einstiegbildes)

if not V[AS_Anlage=&F[Anlage]]   //Andere Anlagennummer?
  Set V[AS_*] “” 
  Set V[AS_Anlage] “&F[Anlage]“
endif

// Eine Variable als “-readonly” Option setzen bei Anzeige, um 
// für alle drei Transaktionen die gleichen 
// InputField-Anweisungen verwenden zu können
 

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]  // erstes Mal?
    Set V[AS_read] “X”
    Enter process=”AS_read.txt”

    // Skript hier verlassen, da Screen noch nicht angezeigt wird
    Stop 
  endif
endif

// Reiter umbenennen, da nur noch die Grundstücksfelder dort vorhanden sind
Text P[Vermögenst.] “Grundstücke”

// Reiter Allgemein: eigene Felder einblenden
if Q[Page=Allgemein]

  
  // Inneren Scrollbar unterdrücken (nur für kleine Windowgrösse wichtig) 
  NoScrollBar

  // Hinter letztem Gruppenrahmen beginnen
  offset G[Buchungsinformationen]+(5,0)

  box (0,0) (9,80) “Vermögenswerte”

  // Button zur Langtextpflege zu den Vermögenswerten
  pushbutton (1,78) “@0Q\QLangtext Vermögenswert@” “=LTXTNETA”

  inputfield (1,1) “Gliederungsschlüssel” (1,24) size=4 name=”AS_Gliederungsschlüssel”  techname=”ANLA-VMGLI” “&V[AS_readonly]“
  Text (1,30) “&V[AS_Gliederungsschlüsseltext]” -border

  inputfield (2,1) “Vermögenswert” (2,24) size=16 name=”AS_Vermögenswert” -numerical  “&V[AS_readonly]“ 

  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]“

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

Das InputScript “AS_read.txt” liest die Vermögensfelder von dem entsprechenden Reiter und kehrt zu “Allgemein” zurück. Auch Textfelder können wir dabei mitnehmen.

// InputScript AS_read.txt

// Auf Reiter “Vermögensbewertung” verzweigen
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
// Sichern in Transaktionen AS02 und AS03

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

  // Fehlerfall. Werte wieder zurücksetzen, da einige fehlerhaft
  // Sonst können wir den Reiter eventuell nicht 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″

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
// Prüfen der Eingabe

// Auf Reiter “Vermögensbewertung” verzweigen
Enter “=TAB05″

// Vermögensbewertung
Screen SAPLAIST.1000

  // A
lte 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″

 

Sap Guixt weiter Felder auf Reitern

Felder auf Reitern