Anfang des InhaltsbereichsVorgehensweisen Controller search.do für die Suche anlegen Dokument im Navigationsbaum lokalisieren

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 (StrukturlinkWeiterentwicklung des Buchladens) das messages-Objekt verwendet (vgl. StrukturlinkÄ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

 

Diese Grafik wird im zugehörigen Text erklärt

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

 

 

Ende des Inhaltsbereichs