
Controller search.do für die Suche anlegen 
Verwendung
Dieser Controller nimmt eingegebene Daten in die Suchfelder entgegen , führt die Suche durch und speichert die Ergebnisse in einer internen Tabelle.
Vorgehensweise
Legen Sie den Controller
search.do mit der Controller-Klasse CL_BSP_TUT_SEARCH an.Hier müssen Sie nun neben der obligatorischen Methode
DO_REQUEST auch noch die Methoden DO_HANDLE_EVENT sowie DO_HANDLE_DATA überschreiben. Die erste legt fest, was passieren soll, wenn der Benutzer auf den Button search book klickt, die zweite ist für die Verarbeitung der vom Benutzer eingegebenen Daten zuständig.Des weiteren müssen Sie für die Controller-Klasse zusätzliche Attribute anlegen, die Ihnen zur Datenhaltung dienen.
Methode DO_REQUEST
Diese Methode ist sehr einfach, sie instanziiert lediglich den zugehörigen View
search.htm und ruft diesen auf.|
method DO_REQUEST . data: search_view type ref to if_bsp_page. search_view = create_view( view_name = 'search.htm' ). call_view( search_view ). endmethod. |
Methode DO_HANDLE_EVENT
Diese Methode wird aufgerufen, wenn der Benutzer auf den search book-Button drückt.
|
method DO_HANDLE_EVENT . class cl_book_shop definition load. if htmlb_event is bound and htmlb_event->server_event = 'search'. refresh me->isbn_tab . CALL METHOD cl_book_shop=>search_book EXPORTING author = author title = title publisher = publisher ISBN = ISBN keyword = keyword IMPORTING isbn_tab = isbn_tab EXCEPTIONS no_search_parameter = 2 invalid_isbn = 4. endif. if sy-subrc <> 0. case sy-subrc. when 4. me->messages->add_message( condition = 'isbn' message = 'You entered an invalid ISBN - please try again!' severity = me->messages->CO_SEVERITY_ERROR ). when 2. when others. me->messages->add_message( condition = 'internal' message = 'An internal error occurred - please try again!' severity = me->messages->CO_SEVERITY_FATAL_ERROR ). endcase. else. me->messages->reset( ) . endif. endmethod. |
wenn der SEARCH-Button gedrückt wird, wird der Event ‚search‘ ausgelöst (vgl.
View search.htm für die Suche anlegen). Dann werden die Attribute, die durch die Methode DO_HANDLE_DATA gesetzt wurden, in die Such-Methode der Klasse CL_BOOK_SHOP (wie in allen Tutorials) gesteckt. Das Ergebnis ist eine Tabelle mit ISBNs der gefundenen Bücher.Für die Fehlerbehandlung wird wie schon im 4.Tutorial (
Weiterentwicklung des Buchladens) das messages-Objekt verwendet (vgl.
Änderung der Suchseite).
Methode DO_HANDLE_DATA
In dieser Methode werden die Formfelder, die der Benutzer ausgefüllt hat, übernommen. Sie stehen anschließend als Attribute der Controller-Klasse zur Verfügung (s.u.)
|
method DO_HANDLE_DATA . field-symbols: <field> type ihttpnvp. read table form_fields with table key name = 'author' assigning <field>. me->author = <field>-value. read table form_fields with table key name = 'title' assigning <field>. me->title = <field>-value. read table form_fields with table key name = 'publisher' assigning <field>. me->publisher = <field>-value. read table form_fields with table key name = 'keyword' assigning <field>. me->keyword = <field>-value. read table form_fields with table key name = 'isbn' assigning <field>. me->isbn = <field>-value. endmethod. |
Zusätzliche Attribute in der Controller-Klasse
Bei den Attributen müssen Sie also dann noch die Eingabefelder sowie die ISBN-Tabelle, die die Suchfunktion zurückliefert, angeben:
|
Attribut |
Art |
Sichtbarkeit |
Bezugstyp |
Beschreibung |
|
AUTHOR |
Instance Attribute |
Public |
STRING |
Autor Name |
|
TITLE |
Instance Attribute |
Public |
STRING |
Titel des Buchs |
|
PUBLISHER |
Instance Attribute |
Public |
STRING |
Verlag |
|
ISBN |
Instance Attribute |
Public |
STRING |
ISBN |
|
KEYWORD |
Instance Attribute |
Public |
STRING |
Schlagwort |
|
ISBN_TAB |
Instance Attribute |
Public |
ISBN_TAB |
Tabelle für ISBN-Nummern |

Nun können Sie den View für die Büchersuche anlegen:
View search.htm für die Suche anlegen