Schritt 1 a) Implementierung von <sf:SimpleFormItem> 
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:
Syntax
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:
Syntax
<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:
Syntax
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>