Show TOC

HintergrundIterator: Interface IF_HTMLB_TABLEVIEW_ITERATOR Dieses Dokument in der Navigationsstruktur finden

 

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.

Prozess

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.

  1. In der Transaktion SE24 erstellen Sie Ihre eigene Klasse, die das Interface IF_HTMLB_TABLEVIEW_ITERATOR implementiert.

  2. Instantiieren Sie Ihre Iterator-Klasse.

    Beachten Sie hierbei, dass Sie die Instantiierung über die Anwendungklasse oder die Controller-Klasse vornehmen.

  3. Betten Sie Ihre Iterator-Instanz in das <htmlb:tableView iterator=<%= my_iterator %> ... />-Element ein.

  4. 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 Syntax

    1. 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.
      
      
    Ende des Codes

    Siehe auch:

    Wie bekomme ich mit dem Iterator eine leere Zelle?

Vererbungshierarchie/ Interfacekomposition
Implementierende Klassen

-

Erweitertes Interface

-

Spezialisierte Interfaces

-

Attribute

-

Methoden
Methode get_column_definitions

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

-

Methode render_row_start

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

Methode render_cell_start

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. P_STYLE="cellDesign:STCD_STANDARD").

Mögliche Werte von cellDesign sind

  • STCD_STANDARD

  • STCD_ALTERNATING

  • STCD_TRANSPARENT

  • STCD_NEGATIVE

  • STCD_POSITIVE

  • STCD_TOTAL

  • STCD_SUBTOTAL

  • STCD_SUBTOTAL_LIGHT

  • STCD_BADVALUE_DARK

  • STCD_BADVALUE_MEDIUM

  • STCD_BADVALUE_LIGHT

  • STCD_CRITICALVALUE_DARK

  • STCD_CRITICALVALUE_MEDIUM

  • STCD_CRITICALVALUE_LIGHT

  • STCD_GOODVALUE_DARK

  • STCD_GOODVALUE_MEDIUM

  • STCD_GOODVALUE_LIGHT

  • STCD_GROUP_HIGHLIGHTED

  • STCD_GROUP_HIGHLIGHTED_LIGHT

  • STCD_KEY_MEDIUM

  • STCD_GROUP_LEVEL1

  • STCD_GROUP_LEVEL2

  • STCD_GROUP_LEVEL3

  • STCD_MARKED

  • STCD_FILTER

  • STCD_POPIN

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:

Syntax Syntax

  1. if design eq '2002'.
      p_style = 'background-color:#BBDDDD'.
      elseif design eq '2003'.
      p_style = 'celldesign:GROUP_HIGHLIGHTED_LIGHT'.
    endif.
    
Ende des Codes

Hinweis Hinweis

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="...">.

Hinweis Hinweis

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

-