Problem mit Loop und einer Liste

Getting started ... Alles für einen gelungenen Start.
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Problem mit Loop und einer Liste

Beitrag von ostpower (ForumUser / 48 / 1 / 0 ) »
Hallo zusammen,

ich habe mehere loops verschachtelt, mit diesen loops bastel ich mir eine zeile zusammen, die ich dann in eine liste speichere.
Jetzt hab ich ein problem, da ich bei einem loop mehrere durchläufe habe, und diese eigentlich auch einzelne zeilen wären, da das append zur liste aber außerhalb dieses loops liegt, nimmt er nur den wert aus dem letzten loop-durchgang und schreibt diesen in die liste.

Um den Code zu verstehen, hier mal ein Beispielauszug aus der zu loopenden tabelle(Sind keine Echtdaten, also auch die anzahl der zeichen stimmt nicht)

NR---------TEXTID---------TEXT
___________________________________________________________
123--------00000-----------123 test 123
123--------00001-----------comment type=3 test=3 test=3 unr=879456
123--------00002-----------<segment>
123--------00003-----------Das ist ein test
123--------00004-----------</segment>
333--------00000-----------123 test 123
333--------00001-----------comment type=3 test=3 test=3 unr=548754
333--------00002-----------<segment>
333--------00003-----------Das ist ein neuer test
333--------00004-----------</segment>


Das problem ist jetzt, durch das loopen nach der textid=00001 bekommt er hier ja 2 ergebnisse. er sollte daher in die liste die beiden zeilen schreiben:
123--------das ist ein test----------879456
333--------das ist ein neuer test---548754

er schreibt aber:
123--------das ist ein test----------548754
333--------das ist ein neuer test---548754


Hier mal der code:

Code: Alles auswählen.

LOOP AT itable INTO zeile.

    IF flag EQ 'X'.
      IF zeile-text NE '</SEGMENT>'.
        liste1-inr = zeile-nr.
        liste1-notiz = zeile-text.

        LOOP AT itable INTO zeile2 WHERE textid = '00001'.
          liste1-unr = zeile2-text+50(8).

          CREATE OBJECT expertref
              EXPORTING
                  nr = zeile-nr.
          CLEAR: wa_expert.
          LOOP AT expertref->expertlist INTO wa_expert WHERE pernr = liste1-unr.

            liste1-unr = wa_expert-pernr.
            liste1-name = wa_expert-name.
            liste1-mstbr = wa_expert-mstbr.

          ENDLOOP.
          IF sy-subrc EQ '4'.
            liste1-inr = ''.
            liste1-notiz = ''.
            liste1-unr = ''.
            liste1-name = ''.
            liste1-mstbr = ''.
          ENDIF.

        ENDLOOP.

        LOOP AT itable INTO zeiledate WHERE textid = '00001' AND nr = zeile-nr AND text+17(1) = '9'.
          liste1-date = zeiledate-text+24(8).
        ENDLOOP.
        APPEND liste1.

      ENDIF.
    ENDIF.

    IF zeile-text CS '<SEGMENT'.
      flag = 'X'.
    ELSEIF  zeile-text = '</SEGMENT>'.
      CLEAR flag.
    ENDIF.

  ENDLOOP.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Problem mit Loop und einer Liste

Beitrag von casman (Specialist / 420 / 1 / 63 ) »
Servus ostpower,

sorry, aber dein Quellcode ist sowas von inperformant...du loopst immer über alles und das immer wieder.
Versuche entweder, deine Loops nach dem finden deines Wertes per EXIT zu verlassen, merke dir im ersten Loop den aktuellen Index und loope im zweiten Loop nur per LOOP AT .... FROM index. nur ab der relevanten Position oder versuche gleich, dir zeitfressende Loops zu ersparen.

Bsp:

Code: Alles auswählen.

LOOP AT itable INTO zeile.
l_index = sy-tabix.
LOOP AT itable INTO zeile2 WHERE textid = '00001' from l_index.
...
EXIT.
ENDLOOP.

Re: Problem mit Loop und einer Liste

Beitrag von ostpower (ForumUser / 48 / 1 / 0 ) »
Also ich wollte das jetzt mit dem tabix machen. Nur das problem ist, dass er l_index ja bei jedem durchlauf ändert, also im 2.durchlauf hat er l_index=2, das wäre auch die zeile in der beim 2.loop gehn soll, aber bis ich in den 2.loop komme, macht er noch zwei weitere durchläufe des ersten loops. l_index steht dann schon auf 4.
Es müsste also nochmal geprüft werden ob textid=00001 und dann soll er l_index einfrieren, also nicht beim nächsten durchlauf ändern. Wie könnte ich das machen? Vielleicht über eine flag?

Re: Problem mit Loop und einer Liste

Beitrag von ostpower (ForumUser / 48 / 1 / 0 ) »
ostpower hat geschrieben:Also ich wollte das jetzt mit dem tabix machen. Nur das problem ist, dass er l_index ja bei jedem durchlauf ändert, also im 2.durchlauf hat er l_index=2, das wäre auch die zeile in der beim 2.loop gehn soll, aber bis ich in den 2.loop komme, macht er noch zwei weitere durchläufe des ersten loops. l_index steht dann schon auf 4.
Es müsste also nochmal geprüft werden ob textid=00001 und dann soll er l_index einfrieren, also nicht beim nächsten durchlauf ändern. Wie könnte ich das machen? Vielleicht über eine flag?
Es hat funkioniert. Ich hab noch ein flag eingebaut, der gesetzt wird, wenn die textid=00001 ist. Nur wenn flag gesetzt ist, wird auch tabix gespeichert.

Seite 1 von 1

Vergleichbare Themen

7
Antw.
4268
Views
SAP Script - Liste erzeugen über Loop?
von cali » 18.07.2007 10:05 • Verfasst in ABAP® Core
7
Antw.
2467
Views
Loop-Problem
von TobiB » 17.12.2007 13:15 • Verfasst in ABAP® Core
7
Antw.
2795
Views
Loop-Problem
von TobiB » 11.01.2008 14:30 • Verfasst in ABAP® Core
1
Antw.
1484
Views
2
Antw.
1405
Views
Sprachabhängiges Problem (Liste)
von MarkusW » 17.10.2007 16:53 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Aktuelle Forenbeiträge

Regex in where
vor 5 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 18 Stunden von Bright4.5 3 / 1487

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Regex in where
vor 5 Stunden von edwin 7 / 163
Daten an Tabelle binden
vor 18 Stunden von Bright4.5 3 / 1487

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822