Bei gewissen Positionen in einem TableControl wollen Sie Ihren Anwendern Schnellzugriffe über eine Icone zur Verfügung stellen

Das Beispiel zeigt folgende Funktionalität :

Ist eine Position nicht lieferbar, so soll links vor der Position eine Icone (Werk) angezeigt werden. Drückt der Anwender auf diese Icone, so wird ein Inputscript gestartet, welches die Werksverfügbarkeit aufruft. (Überspringen von 5 Dialogschritten)

Auf den ersten Blick scheint das Beispiel noch einfach. Es waren jedoch noch folgende Probleme zu lösen :

  • Der Pushbutton kann nicht verwendet werden, da eine Zeile von einem TableControl nur 0.95 Zeilen hoch ist
  • Die Iconen sollen nur dort erscheinen, wo auch wirklich ein Material eingegeben wurde
  • Je nachdem auf welcher Registerkarte man ist, ist die Position des TableControl unterschiedlich

Dynamisches setzen von Iconen

Drückt der Anwender nun die Icone so kommt er über das Inputscript direkt auf die Werksverfügbarkeit. Dabei werden folgende Dialogschritte übersprungen :

  1. markieren der entsprechenden Zeile
  2. Aufrufen der Funktion Verfügbarkeitsprüfung
  3. Drücken Taste „Andere Werk“
  4. Alle Werke markieren
  5. Werke prüfen

Werksverfügbarkeit

sapmv45a.d4100.txt

// Beispiel zum markieren von Zeilen mit Icone
// 14.03.2004 / Gérald Koehn / Koehn Consulting

if Q[Transaction=VA01]
if Q[Page=Verkauf] or Q[Page=Positionsübersicht]
// Tablecontrol um 3 Spalten nach rechts verschieben
  pos T[Alle Positionen] T[Alle Positionen]+(0,3)
// Tablecontrol verkleinern, so dass nicht durch die
// Verschiebung ein Scrollbar entsteht
  Tablewidth T[Alle Positionen] 135
// Abfragen der Tabellenattribute insbesondere um festzustellen welches die
// letzte sichtbare Zeile ist
  GetTableAttribute T[Alle Positionen] LastVisibleRow=LVisRow
     set V[i] 1
if Q[Page=Positionsübersicht]
     set V[k] 10.5    // Koordinate von erster Position
endif
if Q[Page=Verkauf]
     set V[k] 17.5    // Koordinate von erster Position
endif

    label Marker_VA01
    set V[l] "&cell[Alle Positionen,E,&V[i]]"
    set V[N_Postyp] "&cell[Alle Positionen,Ptyp,&V[i]]"
    set V[N_Zeile] &[LVisRow] + 1  // N_Zeile = ausgefüllte
    if V[i<&V[N_Zeile]]
      if  V[l=X] and not V[N_Postyp=TAP]
        Image  (&[k],0) "Werk.gif" Input="U[N_Pos]:&V[i];OK:/0,Process=werke_pruefen.txt"
      endif
      set V[i] &[i] + 1
 // Koordinate um nur 0.95 erhöhen, da die Höhe einer Zeile in einem Tablecontrol nicht 
 // ganz mit einer Koordinate auf dem Dynpro entspricht
      set V[k] &[k] + 0.95 Decimals=2 decimalseparator="."
      goto Marker_VA01
    endif           // Einteilung markiert und kein Positionstyp TAP
  endif             // Page = Verkauf oder Positionsübersicht
endif               // Transaction VA01

werke_pruefen.txt

// Beispiel InputScript für direkten Aufruf von Werksverfügbarkeit
// Als Parameter wird die entsprechende Zeilennummer im TableControl übergeben

Parameter N_Pos
 
 set cell[Alle Positionen,0,&U[N_Pos]] "X"
  
// Terminauftrag anlegen: Übersicht 
Screen SAPMV45A.4001
  Enter "=PORE"     // Verfügbarkeitsprüfung Position
 
// Terminauftrag: Verfügbarkeitskontrolle 
Screen SAPLATP4.0500
  Enter "/17"       // Andere Werke
 
// Werksauswahl 
Screen SAPLATP4.0600
  Enter "/9"        // Alle markieren
 
// Werksauswahl 
Screen SAPLATP4.0600
  Enter "/5"        // Werke prüfwn

Download: Werk.zip
(Graphik von Werk und zughörigen Scripte, 1.00 KB)

Empfehlen