Funktion | Gibt das HTML-Kontextinfo-Objekt zurück | ||||||
Beispiel |
mycontextinfo = s10contextinfo( ). |
||||||
Aufruf |
data: mycontextinfo type ref to /s10/contextinfo. mycontextinfo = s10contextinfo( ). |
||||||
Parameter |
|
||||||
Beschreibung |
Bei der Ausführung einer ABAP-Methode, die der Benutzer durch eine Aktion in
der HTML-Seite ausgelöst hat, kann es erforderlich sein, genauer zu wissen,
worauf sich die Aktion bezieht, z.B. auf welche Zeile in einer Tabellenanzeige.
Zu diesem Zweck liefert ein Aufruf von s10contextinfo() ein Objekt zurück, das folgende Informationen über den Ursprung der Aktion in der HTML-Seite enthält:
s10contextinfo( )->fieldname
s10contextinfo( )->fieldvalue
s10contextinfo( )->tablename
s10contextinfo( )->rownumber
s10contextinfo( )->elementid
s10contextinfo( )->getvalue() <span class="output linkkey" name="kunnr" /> </span> In der HTML-Seite wird dann der aktuelle Wert des Attributs "kunnr" vermerkt
und kann später durch s10contextinfo->getvalue( 'kunnr' ) abgerufen werden.
Dabei werden alle Elemente mit Klasse "linkkey" berücksichtigt, die in der
HTML-Hierarchie auf gleicher Stufe stehen wie das Element, das die Aktion
ausgelöst hat. Am besten fügt man die "linkkey" Elemente gleich hinter dem
jeweiligen Aktionselement ein. Falls als name= in dem linkkey-Element ein Unterobjekt genannt wird, z.B. name="abc.kunnr", wird der Wert aus dem Attribut "kunnr" des Objekts "abc" entnommen, aber unter "kunnr" bereitgestellt, nicht unter "abc.kunnr". Der Grund hierfür ist, daß auch die aufgerufene Methode sich in dem Objekt "abc" befinden kann und der Name Attributname "abc" dort nicht bekannt ist. Als Beispiel für die Verwendung von s10contextinfo() hier eine Kundenliste, in der man pro Zeile über einen Klick die Kundenadresse anzeigen kann. Unterhalb der Adresse haben wir eine Drucktaste angezeigt, mit dem der Benutzer in einen Änderungsdialog für die Adresse verzweigen kann:
Die von der Drucktaste aufgerufene Methode "change_address" benötigt nun die Information, auf welchen Kunden der Liste sich die Aktion bezieht. Deshalb nehmen wir in HTML nach der Definition der Drucktaste die Kundennummer separat mit Klasse "linkkey" auf. Sie wird dort nicht angezeigt, aber der Wert wird automatisch an die aufgerufene Methode übermittelt und kann dort über s10contextinfo() gelesen werden: HTML ABAP
Damit die geänderte Adresse auch gleich in der Liste angezeigt wird, ist noch etwas mehr zu tun, was an anderer Stelle detailliert erklärt wird. Hier der Vollständigkeit halber aber die gesamte Methode inklusiv Update der Listanzeige:
method change_address. Damit wird die geänderte Adresse dann gleich angezeigt:
Statt der Klasse "linkkey" können wir auch die Nummer der Zeile nutzen, in der der Benutzer geklickt hat. Falls alle benötigten Informationen in der Tabellenzeile zu finden sind, in unserem Fall nur die Kundennummer, ist das sogar etwas einfacher:
method change_address. Das zweimalige Lesen der Adresse, einmal für "mykna1" und einmal für das Objekt <c>, das der Listzeile entspricht, ist in beiden Varianten der Methode nötig, da sich sowohl in der direkt angezeigten Tabellenzeile als auch in der Detailinformation (nach Klick auf die Listzeile) Adressinformationen angezeigt werden. Wenn wir zum Beispiel die Zeile <c>->s10databaseread( ). weglassen, würde eine Änderung des Landes nicht in der Liste angezeigt
sondern nur in der Detailinfo zur Listzeile. |
||||||
Komponente | S10 Framework |