Anfang des InhaltsbereichsHintergrunddokumentation Schritt 1 a) Implementierung von <sf:SimpleFormItem>  Dokument im Navigationsbaum lokalisieren

Da das <sf:SimpleFormItem> eine HTML-<table>-Verschalung benötigt, erstellen Sie zuerst das <sf:SimpleForm>-Element, um das korrekte HTML in den Output-Stream zu rendern.

Innerhalb der Klasse CL_BSP_TUTCMPLX_SIMPLE_FORM überschreiben und implementieren Sie die folgenden beiden Methoden:

method IF_BSP_ELEMENT~DO_AT_BEGINNING .

  DATA: out TYPE REF TO IF_BSP_WRITER.
  out = me->GET_PREVIOUS_OUT( ).
  out->PRINT_STRING( '<table>' ).
  RC = CO_ELEMENT_CONTINUE.

endmethod.

 

method IF_BSP_ELEMENT~DO_AT_END .

  DATA: out TYPE REF TO IF_BSP_WRITER.
  out = me->GET_PREVIOUS_OUT( ).
  out->PRINT_STRING( '</table>' ).
  RC = CO_PAGE_CONTINUE.

endmethod.

Für das eigentliche Element <sf:SimpleFormItem> sieht der Rendering-Code folgendermaßen aus:

<tr><td> <htmlb:Label/> </td><td> <htmlb:inputField/> </td></tr>

Für die Implementierung wird das HTML-Coding auf die übliche Art über den aktuellen Output-Writer geholt und in den Datenstrom geschrieben.

 

Die Verarbeigung der <htmlb:*>-Elemente ist ein wenig schwieriger. Da beide Elemente leer sind (d.h. sie haben keinen Body), können sie in einem Schritt verarbeitet werden. Für jedes Element sind die Verarbeitungsschritte wie folgt:

  1. Erzeugung der Elementklasse
  2. Setzen der Attribute
  3. Einsatz der Methode ELEMENT_PROCESS für die abschließende Verarbeitung

Das komplette Coding sieht dann folgendermaßen aus:

method IF_BSP_ELEMENT~DO_AT_BEGINNING .

  DATA:  out TYPE REF TO IF_BSP_WRITER.
  out = me->GET_PREVIOUS_OUT( ).

* <tr><td>
  out->PRINT_STRING( '<tr><td>' ).

* <htmlb:Label/>
  DATA: label TYPE REF TO CL_HTMLB_LABEL.
  CREATE OBJECT label.

  CONCATENATE me->id '_label' INTO label->id.
  label->encode              = 'FALSE'.
  label->for                 = me->id.
  label->wrapping            = 'FALSE'.
  label->text                = me->label.

  m_page_context->ELEMENT_PROCESS( element = label ).

* </td><td>
  out->PRINT_STRING( '</td><td>' ).

* <htmlb:inputField/>

  DATA: inputField TYPE REF TO CL_HTMLB_INPUTFIELD.
  CREATE OBJECT inputField.

  inputField->id             = me->id.
  inputField->description    = me->description.
  inputField->disabled       = me->disabled.
  inputField->firstDayOfWeek = me->firstDayOfWeek.
  inputField->invalid        = me->invalid.
  inputField->maxlength      = me->maxlength.
  inputField->password       = me->password.
  inputField->required       = me->required.
  inputField->showHelp       = me->showHelp.
  inputField->size           = me->size.
  inputField->type           = me->type.
  inputField->value          = me->value.
  inputField->visible        = me->visible.
  inputField->width          = me->width.

  m_page_context->ELEMENT_PROCESS( element = inputField ).

* </td></tr>
  out->PRINT_STRING( '</td></tr>' ).

  rc = CO_ELEMENT_DONE.

endmethod.

Achtung

Beachten Sie, dass keine Änderungen in den eigentlicen Output-Writer-Strukturen vorgenommen wurden. Das Coding wird, genauso wie die verarbeiteten inneren Elemente, auf dem aktuellen Output-Writer ausgeführt. Dies wird automatisch über die Entwicklungsumgebung gesteuert (indirekt über den PROCESS_ELEMENT-Aufruf).

Sie können nun die Seite after.htm testen.
Nun wird die folgende Ausgabe erscheinen:

Diese Grafik wird im zugehörigen Text erklärt

Fahren Sie fort mit Schritt 1 b) Verwendung von <htmlb:SimpleFormItem>

Ende des Inhaltsbereichs