Code: Alles auswählen.
loop at lt_ausgabe assigning field-symbol(<ls_ausgabe>).
do.
assign component sy-index of structure <ls_ausgabe> to field-symbol(<ld_feld>).
if sy-subrc ne 0.
exit. "DO-Schleife verlassen
endif.
concatenate '"' <ld_feld> '"' into <ld_feld>.
enddo.
endloop.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
L0w-RiDer
Code: Alles auswählen.
loop at lt_ausgabe assigning field-symbol(<ls_ausgabe>).
clear sy-subrc. "Nur zur Sicherheit
while sy-subrc eq 0.
assign component sy-index of structure <ls_ausgabe> to field-symbol(<ld_feld>).
if sy-subrc eq 0.
concatenate '"' <ld_feld> '"' into <ld_feld>.
endif.
endwhile.
endloop.
Hi a-d-t,a-dead-trousers hat geschrieben:Es geht auch ohne das "unschöne" exit:Code: Alles auswählen.
loop at lt_ausgabe assigning field-symbol(<ls_ausgabe>). clear sy-subrc. "Nur zur Sicherheit while sy-subrc eq 0. assign component sy-index of structure <ls_ausgabe> to field-symbol(<ld_feld>). if sy-subrc eq 0. concatenate '"' <ld_feld> '"' into <ld_feld>. endif. endwhile. endloop.
Code: Alles auswählen.
loop at lt_ausgabe assigning field-symbol(<ls_ausgabe>).
clear sy-subrc. "Nur zur Sicherheit
while sy-subrc eq 0.
assign component sy-index of structure <ls_ausgabe> to field-symbol(<ld_feld>).
check sy-subrc eq 0.
concatenate '"' <ld_feld> '"' into <ld_feld>.
endwhile.
endloop.
Folgende Benutzer bedankten sich beim Autor DeathAndPain für den Beitrag:
L0w-RiDer
Das ist genau das was ich auch vermuten würde, deswegen meine Nachfrage an a-d-t.DeathAndPain hat geschrieben:Ich würde vermuten, dass der SY-SUBRC auf 0 stehen muss, weil der LOOP ja eine Zeile gefunden hat. (Hätte er keine gefunden, dann würde er gar nicht bei dem CLEAR ankommen, weil er dann das Schleifeninnere nicht ausführen würde.)
Mein Gedanke war, dass er ja nichts sucht (keine WHERE-Bedingung) und daher auch sy-subrc ignoriert.DeathAndPain hat geschrieben:Ich würde vermuten, dass der SY-SUBRC auf 0 stehen muss, weil der LOOP ja eine Zeile gefunden hat.
Code: Alles auswählen.
DATA lt_mara TYPE TABLE OF mara.
DATA ls_mara TYPE mara.
SELECT * UP TO 10 ROWS
FROM mara CLIENT SPECIFIED
INTO TABLE lt_mara.
WRITE sy-subrc.
sy-subrc = 4.
WRITE / sy-subrc.
LOOP AT lt_mara INTO ls_mara.
WRITE / sy-subrc.
ENDLOOP.
LOOP AT lässt sy-subrc unverändert. Nach dem Verlassen der Schleife über ENDLOOP wird sy-tabix auf den Wert gesetzt, den es vor dem Eintritt in die Schleife hatte, und für sy-subrc gilt:
sy-subrc Bedeutung
0 Die Schleife wurde mindestens einmal durchlaufen.
4 Die Schleife wurde nicht durchlaufen.
Folgende Benutzer bedankten sich beim Autor nickname8 für den Beitrag (Insgesamt 2):
schick • DeathAndPain
Das willst du sehr wahrscheinlich nicht!L0w-RiDer hat geschrieben: Nun möchte ich in jedes Feld der internen Tabelle vor dem Wert und nach dem Wert ein Anführungszeichen schreiben, also so auf die Art:
"577893" oder "Gutschrift". Falls ein Feld leer ist, soll in dieses auch die Anführungszeichen geschrieben werden.
Innerhalb von Schleifen der CHECK.L0w-RiDer hat geschrieben:Was ist performanter der Check oder die If-Anweisung?
Code: Alles auswählen.
DATA:
ld_index TYPE i,
ld_start TYPE i,
ld_end TYPE i.
GET RUN TIME FIELD ld_start .
DO 1000 TIMES.
CLEAR ld_index.
DO.
ADD 1 TO ld_index.
CHECK ld_index EQ 50.
exit.
ENDDO.
ENDDO.
GET RUN TIME FIELD ld_end .
NEW-LINE.
SUBTRACT ld_start from ld_end.
WRITE ld_end.
GET RUN TIME FIELD ld_start .
DO 1000 TIMES.
CLEAR ld_index.
DO.
ADD 1 TO ld_index.
IF ld_index EQ 50.
EXIT.
ENDIF.
ENDDO.
ENDDO.
GET RUN TIME FIELD ld_end .
NEW-LINE.
SUBTRACT ld_start from ld_end.
WRITE ld_end.
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
L0w-RiDer
Für alle praktischen Anwendungen: Keins.L0w-RiDer hat geschrieben:Mal eine Frage noch am Rande.
Was ist performanter der Check oder die If-Anweisung?
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
a-dead-trousers