Code: Alles auswählen.
TYPES: BEGIN OF ty_airline,
carrid TYPE s_carr_id,
carrnm TYPE string,
END OF ty_airline,
ty_airlines TYPE SORTED TABLE OF ty_airline WITH UNIQUE KEY carrid.
select * from sflights into table @data(flights).
DATA(my_airlines) = REDUCE ty_airlines(
INIT airlines = VALUE #( )
FOR flight IN flights
WHERE ( carrid(1) = 'A' )
NEXT airlines = VALUE #( ( carrid = flight-carrid
carrnm = SWITCH #( flight-carrid
WHEN 'AA' THEN 'American Airlines'
WHEN 'AZ' THEN 'All Italia' ) ) ) ).
cl_demo_output=>display_data( my_airlines ).
Code: Alles auswählen.
LOOP AT flights INTO DATA(airline) WHERE carrid(1) = 'A'
GROUP BY ( carrid = airline-carrid ).
INSERT VALUE ty_airline( carrid = airline-carrid
carrnm = SWITCH #( airline-carrid
WHEN 'AA' THEN 'American Airlines'
WHEN 'AZ' THEN 'All Italia' ) ) INTO TABLE my_airlines.
ENDLOOP.
Code: Alles auswählen.
DATA(my_airlines) = value ty_airlines(
FOR GROUPS carrid of flight IN flights
GROUP BY flight-carrid
( carrid = carrid
carrnm = get_carrid_name( carrid ) )
).
Code: Alles auswählen.
DATA(my_airlines) = VALUE ty_airlines( FOR flight_line IN flights WHERE ( carrid = 'AA' OR carrid = 'AZ' ) ( flight_line) ).
Code: Alles auswählen.
DATA(my_airlines) = VALUE ty_airlines(
FOR flight_line IN flights
WHERE ( carrid = 'AA' OR carrid = 'AZ' )
( carrid = flight_line-carrid ) ).
Code: Alles auswählen.
DATA ty_carrid_t TYPE SORTED TABLE OF s_carr_id WITH UNIQUE DEFAULT KEY.
DATA(my_airlines) = FILTER ty_airlines(
VALUE ty_airlines(
FOR GROUPS carrid OF flight IN flights
GROUP BY flight-carrid
( carrid = carrid
carrnm = get_carrid_name( carrid ) )
)
IN VALUE ty_carrid_t(
( 'AA ' )
( 'AZ ' ) )
WHERE carrid = table_line ).
Code: Alles auswählen.
... IN VALUE #(
( 'AA ' )
( 'AZ ' ) )
WHERE carrid = table_line ).
Code: Alles auswählen.
WHERE carrid = 'AA ' or carrid = 'AZ ' ).
Code: Alles auswählen.
WHERE carrid(1) = 'A'
Code: Alles auswählen.
WHERE carrid CP 'A*'
Code: Alles auswählen.
`AA`
Code: Alles auswählen.
|AA|
Müssen nicht die Bedingungen hinter einer WHERE-Bedingung in diesem Kontext immer in Klammern gesetzt werden?ewx hat geschrieben:
Folgendes funktioniert leider auch nicht:OR ist hier nicht erlaubt.Code: Alles auswählen.
WHERE carrid = 'AA ' or carrid = 'AZ ' ).
Folgendes funktioniert auch nicht:Folgendes funktioniert auch nicht:Code: Alles auswählen.
WHERE carrid(1) = 'A'
]Code: Alles auswählen.
WHERE carrid CP 'A*'
Code: Alles auswählen.
WHERE ( carrid = 'AA ' or carrid = 'AZ ' ) ).
WHERE ( carrid(1) = 'A' )
WHERE ( carrid CP 'A*' )
--> probiere es doch noch mal aus, aber mit Klammern um die Bedingung. Gerade die Meldung "OR nicht erlaubt" scheint auf die fehlende Klammerung hinzuweisen.The syntax and semantics are exactly the same as in LOOP AT itab, apart from the fact that a statically specified logical expression log_exp in the WHERE condition must always be placed in parentheses.
In the expression FOR ... IN GROUP group, only static WHERE conditions can be specified for cond.
Code: Alles auswählen.
DATA(my_airlines) = VALUE ty_airlines(
FOR GROUPS airline OF <flight> IN flights
WHERE ( carrid = 'AA' OR carrid = 'AZ' )
GROUP BY ( key1 = <flight>-carrid key2 = get_carrid_name( <flight>-carrid ) )
( airline ) ).
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
ewx