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 ) »
tach zusammen,

ich hab mir ne loop schleife geschrieben die mir anhand von ner blnr einträge aus meiner itab löschen soll.
es sollen mind 20 blnr zu einer vtref vorhanden sein, wobei nur die ersten 12 positionen der blnr für den loop genutzt werden sollen

Code: Alles auswählen.

FORM itab_check.
  SORT itab BY vtref blnr.

  LOOP AT itab.
    AT NEW vtref.
      CLEAR lf_merkblnr.
      lf_merkblnr = itab-blnr .
      CLEAR counter.
      REFRESH wa_itab.
    ENDAT.
    IF itab-blnr(12) EQ lf_merkblnr(12).
      counter = counter + 1.
      APPEND itab TO wa_itab.
    ENDIF.
    AT END OF vtref.
      IF counter LT 20.
        DELETE itab WHERE vtref = itab-vtref.
      ENDIF.
    ENDAT.
  ENDLOOP.

ENDFORM.
so mein problem is jetzt dass des feld lf_merkblnr leer bleibt und somit alle einträge aus meiner itab gelöscht werden.

hoff mal einer von euch weiß woran des liegen kann.
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 ) »
Guten Moregn Tobi,

da die Belegnummer nach deiner VTREF kommt, ist sie zum Zeitpunkt AT NEW leer. Dies hängt mit den Gruppenwechseln zusammen.

2 Möglichkeiten:

1) Das Feld BELNR muss vor VREF in der Tabelle definiert sein
2) AT NEW vergessen und den Gruppenwechsel manuell machen, da du den Wert ja sowie so gemerkt hast, ist dies auch kein größerer Aufwand.

MfG

Thomas

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

hab meine itab umgestellt und jetzt klappt's.
Danke für den Tipp!! :)

AT NEW hab ich mal drin gelassen, da mir jetzt auf die schnelle net eingefallen is wie ich den Gruppenwechsel manuell mache. ;)
Außerdem is des ansich ne ganz nette Anweisung.
gruß tobi


Wer fehler Findet, darf se behalten :D

Beitrag von TobiB (ForumUser / 38 / 0 / 0 ) »
so ich bin grad nochmal auf ein problem gestroßen, was mit der AT NEW anweiunsung zusammenhängt.
da bei AT NEWi ja auch die felder links von vtref überprüft werden und die blnr aus 16 zeichen, 12 plus nen laufindex, besteht, da dieser laufindex sich ja ändert, geht AT NEW also davon aus dass es sich um nen gruppenwechsel handelt obwohl vtref gleich bleibt.

ich brauch also nen gruppenwechsel der sich nur auf vtref bezieht und sonst nix!

wie kann ich denn den gruppenwechsel manuell druchführen? denn des würd mein problem lösung, mir fällt dazu aber nix ein :?
gruß tobi


Wer fehler Findet, darf se behalten :D

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

na so schwer ist das nun auch nicht,

data: l_vref_save type vtref.

loop at itab

if l_vtref_save ne itab-vref.
l_vtref_save = itab-vref.

CLEAR lf_merkblnr.
lf_merkblnr = itab-blnr .
CLEAR counter.
REFRESH wa_itab.
endif.

:
:
endloop.

Ich denke nun kannst du es alleine.

Thomas

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

ich hab des ganze problem schon selbst gelöst, hab einfach meine itab n bissel modifziert. dann war des mit dem AT NEW auch kein problem mehr. 8)
hab's auch mal mit ON CHANGE OF versucht nur des hat dann gar net geklappt.

trotzdem danke für die antwort :wink:

Code: Alles auswählen.

 SORT itab BY  xblnr gpart vtref.

  LOOP AT itab.
    AT NEW vtref.
      CLEAR counter.
      CLEAR lf_merkblnr.
      lf_merkblnr = itab-xblnr.
      wa_gpart = itab-gpart.
      wa_vtref = itab-vtref.
    endat.
      IF itab-blnr(12) EQ lf_merkblnr.
        counter = counter + 1.
      ENDIF.
      AT END OF vtref.
        IF  counter LT count.
          DELETE itab WHERE vtref = wa_vtref AND blnr(12) = lf_merkblnr
  AND gpart = wa_gpart.
        ENDIF.
      ENDAT.

    ENDLOOP.
gruß tobi


Wer fehler Findet, darf se behalten :D

Beitrag von TWP (Specialist / 445 / 0 / 1 ) »
Hi Tobi,

wenn ich richtig liege, funktioniert ON CHNAGE nur inner halb von SELECT - ENDSELECT.

Dort habe ich es auch schon benutzt.

Thomas

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo zusammen,

der Befehl ON CHANGE steht immer zur Verfügung.
Im Besonderen ist daran zu denken, dass er im Gegensatz zu den AT-Befehlen im LOOP keine Gruppenwechsel sicher erkennen kann.

Siehe dazu die SAP-Hilfe
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Seite 1 von 1

Vergleichbare Themen

7
Antw.
2462
Views
Loop-Problem
von TobiB » 17.12.2007 13:15 • Verfasst in ABAP® Core
3
Antw.
2695
Views
Problem mit Loop und einer Liste
von ostpower » 14.06.2010 16:57 • Verfasst in ABAP® für Anfänger
1
Antw.
1404
Views
4
Antw.
3747
Views
LOOP in einem LOOP
von Bjuti » 10.09.2013 15:18 • Verfasst in ABAP® für Anfänger
34
Antw.
7094
Views
ein loop
von user2008 » 19.07.2017 10:50 • 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.