Show TOC

Schritt 1 a) Implementierung von <sf:SimpleFormItem>Locate this document in the navigation structure

Verwendung

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:

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