
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:
Erzeugung der Elementklasse
Setzen der Attribute
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.
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>