Anfang des InhaltsbereichsVorgehensweisen Custom-Rendering für die Autorenspalte erarbeiten Dokument im Navigationsbaum lokalisieren

Verwendung

Ein Eintrag In der Ergebnisliste der gefundenen Bücher ist vom Typ BSBOOKDATA (vgl.StrukturlinkDatenmodell für die Bookshop-Tutorials). Das Feld AUTHORS ist also selbst wieder vom Tabellentyp BSAUTHORS, weil ein Buch ja einen oder auch mehrere Autoren haben kann.

Das Rendering eines HTMLB-TableView geschieht auf einmal (während des DO_AT_END-Aufrufs), es gibt keine Interaktion mit inneren BSP-Elementen wie etwa einzelnen Tabellenfeldern. Für diese Anwendung ist es nun aber notwendig, dass das BSP-Element mit der Anwendung kommuniziert und das Rendering für die Autorenspalte authors u einem späteren Zeitpunkt durchführt. Hierzu steht für das TableView ein Iterator-Interface (IF_HTMLB_TABLEVIEW_ITERATOR) zur Verfügung, das von jeder Klasse in der BSP-Anwendung, in unserem Fall der Controller-Klasse, implementiert werden kann. Dann kommuniziert das BSP-Element <htmlb:tableView> zu bestimmten Zeitpunkten mit der Anwendung.

Vorgehensweise

Zunächst müssen Sie in der Controller-Klasse CL_TUT_MVC_RESULT_CO das Interface IF_HTMLB_TABLEVIEW_ITERATOR implementieren. Tragen Sie also dieses in der Registerkarte Interfaces der Klasse ein.

Da Sie bei jedem Tabellenfeld informiert werden möchten und im Falle, dass es sich um die Autoren-Spalte handelt, das Rendering programmieren wollen, müssen Sie die Methode RENDER_CELL_START verwenden.

Überschreiben Sie also die Methode IF_HTMLB_TABLEVIEW_ITERATOR~RENDER_CELL_START der Controller-Klasse CL_TUT_MVC_RESULT_CO zu result.do wie folgt.

method IF_HTMLB_TABLEVIEW_ITERATOR~RENDER_CELL_START .

  IF NOT ( p_column_key = 'AUTHORS' AND p_edit_mode IS INITIAL ).

    RETURN.

  ENDIF.

  FIELD-SYMBOLS: <row> TYPE ANY, <col> TYPE ANY.

  DATA: authors TYPE AUTHOR_TAB,

        author TYPE bsauthors.

  ASSIGN p_row_data_ref->* TO <row>.

  ASSIGN COMPONENT p_column_key OF STRUCTURE <row> TO <col>.

  authors = <col>.

  DATA: html_bee TYPE REF TO CL_BSP_BEE_HTML.

  CREATE OBJECT html_bee.

  LOOP AT authors INTO author.

    html_bee->ADD( html1 = author-authfnam

                   html2 = ‘&nbsp;‘

                   html3 = author-authlnam

                   html4 = ‘<br>‘ ).

  ENDLOOP.

  p_replacement_bee = html_bee.

endmethod.

Wenn also eine andere als die Autorenspalte gerendert werden soll, wird kein Coding durchlaufen.

Für die Autorenspalte wird ein HTML-BEE BSP Element Expression) erzeugt und alle Einträge der internen Autorentabelle werden im HTML-Format in das BEE hineingeschrieben.

Hintergrunddokumentation BSP Element Expression (BEE)

Das Interface IF_BSP_BEE stellt Ihnen durch die Methoden RENDER() und RENDER_TO_STRING() ein Werkzeug zur Verfügung, um selbst das Rendering zu programmieren.

Das Interface wird von einigen Klassen implementiert, zum Beispiel von der hier verwendeten Klasse CL_BSP_BEE_HTML zur Ausgabe von HTML-Daten.

Ergebnis

Nun werden in der Autorenspalte die Elemente der internen Tabelle ausgegeben:

Diese Grafik wird im zugehörigen Text erklärt

Ende des Inhaltsbereichs