Code: Alles auswählen.
loop at .. into ..
* Selection von Geschlecht
select single ... into ls_ausgabe-gschl
from ...
IF p_gmann = 'X' AND ls_ausgabe-gschl = 1.
ls_ausgabe-gschl = 'M'.
ELSEIF p_gmann = '' AND ls_ausgabe-gschl = 1.
CONTINUE.
ENDIF.
* Problem ist der Wert, wenn er auf 'M' gesetzt wird, wird dieser weiter bei der nächsten IF Abfrage genutzt wie kann ich das verhindern ?
IF p_gfrau = 'X' AND ls_ausgabe-gschl = 2.
ls_ausgabe-gschl = 'W'.
ELSEIF p_gfrau = '' AND ls_ausgabe-gschl = 2.
CONTINUE.
ENDIF.
IF p_gunb = 'X' AND ls_ausgabe-gschl = 3.
ls_ausgabe-gschl = 'U'.
ELSEIF p_gunb = '' AND ls_ausgabe-gschl = 3.
CONTINUE.
ENDIF.
endloop.
Folgende Benutzer bedankten sich beim Autor JohnLocklay für den Beitrag:
erzoo24
Warum?JohnLocklay hat geschrieben:SELECT SINGLE * FROM db_tab INTO wa
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
DeathAndPain
Was bringt es?JohnLocklay hat geschrieben:nicht?
Willst du etwa schon wieder Streit anfangen?DeathAndPain hat geschrieben:Bei einem Release ab 7.40 sollte der Code völlig anders aussehen; da geht das noch erheblich schöner.
Code: Alles auswählen.
SELECT PERNR WERKS BTRTL INTO (PERSONALNUMMER,PERSONALBEREICH,PERSONALTEILBEREICH) FROM PA0001
WHERE SACHP = '100'.
Das ist ganz interessant, darum führe ich das mal aus: Ich hatte mehrere Kunden, die (nach verschiedenen Konzepten) eine teil-generische Persistenzschicht verwenden (und so einen hab ich jetzt halt auch). Da darf (!) man dann keine SELECTs mehr schreiben, sondern kriegt die Daten von einer Methode gestellt.DeathAndPain hat geschrieben:Immer diese Highlevel-Experten ohne Praxisbezug...
Code: Alles auswählen.
select *
from (me->tablename)
into corresponding fields of table db_data
where (me->wheretab).
Ich schreibs auch schon immer so ^^.DeathAndPain hat geschrieben:Im ursprünglichen (Native-)SQL der alten Schule MUSSTE das INTO vor dem FROM stehen. (Jedenfalls war das bei Informix so; keine Ahnung, ob die anderne Datenbankhersteller das damals auch so eng gesehen haben.) Als ich das damals gelernt habe, fand ich es auch sonderbar, habe mich aber schnell dran gewöhnt. Ich fand es angenehm, dass ABAP diese dort zwar weniger gebräuchliche, aber eigentlich klassischere Schreibweise auch akzeptiert, da ich mich so nicht umstellen musste.
Nebenbei kann ich so auf einen Blick erkennen, welcher SELECT von mir ist und welchen jemand anderes da reingepfuschelt hat.
Was die originale Fragestellung angeht, so finde ich diese insofern recht unklar, als dass dort kein geänderter Wert in einem weiteren IF-Statement verwurstet wird. Im übrigen finde ich diesen Ketten-IF schon ziemlich schrecklich programmiert. CASE wäre das mindeste, was man da machen sollte. Bei einem Release ab 7.40 sollte der Code völlig anders aussehen; da geht das noch erheblich schöner.