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.
4222
Views
SAP Script - Liste erzeugen über Loop?
von cali » 18.07.2007 10:05 • Verfasst in ABAP® Core
7
Antw.
2441
Views
Loop-Problem
von TobiB » 17.12.2007 13:15 • Verfasst in ABAP® Core
7
Antw.
2776
Views
Loop-Problem
von TobiB » 11.01.2008 14:30 • Verfasst in ABAP® Core
1
Antw.
1103
Views
2
Antw.
1391
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

Auslesen TableControl
vor 10 Stunden von DeathAndPain 3 / 220
Wieviel ganze Jahre zwischen zwei Datumsangaben?
vor 10 Stunden von DeathAndPain gelöst 32 / 1264
Vererbung abstrakte Klassen
Gestern von rob_abc 5 / 151
Neue Themen als SAP Entwickler
Gestern von msfox 91 / 9079

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

Auslesen TableControl
vor 10 Stunden von DeathAndPain 3 / 220
Wieviel ganze Jahre zwischen zwei Datumsangaben?
vor 10 Stunden von DeathAndPain gelöst 32 / 1264
Vererbung abstrakte Klassen
Gestern von rob_abc 5 / 151
Neue Themen als SAP Entwickler
Gestern von msfox 91 / 9079

Unbeantwortete Forenbeiträge

Hilfe bei SWEC/SWE2
vor 2 Tagen von retsch 1 / 207