# Problem mit rekursiver Funktion in ABAP



## SirNeo (14. Januar 2002)

Hi

Ich hoffe das ist hier an der richtigen Stelle. Ich habe folgendes Problem, ich habe in ABAP eine rekursive Funktion geschrieben, nachdem sich z.B. die Funktion 3 mal selbst aufgerufen hat soll diese ab einer bestimmten Stelle abbrechen und auf die vorherige Funktion (oder aufgerufenen Ebene) zurück gehen. Habe es schon mit dem Befehl EXIT versucht der bricht aber nicht nur eine Ebene ab, sondern alle. Ein Schalter zu setzten klappt auch nicht da die Variable immer wieder überschrieben wird (da immer die gleiche Funktion und somit die gleichen Variablen), und somit nicht zu gebrauchen ist.

Weiß jemand ne Lösung?


----------



## SirNeo (14. Januar 2002)

Habs teilweise hinbekommen, indem ich eine Loop-schleife benutzt habe, und um die Funktion gelegt habe, jetzt wird mit exit die loopschleife beendet und die Funktion auch. Aber jetzt springt der immer zwei Ebenen zurück dabei. Keine Ahnung wieso.
Hier mal das Script zum besseren Verständnis.
Der Aufruf sieht genauso aus.

```
FORM struktur using value(hierar2) like hierarchie.

  loop at tabelle1.
* wenn noch nicht bearbeitet (flag ist bearbeitungsschalter)
    if tabelle1-flag NE '1'.
      kontrolltabelle-hierarchie = '9999'.
*überprüfung ob eintrag schon einmal in ähnlicher art.
      read table kontrolltabelle with key sum = split_summenregeln-sum1.
* Wenn noch nicht geschrieben
      if sy-subrc NE 0.
        write:/ ''.
        leerz = '0'.
* Wenn Wert bereits vorhanden
        if kontrolltabelle-hierarchie NE '9999'.
          hierar2 = kontrolltabelle-hierarchie.
        endif.

        while leerz < hierar2.
          write: ' |--'.
          leerz = leerz + 1.
        endwhile.
        write: tabelle1-sum1.
* schreiben der Einträge in die Kontrolltabelle
        move tabelle1-sum1 to kontrolltabelle-sum.
        move hierar2 to kontrolltabelle-hierarchie.
        append kontrolltabelle.

        loop at tabelle1 where sum1 = tabelle1-sum1
and sum2 = tabelle1-sum2.
          split_summenregeln-flag = '1'.
          modify tabelle1.
        endloop.

* wenn eine Unterposition vorhanden.
        if tabelle1-sum2(1) NE ' '.
          hierar2 = hierar2 + 1.
          perform struktur using hierar2.
         else.
         exit.
        endif.
      endif.
    endif.
  endloop.
ENDFORM.
```

Ich hoffe es kann jemand ABAP der mir auch helfen kann. Anonsten habt ihr mal ABAP gesehen, so nen Mist  .


----------



## SirNeo (17. Januar 2002)

Schade das keiner helfen konnte, habe es aber gerade selber geschafft.


----------

