Iterator: Interface IF_HTMLB_TABLEVIEW_ITERATOR 
Der Iterator ist ein Instanzobjekt, der das Interface IF_TABLEVIEW_ITERATOR implementiert. Mit dem Iterator können Sie komplexe Logik für <htmlb:tableView>-Elemente erstellen, beispielsweise für die Evaluierung einer TableView-Spalte und Berechnung des Wertes einer anderen Spalte.
Dieses Iterator-Interface ermöglicht es also, dass ein <htmlb:tableView> BSP-Element nicht auf einmal gerendert wird, sondern dass etwa bei jedem Feld oder jeder Spalte der Tabelle mit der Anwendung kommuniziert wird, die dann Einfluss auf das Rendering dieser Zelle oder Zeile oder Spalte nehmen kann.
Da das <htmlb:tableView> selbst keine Anwendungslogik enthält, erlaubt der Iterator dem TableView sehr flexibles Daten-Handling. Das Interface sollte von der entsprechenden Applikationsklasse der BSP-Applikation oder – bei Verwendung von Controllern – von der Controller-Klasse implementiert werden.
Das Interface IF_HTMLB_ITERTATOR enthält 3 Callback-Methoden. Beim Ausführen Ihrer BSP (in die Ihr eigenes Iterator-Objekt eingebettet ist) mit <htmlb:tableView iterator="<%= my_iterator %>" ... /> ruft der Iterator jedes Mal, wenn er auf ein <htmlb:tableView/>-Element oder ein <htmlb:tableViewColumns/>-Element trifft, die drei Interface-Methoden zurück.
In der Transaktion SE24 erstellen Sie Ihre eigene Klasse, die das Interface IF_HTMLB_TABLEVIEW_ITERATOR implementiert.
Instantiieren Sie Ihre Iterator-Klasse.
Beachten Sie hierbei, dass Sie die Instantiierung über die Anwendungklasse oder die Controller-Klasse vornehmen.
Betten Sie Ihre Iterator-Instanz in das <htmlb:tableView iterator=<%= my_iterator %> ... />-Element ein.
Die drei Methoden von IF_HTMLB_TABLEVIEW_ITERATOR werden aufgerufen, d.h. zurückgerufen. Sie können sie nach Bedarf implementieren.
Minimales Beispiel-Coding für die Implementierung der Methode render_cell_start:
Syntax
method if_htmlb_tableview_iterator~render_cell_start.
* html_bee object is responsible to modify HTML code
data: html_bee type ref to cl_bsp_bee_html.
data: col_value type string.
data: html_str type string.
* <row> is a structure of table
field-symbols: <row> type any, <col> type any.
p_column_key has a name of each table column
if p_column_key = 'COLUMN_NAME'.
* conventional logic to extract column value
assign p_row_data_ref->* to <row>.
assign component p_column_key of structure <row> to <col>.
col_value = <col>.
create object html_bee.
if col_value = 'CONDITION_YOU_WANT'.
* do something interesting
html_str = "<HTML_code_you_want_to_generate_dynamically />"
endif.
* set HTML code you want...add() can have up to 10 params for concatenation
html_bee->add( html = html_str ).
p_replacement_bee = html_bee.
endif.
endmethod.
Siehe auch:
-
-
-
-
Signatur |
||
Beschreibung |
Diese Methode wird zu Beginn des Renderings des TableViews aufgerufen. Diese Methode enthält wichtige Importparameter, die Informationen über das aktuelle TableView bereitstellen. Die Zeilendefinitionen des TableViews werden übergeben. Hier kann die Anwendung Einfluss nehmen. Überschreiben Sie also diese Methode, wenn Sie hier Änderungen vornehmen wollen. |
|
Parameter |
P_TABLEVIEW_ID |
Importparameter für die ID |
P_COLUMN_DEFINITIONS |
Changing-Parameter für Spalten im TableView |
|
P_OVERWRITES |
Changing-Parameter für das Überschreiben bestimmter Zellen im TableView |
|
Rückgabewerte / Ausnahmen |
- |
|
Signatur |
||
Beschreibung |
RENDER_ROW_START wird am Anfang jeder Zeile aufgerufen. Diese Methode enthält wichtige Importparameter, die nützliche Informationen über die jeweilige Zeile bereitstellen. Diese Methode verwenden Sie, wenn Sie zu Beginn jeder Zeile auf das Rendering einwirken möchten. Sie können damit Zeilen filtern, oder zusätzliche Informationen zum Rendering einfügen. Dies ist besonders praktisch für Tabellen, bei denen nicht alle Zeilen ausgegeben werden. Sie können die Rendering-Informationen genau den Zeilen zukommen lassen, die auch gerendert werden. |
|
Parameter |
P_TABLEVIEW_ID |
Importparameter für die ID |
P_ROW_INDEX |
Importparameter für den Zeilenindex |
|
P_ROW_KEY |
Importparameter für den Zeilenschlüssel |
|
P_ROW_DATA_REF |
Importparameter für die Referenz auf die Daten einer Zeile |
|
P_EDIT_MODE |
Importparameter für ein Ankreuzfeld |
|
Rückgabewerte / Ausnahmen |
P_SKIP_ROW |
Ankreuzfeld |
Signatur |
||
Beschreibung |
RENDER_CELL_START wird am Anfang jeder Spalte (Zelle) aufgerufen, also vor dem Rendering jedes einzelnen Tabellenfeldes. Sie verwenden diese Methode, um Spalten dynamisch zu rendern. Über die Importparameter erhalten Sie Zeilen- und Spaltenindex sowie eine Referenz auf die aktuelle Zeile. So können Sie für eine bestimmte Zelle ein Custom-Rendering definieren. Um eine neue Rendering-Engine zu definieren, verwenden Sie den Parameter p_replacement_bee. Dann wird das <htmlb:tableView>-Element diesen anwendungsspezifischen Renderer für diese Zelle aufrufen. |
|
Parameter |
P_TABLEVIEW_ID |
Importparameter für die ID |
P_CELL_ID |
IImportparameter für die Zellen-ID |
|
P_CELL_BINDING |
Importparameter für den Bindingnamen |
|
P_ROW_INDEX |
Importparameter für den Zeilenindex |
|
P_ROW_KEY |
Importparameter für den Zeilenschlüssel |
|
P_COLUMN_INDEX |
Importparameter für den Spaltenschlüssel |
|
P_COLUMN_KEY |
Importparameter für den Spaltenschlüssel |
|
P_ROW_DATA_REF |
Importparameter für die Referenz auf die Daten einer Zeile |
|
P_EDIT_MODE |
Importparameter für ein Ankreuzfeld |
|
P_REPLACEMENT_BEE |
Exportparameter für eine BSP-Extension-Expression (BEE) |
|
P_STYLE |
Changing-Parameter für <td style="...">. Bei der Verwendung von Design2003 können Sie über P_STYLE die Hintergrundfarbe einer Zelle mit Hilfe von vordefinierten Farben ändern (P_CLASS wird im Design2003 nicht mehr ausgewertet). Dazu müssen Sie das Attribut cellDesign in P_STYLE verwenden
(z.B. Mögliche Werte von cellDesign sind
Ein Beispiel zur Verwendung von cellDesign finden Sie in der BSP-Applikation sbspext_table, Seite TableViewIterator.bsp, Iterator-Klasse CL_SBSPEXT_ITERATOR, Methode IF_HTMLB_TABLEVIEW_ITERATOR~RENDER_CELL_START, Zeile 50:
Ende des Codes
Beachten Sie, dass die Angabe von cellDesign im Design2002 keinerlei Auswirkungen hat. Falls Sie dort die Hintergrundfarbe ändern möchten, müssen Sie dies wie bisher gewohnt über CSS-Attribute durchführen. Umgekehrt ist es nicht mehr möglich, im Design2003 Style-Angaben für die Zelle außer durch cellDesign selbst zu setzen. Ende des Hinweises. |
|
P_CLASS |
Changing-Parameter für <td class="...">.
Beachten Sie, dass P_CLASS im Design2003 nicht mehr ausgewertet wird. Ende des Hinweises. |
|
P_ISREADONLY |
Changing-Parameter für <td readonly>. |
|
Rückgabewerte / Ausnahmen |
- |
|