Loop-Problem

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
8 Beiträge • Seite 1 von 1
8 Beiträge Seite 1 von 1

Loop-Problem

Beitrag von TobiB (ForumUser / 38 / 0 / 0 ) »
hi,

ich hab da ein kleines Problem mit ner Überprüfung meine itab.
und zwar sollen nur die Partner ausgegeben werden, bei denen zu einer Vertragsnr mind 20 verschiedene Belegnr existieren. wobei bei der Belegnr nur die ersten 12 Stellen überprüft werden soll, da der rest n laufindex is.

hab des ganze mit nem loop und at first/new versucht, des hat aber leider net hingehaun.

hoff mal einer von euch hat da ne gute idee.
gruß tobi


Wer fehler Findet, darf se behalten :D

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


Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Hallo TobiB,

strukturiere doch das Feld Belegnummer in 2 Teile, dann kannst doch zugreifen.

data: begin of bnr,
teil1(10) type c,
teil2(02) type c,
end of bnr.

data: begin of daten,
bukrs type bukrs,
bnr like bnr,
:
:


So könnte man das Problenm sicher auch umgehen.

Wenn das nicht hilft, poste mal die entsprechenden Loops.

MfG

Thomas

Beitrag von TobiB (ForumUser / 38 / 0 / 0 ) »
hi Thomas,

des wär ne möglichkeit.

würd des aber schon gern mit nem loop lösen, da ich des noch für n paar andre auswertungen brauch.

meine tabelle sieht so aus

Code: Alles auswählen.

Partner   Vertrag  ... .... ....   Belegnr
A1234      V1234                       KAF-132456780001
A1234      V1234                       KAF-132456780002
A1234      V2345                       KAF-456755990001
A1234      V4568                       RDT-456855960001
.
.
.
so und es sollen nur die Verträge angezeigt werden bei denen mind 20 unterschiedliche Belegnr vorhanden sind. 0001,0002 etc sagen was über die Belegart aus sind aber unintressant, da die Belegnr ansich bei denen indentisch is, bis halt auf den Laufindex.

so hier mal mein loop

Code: Alles auswählen.

 LOOP AT itab INTO wa_itab.
    AT NEW vtref.
      CLEAR counter.
    ENDAT.
    IF wa_itab-blnr(12) NE itab-blnr(12).
      counter = counter + 1.
      IF counter LE 20.
        DELETE itab index sy-tabix.

      ENDIF.
    ENDIF.
  ENDLOOP.
gruß tobi


Wer fehler Findet, darf se behalten :D

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
TobiB hat geschrieben:hi Thomas,

des wär ne möglichkeit.

würd des aber schon gern mit nem loop lösen, da ich des noch für n paar andre auswertungen brauch.

meine tabelle sieht so aus

Code: Alles auswählen.

Partner   Vertrag  ... .... ....   Belegnr
A1234      V1234                       KAF-132456780001
A1234      V1234                       KAF-132456780002
A1234      V2345                       KAF-456755990001
A1234      V4568                       RDT-456855960001
.
.
.
so und es sollen nur die Verträge angezeigt werden bei denen mind 20 unterschiedliche Belegnr vorhanden sind. 0001,0002 etc sagen was über die Belegart aus sind aber unintressant, da die Belegnr ansich bei denen indentisch is, bis halt auf den Laufindex.

so hier mal mein loop

Code: Alles auswählen.

 LOOP AT itab INTO wa_itab.
    AT NEW vtref.
      CLEAR counter.
    ENDAT.
    IF wa_itab-blnr(12) NE itab-blnr(12).
      counter = counter + 1.
      IF counter LE 20.
        DELETE itab index sy-tabix.

      ENDIF.
    ENDIF.
  ENDLOOP.
Du merkst dir ja gar nicht den vergleichswert?!

Deine ITAB sollte nach vtref und blnr sortiert sein. Vor dem Loop.

Code: Alles auswählen.

 LOOP AT itab INTO wa_itab.
    AT NEW vtref.
      lf_merkblnr = wa_itab-blnr.
      CLEAR counter.
    ENDAT.
    IF wa_itab-blnr(12) EQ lf_merkblnr(12).
      counter = counter + 1.
     append wa_itab to gt_merktab.
    ENDIF.
   AT LAST OF vtref.
      IF counter LE 20.
        DELETE itab from gt_merktab.
     ENDIF.
  ENDAT.
  ENDLOOP.
Danach stehen in der itab nur die Sätze drin die mehr als 20 belege haben zu einem auftrag.

Gruß
Markus

Beitrag von TobiB (ForumUser / 38 / 0 / 0 ) »
ich danke, man merkt halt doch dass ich ABAP erst seit 3 monaten mach.

werd des gleich mal testen, denk aber dass des funtzen wird ;)
gruß tobi


Wer fehler Findet, darf se behalten :D

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
TobiB hat geschrieben:ich danke, man merkt halt doch dass ich ABAP erst seit 3 monaten mach.

werd des gleich mal testen, denk aber dass des funtzen wird ;)
Der Delete Befehl funktioniert möglicherweise nicht auf ältere Systeme. In dem Fall musste über die eine tabelle loopen und satz für satz aus itab löschen.

Viel Spass.

Gruß
Markus

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Nach dem Clear Counter, fehlt ein REFRESH auf die gt_merktab.

gruß

thomas

Beitrag von MarkusW (Specialist / 406 / 5 / 0 ) »
TWP hat geschrieben:Nach dem Clear Counter, fehlt ein REFRESH auf die gt_merktab.

gruß

thomas
stimmt!
Na zum glück schauen hier mehr augen drauf ;)

Gruß
Markus

Seite 1 von 1

Vergleichbare Themen

7
Antw.
2845
Views
Loop-Problem
von TobiB » 11.01.2008 14:30 • Verfasst in ABAP® Core
3
Antw.
2746
Views
Problem mit Loop und einer Liste
von ostpower » 14.06.2010 16:57 • Verfasst in ABAP® für Anfänger
1
Antw.
2176
Views
4
Antw.
4066
Views
LOOP in einem LOOP
von Bjuti » 10.09.2013 15:18 • Verfasst in ABAP® für Anfänger
39
Antw.
8366
Views
Loop
von Kai999 » 27.07.2017 16:15 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

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.