Code: Alles auswählen.
*die select Abfrage
*wie erfolgt nun die Anpassung der Loop-Schleife
SELECT * FROM tabelle INTO CORRESPONDING FIELDS OF TABLE interne_tabelle
WHERE Rech_Nr IN sel_Feld.
SORT itab by customid ascending.
LOOP -> F1
AT {NEW|END OF|FIRST|LAST} -> F1
ENDLOOP.
@ereglam, @haubi: da habt Ihr bestimmt recht, aber gerade für Anfänger (die, die wirklich erst sehr kurz mit ABAP zu tun haben) sind solche Anweisungen:ereglam hat geschrieben:Wenn wir Dir immer alles vorkauen, wirst Du es nie wirklich verstehen...
schon sehr kryptisch.Haubi hat geschrieben:LOOP -> F1
AT {NEW|END OF|FIRST|LAST} -> F1
AT NEW f.
...
Die zugehörige Folge von Anweisungen wird genau dann durchlaufen, wenn das Teilfeld f oder ein (links) vor f definiertes Teilfeld in der aktuellen LOOP-Zeile einen anderen Wert hat als in der vorangehenden (AT NEW) bzw. nachfolgenden (AT END OF) Tabellenzeile.
(Wenn irgendwas dagegenspricht, den Tabellenaufbau entsprechend zu gestalten, muss man wohl den Gruppenwechsel selbst realisieren.)Die Gruppenstufenstruktur bei internen Tabellen ist statisch. Sie entspricht genau der Reihenfolge der Spalten der internen Tabelle (von links nach rechts). Insbesondere ist die Gruppenstufenstruktur bei internen Tabellen unabhängig davon, nach welchen Kriterien die interne Tabelle sortiert wurde.
Code: Alles auswählen.
TYPES:
BEGIN OF struct,
* Felder, die hier stehe dürfen sich nicht innerhalb einer Rechnungsnummer ändern
rechnungsnr TYPE belnr,
* weitere Felder, deren Inhalt sich ändern darf
END OF struct.
DATA:
itab TYPE TABLE OF struct WITH HEADER LINE.
SORT itab by rechnungsnr ascending.
LOOP AT itab INTO wa_itab .
AT NEW rechnungsnr.
NEW-PAGE.
WRITE / wa_itab-rechnungsnr.
ENDAT.
AT END OF rechnungsnr.
WRITE / 'Test'.
ENDAT.
ENDLOOP.
Code: Alles auswählen.
NUMMER RGNR Text
1 4711 Hansi
1 4711 Bansi
1 4712 Hansi
1 4712 Bansi
Code: Alles auswählen.
NUMMER RGNR Text
1 4711 Hansi
2 4711 Bansi
1 4712 Hansi
2 4712 Bansi
Code: Alles auswählen.
RGNR NUMMER Text
4711 1 Hansi
4711 2 Bansi
4712 1 Hansi
4712 2 Bansi
Code: Alles auswählen.
DATA: z_rgnr LIKE itab-rgnr.
SORT itab BY rgnr.
LOOP AT itab.
* Beim ersten Mal den Vergleichswert setzen
IF z_rgnr IS INITIAL.
z_rgnr = itab-rgnr.
ENDIF.
IF z_rgnr <> itab-rgnr.
* Coding für Gruppenwechsel
WRITE: / 'Fertig mit Rechnung:', z_rgnr.
WRITE: / 'Beginne mit Rechnung:', itab-rgnr.
* Nächste Rechnungsnummer
z_rgnr = itab-rgnr.
ENDIF.
ENDLOOP.
* für letzten Wert: Gruppenendeverarbeitung
IF not z_rgnr IS INITIAL.
WRITE: / 'Fertig mit Rechnung:', z_rgnr.
ENDIF.