Was soll das heissen?Kann ich i-wie prüfen
Welche Ansätze hast du denn schon probiert?patlau hat geschrieben:aber verstehe das nicht so ganz kannst du es beispielhaft erläutern bitte? Sortierung muss allerdings absteigend bleiben
Code: Alles auswählen.
gegeben.: aufsteigend nach Key sortierte interneTabelle
Schleife über interneTabelle
Für jeden Satz:
Wenn kein neues Objekt:
Wenn aktueller Zähler <> (gemerkten Zähler + 1)
dann: erzeuge fehlenden Satz
merke aktuellen Zähler
Wenn neues Objekt:
Wenn aktuelle Zähler <> 1
dann erzeuge solange neue Sätze bis aktueller Zähler erreicht
merke aktuellen Zähler
patlau hat geschrieben:Wenn ich es aufsteigend mache, wie lese ich dann den letzten Satz aus?
Was willst du denn mit gmerkter Zähler - 1 erreichen?patlau hat geschrieben:Wenn aktueller Zähler <> (gemerkten Zähler - 1) machen?
Wie sorge ich für jeden Satz?
Und wie erzeuge ich dann den fehlenden SAtz?
Code: Alles auswählen.
report.
data: begin of wa1object,
nummer type i,
end of wa1object.
data: wa2object like wa1object.
data: itobject like standard table of wa1object.
data: l_tabix like sy-tabix.
"füllen itab mit lücken
do 100 times.
compute sy-fdpos = sy-index mod 4.
check sy-fdpos ne 0.
move sy-index to wa1object-nummer.
append wa1object to itobject.
enddo.
sort itobject descending by nummer.
"ermitteln der lücken
describe table itobject lines l_tabix.
do.
clear: wa1object, wa2object.
read table itobject into wa1object index l_tabix.
if sy-subrc eq 0.
subtract 1 from l_tabix.
read table itobject into wa2object index l_tabix.
endif.
"ausgeben der lücken
add 1 to wa1object-nummer.
while wa1object-nummer lt wa2object-nummer.
write: /01 'Fehlende Nummer', wa1object-nummer.
add 1 to wa1object-nummer.
endwhile.
if wa2object-nummer is initial.
exit.
endif.
enddo.
Code: Alles auswählen.
SORT itobject DESCENDING BY nummer.
"ermitteln der lücken
DESCRIBE TABLE itobject LINES l_tabix.
DO.
CLEAR: wa1object, wa2object.
READ TABLE itobject INTO wa1object INDEX l_tabix.
IF sy-subrc EQ 0.
SUBTRACT 1 FROM l_tabix.
READ TABLE itobject INTO wa2object INDEX l_tabix.
ENDIF.
"ausgeben der lücken
ADD 1 TO wa1object-nummer.
WHILE wa1object-nummer LT wa2object-nummer.
WRITE: /01 'Fehlende Nummer', wa1object-nummer.
ADD 1 TO wa1object-nummer.
ENDWHILE.
IF wa2object-nummer IS INITIAL.
EXIT.
ENDIF.
ENDDO.