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

Drückt der Anwender nun die Icone so kommt er über das Inputscript direkt auf die Werksverfügbarkeit. Dabei werden folgende Dialogschritte übersprungen :
- markieren der entsprechenden Zeile
- Aufrufen der Funktion Verfügbarkeitsprüfung
- Drücken Taste „Andere Werk“
- Alle Werke markieren
- Werke prüfen

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)
