Code: Alles auswählen.
DATA:
hinflug TYPE TABLE OF sflight,
rueckflug TYPE TABLE OF sflight.
FIELD-SYMBOLS:
<hinflug> TYPE sflight,
<rueckflug> TYPE sflight.
* Alle potentiellen Hinflüge von der DB lesen
SELECT *
FROM SFLIGHT
INTO TABLE hinflug
WHERE connid EQ connid1
AND carrid EQ carrid1.
WRITE: / 'Freie Hinflüge suchen:'.
* Loop über die Hinflüge
LOOP AT hinflug ASSIGNING <hinflug>.
* Abfrage ob freie Plätze vohanden sind
IF <hinflug>-seatsmax + <hinflug>-seatsmax_b + <hinflug>-seatsmax_f - <hinflug>-seatsocc - <hinflug>-seatsocc_b - <hinflug>-seatsocc_f GT 0.
WRITE: / 'Hinflug gefunden.', <hinflug>-fldate.
* Mögliche Rückflüge von der DB lesen
SELECT *
FROM SFLIGHT
INTO TABLE rueckflug
WHERE connid EQ connid2
AND carrid EQ carrid2
AND fldate GT <hinflug>-fldate.
WRITE: / 'Freie Rückflüge suchen:'.
* Loop über Rückflüge
LOOP AT rueckflug ASSIGNING <rueckflug>.
* Abfrage ob freie Plätze vorhanden sind
IF <rueckflug>-seatsmax + <rueckflug>-seatsmax_b + <rueckflug>-seatsmax_f - <rueckflug>-seatsocc - <rueckflug>-seatsocc_b - <rueckflug>-seatsocc_f GT 0.
verfuegbar = 1.
WRITE: / 'Rückflug gefunden.', <rueckflug>-fldate.
EXIT.
ENDIF.
ENDLOOP.
IF verfuegbar EQ 1.
EXIT.
ENDIF.
ENDIF.
ENDLOOP.
Code: Alles auswählen.
IF sy-subrc = 0.
verfuegbar = 0.
ENDIF.
Code: Alles auswählen.
WHERE ...
AND seatsmax + seatsmax_b + seatsmax_f - seatsocc - seatsocc_b - seatsocc_f > 0.
Ok, da muss ich dir Recht geben, ich versuche es mir zu merken.DeathAndPain hat geschrieben:Ich bin nicht sicher, ob es ihm was bringt, ihm einfach eine andere Lösung hinzuklatschen. Ich finde gut, dass er seine eigene Lösung gepostet hat und zur Diskussion freigibt. So kann er auch was daraus lernen.
Code: Alles auswählen.
SELECT *
FROM sflight
WHERE connid EQ connid1
AND carrid EQ carrid1
AND seatsmax + seatsmax_b + seatsmax_f - seatsocc - seatsocc_b - seatsocc_f > 0
INTO TABLE hinflug.
Code: Alles auswählen.
SELECT SINGLE *
FROM SFLIGHT
WHERE connid = @connid1 AND carrid = @carrid1
AND seatsmax + seatsmax_b + seatsmax_f - seatsocc - seatsocc_b - seatsocc_f > 0 INTO @wa_hinflug.
Ok, dann ist mein 7.4-System wohl einfach zu alt...DeathAndPain hat geschrieben:Der SELECT
wird zumindest in meinem System (7.50) nicht angemeckert. Er verlangt dann aber unter Verweis auf neue Syntax das Escaping von Hostvariablen mit dem @-Symbol (wie oben dargestellt), und er verlangt dann auch, dass der INTO ganz am Schluss steht (gleichfalls wie oben dargestellt).Code: Alles auswählen.
SELECT SINGLE * FROM SFLIGHT WHERE connid = @connid1 AND carrid = @carrid1 AND seatsmax + seatsmax_b + seatsmax_f - seatsocc - seatsocc_b - seatsocc_f > 0 INTO @wa_hinflug.
Eröffnet natürlich ganz nette Optionen, weil man auf diese Weise offenbar so einiges direkt in der Datenbank ausführen lassen kann, was die Ausführungszeit optimieren dürfte.
"+" ist grammatikalisch hier nicht erlaubt. Schlüsselwort ist. Ggf. ist
es durch "!" zu maskieren. Oder es fehlt ein Leerzeichen oder es ist
eines zuviel.