Show TOC

Iteration über Element-InhaltLocate this document in the navigation structure

Verwendung

Aktivieren Sie diese Option in der Anzeige Eigenschaften des BSP-Elements, wenn dieses Element wiederholt den eigenen Inhalt durchlaufen, d.h. also eine Schleife implementieren soll.

Vorgehensweise

Zusätzlich zur Aktivierung dieser Option ist die Interface-Methode DO_AT_ITERATION der Elementhandler-Klasse zu redefinieren.

Diese Methode wird jeweils am Ende einer Iteration aufgerufen. Mit Hilfe des Rückgabeparameters RC steuern Sie, ob die Schleife beendet (( RC=CO_ELEMENT_DONE ) oder erneut durchlaufen ( RC=CO_ELEMENT_CONTINUE) wird.

Beispiel

Angenommen Sie möchten einen wiederholten Text-Aufruf mit einem einfachen <do>-Element. Die Anzahl der Iterationen wird durch das entsprechende Attribut howOften (wieOft) festgelegt.

Beispiel:

<loops:do howOften = "10">
   Hello World !
</loops:do>
         

Der Wert des Attributs howOften wird dabei zu Beginn des Element-Aufrufs in der Methode DO_AT_BEGINNING verwendet, um den Schleifenzähler count zu initialisieren:

method IF_BSP_ELEMENT~DO_AT_BEGINNING .
  if howOften > 0.
    count = howOften - 1.
    rc = CO_ELEMENT_CONTINUE.
  else.
    rc = CO_ELEMENT_DONE.
endmethod.
         
Hinweis

In der Methode DO_AT_BEGINNING sollte bereits geprüft werden, ob der Element-Inhalt überhaupt ausgewertet werden soll. Ist dies erst gar nicht der Fall, dann wird DO_AT_ITERATIONübersprungen und nachfolgend die Methode DO_AT_END aufgerufen.

Die Implementierung von DO_AT_ITERATION könnte in diesem Falle etwa so aussehen:

method IF_BSP_ELEMENT~DO_AT_ITERATION .
  if count <> 0.
    count = count - 1.
    rc = CO_ELEMENT_CONTINUE.
  else.
    rc = CO_ELEMENT_DONE.
  endif.
endmethod.
         
Hinweis

Beachten Sie, dass die Methode DO_AT_ITERATION nur dann aufgerufen wird, wenn die Option Iteration Through Element Content (Iteration über Element-Inhalt) als Eigenschaft des Elements explizit vergeben wurde. Siehe auch BSP-Elemente definieren

Der Aufruf von DO_AT_ITERATION erfolgt sobald der Element-Inhalt prozessiert wurde. Die Methode DO_AT_END wird dagegen in jedem Fall und zwar nur einmal aufgerufen; in diesem Falle erfolgt der Aufruf nach Abschluss der Iteration.