
Custom-Rendering für die Autorenspalte erarbeiten 
Verwendung
Ein Eintrag In der Ergebnisliste der gefundenen Bücher ist vom Typ
BSBOOKDATA (vgl.
Datenmodell 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 = ‘ ‘ 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.
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:
