Show TOC

HintergrundSchritt 1 a) Implementierung von <sf:SimpleFormItem> Dieses Dokument in der Navigationsstruktur finden

 

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 Syntax

  1. 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.
    
    
Ende des Codes

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

Syntax Syntax

  1. <tr>
      <td>
        <htmlb:Label/> 
          </td><td>
        <htmlb:inputField/>
      </td>
    </tr>
    
    
Ende des Codes

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:

Syntax Syntax

  1. 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.
    
    
    
Ende des Codes

Achtung 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).

Ende der Warnung.

Sie können nun die Seite after.htm testen.

Nun wird die folgende Ausgabe erscheinen:

Die Abbildung wird im Begleittext erläutert.

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