Ansicht
Dokumentation
ABENOPEN_SQL_EXAMPLES - OPEN SQL EXAMPLES
Fill RESBD Structure from EBP Component Structure Fill RESBD Structure from EBP Component StructureDiese Dokumentation steht unter dem Copyright der SAP AG.
Open SQL - Beispiele zur Verwendung
Dieser Abschnitt enthält Beispiele, die zusätzlich zu den Beispielen, die bei der Beschreibung der Syntax unter Open SQL angegeben sind, in die Verwendung der Open-SQL-Anweisungen einführen sollen.
Zeilenangaben in der SELECT-Anweisung
SELECT SINGLE
Beispiel
Ausgabe der freien Sitzplätze des Lufthansa-Fluges 0400 28.02.2001.
DATA wa TYPE sflight.
DATA seatsfree TYPE I.
SELECT SINGLE * FROM sflight INTO wa
WHERE
carrid = 'LH ' AND
connid = '0400' AND
fldate = '20010228'.
seatsfree = wa-seatsmax - wa-seatsocc.
WRITE: / wa-carrid, wa-connid, wa-fldate, seatsfree.
SELECT DISTINCT
Beispiel
Ausgabe aller Flugziele, die die Lufthansa von Frankfurt aus anfliegt.
DATA: target TYPE spfli-cityto.
SELECT DISTINCT cityto
INTO target FROM spfli
WHERE
carrid = 'LH ' AND
cityfrom = 'FRANKFURT'.
WRITE: / target.
ENDSELECT.
Beispiel
Ausgabe der Anzahl der Fluggesellschaften, die New York anfliegen:
DATA count TYPE I.
SELECT COUNT( DISTINCT carrid )
INTO count
FROM spfli
WHERE
cityto = 'NEW YORK'.
WRITE: / count.
Beispiel
Ausgabe der Anzahl der Passagiere, des Gesamtgewichtes und des durchschnittlichen Gewichtes des Gepäcks aller Lufthansa-Flüge am 28.02.2001:
DATA: count TYPE I, sum TYPE P DECIMALS 2, avg TYPE F,
connid LIKE sbook-connid.
SELECT connid COUNT( * ) SUM( luggweight ) AVG( luggweight )
INTO (connid, count, sum, avg)
FROM sbook
WHERE
carrid = 'LH ' AND
fldate = '20010228'
GROUP BY connid.
WRITE: / connid, count, sum, avg.
ENDSELECT.
Spaltenbezeichner in der SELECT-Anweisung
Angabe ohne Namen der Datenbank
Beispiel
Ausgabe einer Liste aller Kunden, deren Name mit 'A' anfängt.
DATA: WA_SCUSTOM TYPE SCUSTOM.
SELECT * FROM SCUSTOM INTO WA_SCUSTOM WHERE NAME LIKE 'A%'.
WRITE: / WA_SCUSTOM-ID, WA_SCUSTOM-NAME.
ENDSELECT.
Angabe mit Namen der Datenbank
Beispiel
Ausgabe einer Liste aller Kunden, deren Name mit 'A' anfängt:
DATA: WA_SCUSTOM TYPE SCUSTOM.
SELECT * FROM SCUSTOM INTO WA_SCUSTOM
WHERE SCUSTOM~NAME LIKE 'A%'.
WRITE: / WA_SCUSTOM-ID, WA_SCUSTOM-NAME.
ENDSELECT.
Angabe mit Aliasnamen der Datenbank
Beispiel
Ausgabe einer Liste aller Kunden, deren Name mit 'A' anfängt:
DATA: WA_SCUSTOM TYPE SCUSTOM.
SELECT * FROM SCUSTOM AS T INTO WA_SCUSTOM WHERE T~NAME LIKE 'A%'.
WRITE: / WA_SCUSTOM-ID, WA_SCUSTOM-NAME.
ENDSELECT.
Aggregatfunktion ohne Alternativname
Beispiel
Ausgabe einer Liste aller Kunden der Lufthansaflüge 0400 des Jahres 1995 mit dem jeweils höchsten Buchungspreis, geordnet nach dem Kundennamen.
DATA: SCUSTOM_WA TYPE SCUSTOM, SBOOK_WA TYPE SBOOK.
SELECT SCUSTOM~NAME SCUSTOM~POSTCODE SCUSTOM~CITY
MAX( SBOOK~LOCCURAM )
INTO (SCUSTOM_WA-NAME, SCUSTOM_WA-POSTCODE, SCUSTOM_WA-CITY,
SBOOK_WA-LOCCURAM)
FROM SCUSTOM INNER JOIN SBOOK
ON SCUSTOM~ID = SBOOK~CUSTOMID
WHERE SBOOK~FLDATE BETWEEN '19950101' AND '19951231' AND
SBOOK~CARRID = 'LH '
AND
SBOOK~CONNID = '0400'
GROUP BY SCUSTOM~NAME SCUSTOM~POSTCODE SCUSTOM~CITY
ORDER BY SCUSTOM~NAME.
WRITE: / SCUSTOM_WA-NAME, SCUSTOM_WA-POSTCODE, SCUSTOM_WA-CITY,
SBOOK_WA-LOCCURAM.
ENDSELECT.
Aggregatfunktion mit Alternativname
Beispiel
Ausgabe einer Liste aller Kunden der Lufthansaflüge 0400 im Jahr 1995 mit dem jeweils durchschnittlichen Buchungspreis, geordnet nach Buchungspreis und Kundennamen:
DATA: SCUSTOM_WA TYPE SCUSTOM, SBOOK_WA TYPE SBOOK.
SELECT SCUSTOM~NAME SCUSTOM~POSTCODE SCUSTOM~CITY
AVG( SBOOK~LOCCURAM ) AS AVG
INTO (SCUSTOM_WA-NAME, SCUSTOM_WA-POSTCODE, SCUSTOM_WA-CITY,
SBOOK_WA-LOCCURAM)
FROM SCUSTOM INNER JOIN SBOOK
ON SCUSTOM~ID = SBOOK~CUSTOMID
WHERE SBOOK~FLDATE BETWEEN '19950101' AND '19951231' AND
SBOOK~CARRID = 'LH '
AND
SBOOK~CONNID = '0400'
GROUP BY SCUSTOM~NAME SCUSTOM~POSTCODE SCUSTOM~CITY
ORDER BY AVG DESCENDING SCUSTOM~NAME.
WRITE: / SCUSTOM_WA-NAME, SCUSTOM_WA-POSTCODE, SCUSTOM_WA-CITY,
SBOOK_WA-LOCCURAM.
ENDSELECT.
Aggregatfunktion max
Beispiel
Ausgabe einer Liste aller Kunden der Lufthansaflüge 0400 des Jahres 2001 mit dem jeweils höchsten Buchungspreis, geordnet nach dem Kundennamen.
DATA: name TYPE scustom-name,
postcode TYPE scustom-postcode,
city TYPE scustom-city,
max TYPE sbook-loccuram.
SELECT scustom~name scustom~postcode scustom~city
MAX( sbook~loccuram )
INTO (name, postcode, city, max)
FROM scustom INNER JOIN sbook
ON scustom~id = sbook~customid
WHERE sbook~fldate BETWEEN '20010101' AND '20011231' AND
sbook~carrid = 'LH '
AND
sbook~connid = '0400'
GROUP BY scustom~name scustom~postcode scustom~city
ORDER BY scustom~name.
WRITE: / name, postcode, city, max.
ENDSELECT.
Aggregatfunktion min
Beispiel
Ausgabe einer Liste aller Kunden der Lufthansaflüge 0400 im Jahr 2001 mit dem jeweils niedrigsten Buchungspreis, geordnet nach dem Kundennamen.
DATA: name TYPE scustom-name,
postcode TYPE scustom-postcode,
city TYPE scustom-city,
min TYPE sbook-loccuram.
SELECT scustom~name scustom~postcode scustom~city
MIN( sbook~loccuram )
INTO (name, postcode, city, min)
FROM scustom INNER JOIN sbook
ON scustom~id = sbook~customid
WHERE sbook~fldate BETWEEN '20010101' AND '20011231' AND
sbook~carrid = 'LH '
AND
sbook~connid = '0400'
GROUP BY scustom~name scustom~postcode scustom~city
ORDER BY scustom~name.
WRITE: / name, postcode, city, min.
ENDSELECT.
Aggregatfunktion avg
Beispiel
Ausgabe einer Liste aller Kunden der Lufthansaflüge 0400 im Jahr 2001 mit dem jeweils durchschnittlichen Buchungspreis, geordnet nach dem Kundennamen.
DATA: name TYPE scustom-name,
postcode TYPE scustom-postcode,
city TYPE scustom-city,
average TYPE sbook-loccuram.
SELECT scustom~name scustom~postcode scustom~city
AVG( sbook~loccuram ) AS avg
INTO (name, postcode, city, average)
FROM scustom INNER JOIN sbook
ON scustom~id = sbook~customid
WHERE sbook~fldate BETWEEN '20010101' AND '20011231' AND
sbook~carrid = 'LH '
AND
sbook~connid = '0400'
GROUP BY scustom~name scustom~postcode scustom~city
ORDER BY avg DESCENDING scustom~name.
WRITE: / name, postcode, city, average.
ENDSELECT.
Aggregatfunktion sum
Beispiel
Ausgabe einer Liste aller Kunden der Lufthansaflüge 0400 im Jahr 2001 mit der jeweiligen Summe der Buchungspreise, geordnet nach dem Kundennamen.
DATA: name TYPE scustom-name,
postcode TYPE scustom-postcode,
city TYPE scustom-city,
sum TYPE sbook-loccuram.
SELECT scustom~name scustom~postcode scustom~city
SUM( sbook~loccuram )
INTO (name, postcode, city, sum)
FROM scustom INNER JOIN sbook
ON scustom~id = sbook~customid
WHERE sbook~fldate BETWEEN '20010101' AND '20011231' AND
sbook~carrid = 'LH '
AND
sbook~connid = '0400'
GROUP BY scustom~name scustom~postcode scustom~city
ORDER BY scustom~name.
WRITE: / name, postcode, city, sum.
ENDSELECT.
Aggregatfunktion count
Beispiel
Ausgabe einer Liste aller Kunden der Lufthansaflüge 0400 im Jahr 2001 mit der jeweiligen Anzahl unterschiedlicher Buchungspreise, geordnet nach dem Kundennamen.
DATA: name TYPE scustom-name,
postcode TYPE scustom-postcode,
city TYPE scustom-city,
count TYPE I.
SELECT scustom~name scustom~postcode scustom~city
COUNT( DISTINCT sbook~loccuram )
INTO (name, postcode, city, count)
FROM scustom INNER JOIN sbook
ON scustom~id = sbook~customid
WHERE sbook~fldate BETWEEN '20010101' AND '20011231' AND
sbook~carrid = 'LH '
AND
sbook~connid = '0400'
GROUP BY scustom~name scustom~postcode scustom~city
ORDER BY scustom~name.
WRITE: / name, postcode, city, count.
ENDSELECT.
Aggregatfunktion count( * )
Beispiel
Ausgabe einer Liste aller Kunden der Lufthansaflüge 0400 im Jahr 2001 mit der jeweiligen Anzahl ihrer Buchungen, geordnet nach dem Kundennamen.
DATA: name TYPE scustom-name,
postcode TYPE scustom-postcode,
city TYPE scustom-city,
count TYPE I.
SELECT scustom~name scustom~postcode scustom~city COUNT( * )
INTO (name, postcode, city, count)
FROM scustom INNER JOIN sbook
ON scustom~id = sbook~customid
WHERE sbook~fldate BETWEEN '20010101' AND '20011231' AND
sbook~carrid = 'LH '
AND
sbook~connid = '0400'
GROUP BY scustom~name scustom~postcode scustom~city
ORDER BY scustom~name.
WRITE: / name, postcode, city, count.
ENDSELECT.
Dynamische Spaltenangabe
Beispiel
Ausgabe aller Flugrouten der Lufthansa.
DATA: wa TYPE spfli,
ftab TYPE TABLE OF STRING.
APPEND 'CITYFROM' TO ftab.
APPEND 'CITYTO' TO ftab.
SELECT DISTINCT (ftab)
FROM spfli
INTO CORRESPONDING FIELDS OF wa
WHERE
carrid = 'LH'.
WRITE: / wa-cityfrom, wa-cityto.
ENDSELECT.
Datenbanktabellen in der SELECT-Anweisung
Mandantenangabe
Beispiel
Ausgabe einer Liste aller Kunden im Mandanten 3:
DATA: WA_SCUSTOM TYPE SCUSTOM.
SELECT * FROM SCUSTOM CLIENT SPECIFIED INTO WA_SCUSTOM
WHERE MANDT = '003'.
WRITE: / WA_SCUSTOM-ID, WA_SCUSTOM-NAME.
ENDSELECT.
Begrenzte Zeilenzahl
Beispiel
Ausgabe der Liste der 3 Geschäftskunden mit den höchsten Rabattsätzen:
DATA: WA_SCUSTOM TYPE SCUSTOM.
SELECT * FROM SCUSTOM INTO WA_SCUSTOM UP TO 3 ROWS
WHERE CUSTTYPE = 'B'
ORDER BY DISCOUNT DESCENDING.
WRITE: / WA_SCUSTOM-ID, WA_SCUSTOM-NAME,
WA_SCUSTOM-DISCOUNT.
ENDSELECT.
Inner Join
Beispiel
Inner Join zwischen Tabelle 1 und Tabelle 2, bei dem die Spalte D der beiden Tabellen in der Join-Bedingung gleichgesetzt wird:
Tabelle 1 Tabelle 2
|----|----|----|----| |----|----|----|----|----|
| A
| B | C | D | | D | E | F | G | H |
|----|----|----|----| |----|----|----|----|----|
| a1 | b1 | c1 | 1
| | 1 | e1 | f1 | g1 | h1 |
| a2 | b2 | c2 | 1
| | 3 | e2 | f2 | g2 | h2 |
| a3 | b3 | c3 | 2
| | 4 | e3 | f3 | g3 | h3 |
| a4 | b4 | c4 | 3
| |----|----|----|----|----|
|----|----|----|----|
\ /
\ /
\ /
\ /
\/
Inner Join
|----|----|----|----|----|----|----|----|----|
| A | B | C | D | D | E | F | G | H |
|----|----|----|----|----|----|----|----|----|
| a1 | b1 | c1 | 1 | 1 | e1 | f1 | g1 | h1 |
| a2 | b2 | c2 | 1 | 1 | e1 | f1 | g1 | h1 |
| a4 | b4 | c4 | 3 | 3 | e2 | f2 | g2 | h2 |
|----|----|----|----|----|----|----|----|----|
Beispiel
Ausgabe einer Liste aller nicht ausgebuchten Flüge von Frankfurt nach New York zwischen dem 10. und 20. September 1997:
DATA: DATE LIKE SFLIGHT-FLDATE,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID.
SELECT F~CARRID F~CONNID F~FLDATE
INTO (CARRID, CONNID, DATE)
FROM SFLIGHT AS F INNER JOIN SPFLI AS P
ON F~CARRID = P~CARRID AND
F~CONNID = P~CONNID
WHERE P~CITYFROM = 'FRANKFURT'
AND P~CITYTO = 'NEW YORK'
AND F~FLDATE BETWEEN '19970910' AND '19970920'
AND F~SEATSOCC < F~SEATSMAX.
WRITE: / DATE, CARRID, CONNID.
ENDSELECT.
Beispiel
Ausgabe einer Liste aller nicht ausgebuchten Flüge von Frankfurt nach New York zwischen dem 10. und 20. September 1997:
DATA: DATE LIKE SFLIGHT-FLDATE,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID.
SELECT F~CARRID F~CONNID F~FLDATE
INTO (CARRID, CONNID, DATE)
FROM SFLIGHT AS F INNER JOIN SPFLI AS P
ON F~CARRID = P~CARRID
WHERE F~CONNID = P~CONNID
AND P~CITYFROM = 'FRANKFURT'
AND P~CITYTO = 'NEW YORK'
AND F~FLDATE BETWEEN '19970910' AND '19970920'
AND F~SEATSOCC < F~SEATSMAX.
WRITE: / DATE, CARRID, CONNID.
ENDSELECT.
Beispiel
Beispiel für einen JOIN mit mehr als zwei Tabellen: Selektiere alle Flüge von Frankfurt nach New York zwischen dem 10. und 20. September 1997 mit freien Plätzen und gib sie mit dem Namen der Fluggesellschaft aus.
DATA: BEGIN OF WA,
FLIGHT TYPE SFLIGHT,
PFLI TYPE SPFLI,
CARR TYPE SCARR,
END OF WA.
SELECT * INTO WA
FROM ( SFLIGHT AS F INNER JOIN SPFLI AS P
ON F~CARRID = P~CARRID AND
F~CONNID = P~CONNID )
INNER JOIN SCARR AS C
ON F~CARRID = C~CARRID
WHERE P~CITYFROM = 'FRANKFURT'
AND P~CITYTO = 'NEW YORK'
AND F~FLDATE BETWEEN '19970910' AND '19970920'
AND F~SEATSOCC < F~SEATSMAX.
WRITE: / WA-CARR-CARRNAME, WA-FLIGHT-FLDATE, WA-FLIGHT-CARRID,
WA-FLIGHT-CONNID.
ENDSELECT.
Outer Join
Beispiel
Left Outer Join zwischen Tabelle 1 und Tabelle 2, bei dem die Spalte D der beiden Tabellen in der Join-Bedingung gleichgesetzt wird:
Tabelle 1 Tabelle 2
|----|----|----|----| |----|----|----|----|----|
| A
| B | C | D | | D | E | F | G | H |
|----|----|----|----| |----|----|----|----|----|
| a1 | b1 | c1 | 1
| | 1 | e1 | f1 | g1 | h1 |
| a2 | b2 | c2 | 1
| | 3 | e2 | f2 | g2 | h2 |
| a3 | b3 | c3 | 2
| | 4 | e3 | f3 | g3 | h3 |
| a4 | b4 | c4 | 3
| |----|----|----|----|----|
|----|----|----|----|
\ /
\ /
\ /
\ /
\/
Left Outer Join
|----|----|----|----|----|----|----|----|----|
| A | B | C | D | D | E | F | G | H |
|----|----|----|----|----|----|----|----|----|
| a1 | b1 | c1 | 1 | 1 | e1 | f1 | g1 | h1 |
| a2 | b2 | c2 | 1 | 1 | e1 | f1 | g1 | h1 |
| a3 | b3 | c3 | 2 |NULL|NULL|NULL|NULL|NULL|
| a4 | b4 | c4 | 3 | 3 | e2 | f2 | g2 | h2 |
|----|----|----|----|----|----|----|----|----|
Beispiel
Ausgabe einer Liste aller Kunden mit ihren - soweit vorhanden - Flugbuchungen für den 15. Oktober 1997:
DATA: CUSTOMER TYPE SCUSTOM,
BOOKING TYPE SBOOK.
SELECT SCUSTOM~NAME SCUSTOM~POSTCODE SCUSTOM~CITY
SBOOK~FLDATE SBOOK~CARRID SBOOK~CONNID SBOOK~BOOKID
INTO (CUSTOMER-NAME, CUSTOMER-POSTCODE, CUSTOMER-CITY,
BOOKING-FLDATE, BOOKING-CARRID, BOOKING-CONNID,
BOOKING-BOOKID)
FROM SCUSTOM LEFT OUTER JOIN SBOOK
ON SCUSTOM~ID = SBOOK~CUSTOMID AND
SBOOK~FLDATE = '19971015'
ORDER BY SCUSTOM~NAME SBOOK~FLDATE.
WRITE: / CUSTOMER-NAME, CUSTOMER-POSTCODE, CUSTOMER-CITY,
BOOKING-FLDATE, BOOKING-CARRID, BOOKING-CONNID,
BOOKING-BOOKID.
ENDSELECT.
Dynamische Angabe
Beispiel
Ausgabe einer Liste aller Kunden:
DATA tabname TYPE c LENGTH 10.
DATA: BEGIN OF wa,
id TYPE scustom-id,
name TYPE scustom-name,
END OF wa.
tabname = 'SCUSTOM'.
SELECT id name INTO CORRESPONDING FIELDS OF wa FROM (tabname).
WRITE: / wa-id, wa-name.
ENDSELECT.
Beispiel
Ausgabe aller Flugverbindungen mit Namen der Flugesellschaft und Flugnummer, wobei ein Join dynamisch zur Laufzeit aufgebaut wird.
CONSTANTS: flight_tab_name TYPE c LENGTH 30 VALUE 'SPFLI'.
DATA: from_clause TYPE STRING.
DATA: BEGIN OF wa,
name(20) TYPE C,
connid TYPE spfli-connid,
END OF wa.
CONCATENATE flight_tab_name ' AS t1'
' JOIN scarr AS t2 ON t1~carrid = t2~carrid'
INTO from_clause.
SELECT t1~connid t2~carrname AS name
FROM (from_clause)
INTO CORRESPONDING FIELDS OF wa.
WRITE: / wa-name, wa-connid.
ENDSELECT.
Zielbereich in der SELECT-Anweisung
Arbeitsbereich angeben
Beispiel
Ausgabe einer Liste aller Fluggesellschaften (mit Kurzbezeichnung und Namen).
DATA: wa TYPE scarr.
SELECT * INTO WA FROM scarr.
WRITE: / wa-carrid, wa-carrname.
ENDSELECT.
Beispiel
Ausgabe einer Liste aller Fluggesellschaften (mit Kurzbezeichnung und Namen).
DATA: BEGIN OF wa1,
client TYPE scarr-mandt,
carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname,
url TYPE scarr-url,
rest(100),
END OF wa1.
SELECT * INTO wa1 FROM SCARR.
WRITE: / wa1-carrid, wa1-carrname.
ENDSELECT.
Beispiel
Ausgabe einer Liste aller Fluggesellschaften (mit Kurzbezeichnung und Namen).
DATA: BEGIN OF wa2,
carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname,
END OF wa2.
SELECT carrid carrname
INTO wa2
FROM scarr.
WRITE: / wa2-carrid, wa2-carrname.
ENDSELECT.
Einzelne Datenobjekte
Beispiel
Ausgabe einer Liste aller Fluggesellschaften (mit Kurzbezeichnung und Namen).
DATA: carrier TYPE scarr.
DATA: tabname TYPE c LENGTH 10.
tabname = 'SCARR'.
SELECT *
INTO CORRESPONDING FIELDS OF carrier
FROM (tabname).
WRITE: / carrier-carrid, carrier-carrname.
ENDSELECT.
Interne Tabelle
Beispiel
Ausgabe einer Liste aller Fluggesellschaften (mit Kurzbezeichnung und Namen).
DATA: ITAB TYPE STANDARD TABLE OF scarr WITH NON-UNIQUE
DEFAULT KEY INITIAL SIZE 100,
wa_itab TYPE scarr.
SELECT * INTO TABLE itab FROM scarr.
LOOP AT itab INTO wa_itab.
WRITE: / wa_itab-carrid, wa_itab-carrname.
ENDLOOP.
Beispiel
Ausgabe einer Liste aller Fluggesellschaften (mit Kurzbezeichnung und Namen):
DATA: itab TYPE STANDARD TABLE OF SCARR WITH NON-UNIQUE
DEFAULT KEY INITIAL SIZE 10.
FIELD-SYMBOLS: <FS> TYPE scarr.
SELECT * INTO TABLE itab PACKAGE SIZE 20 FROM scarr.
LOOP AT itab ASSIGNING <FS>.
WRITE: / <FS>-carrid, <FS>-carrname.
ENDLOOP.
ENDSELECT.
WHERE-Bedingungen
Vergleichsoperatoren
Beispiele
Selektiere alle Flugverbindungen der Lufthansa:
DATA: WA_SPFLI TYPE SPFLI.
SELECT * FROM SPFLI INTO WA_SPFLI
WHERE CARRID = 'LH'.
WRITE: / WA_SPFLI-CITYFROM, WA_SPFLI-CITYTO.
ENDSELECT.
Selektiere alle Flüge, die nicht ausgebucht sind:
DATA: WA_SFLIGHT TYPE SFLIGHT.
SELECT * FROM SFLIGHT INTO WA_SFLIGHT
WHERE SFLIGHT~SEATSOCC LT SFLIGHT~SEATSMAX.
WRITE: / WA_SFLIGHT-CARRID, WA_SFLIGHT-CONNID,
WA_SFLIGHT-FLDATE.
ENDSELECT.
Selektiere die Flüge mit den meisten Passagieren:
DATA: WA_SFLIGHT TYPE SFLIGHT.
SELECT * FROM SFLIGHT INTO WA_SFLIGHT
WHERE SEATSOCC = ( SELECT MAX( SEATSOCC ) FROM SFLIGHT ).
WRITE: / WA_SFLIGHT-CARRID, WA_SFLIGHT-CONNID,
WA_SFLIGHT-FLDATE.
ENDSELECT.
Falsche Abfrage auf den Null-Wert
Beispiel
Keiner der folgenden Befehle findet eine Zeile, in der das Feld TELEPHONE den Wert NULL enthält:
DATA: WA_SCUSTOM TYPE SCUSTOM.
SELECT * FROM SCUSTOM INTO WA_SCUSTOM WHERE TELEPHONE = ' '.
ENDSELECT.
SELECT * FROM SCUSTOM INTO WA_SCUSTOM WHERE TELEPHONE <> ' '.
ENDSELECT.
SELECT * FROM SCUSTOM INTO WA_SCUSTOM WHERE NOT TELEPHONE = ' '.
ENDSELECT.
Intervall
Beispiel
Selektiere alle Passagierflugzeuge mit 200 bis 250 Sitzplätzen.
DATA: WA_SAPLANE TYPE SAPLANE,
LOW TYPE I VALUE 200,
HIGH TYPE I VALUE 250.
SELECT * FROM SAPLANE INTO WA_SAPLANE
WHERE SEATSMAX BETWEEN LOW AND HIGH.
WRITE: / WA_SAPLANE-PLANETYPE.
ENDSELECT.
Zeichenfolgen
Beispiele
Selektiere alle Kunden, deren Name mit 'M' beginnt:
DATA SCUSTOM_WA TYPE SCUSTOM.
SELECT ID NAME FROM SCUSTOM
INTO CORRESPONDING FIELDS OF SCUSTOM_WA
WHERE NAME LIKE 'M%'.
WRITE: / SCUSTOM_WA-ID, SCUSTOM_WA-NAME.
ENDSELECT.
Selektiere alle Kunden, deren Name 'huber' enthält:
DATA SCUSTOM_WA TYPE SCUSTOM.
SELECT ID NAME FROM SCUSTOM
INTO CORRESPONDING FIELDS OF SCUSTOM_WA
WHERE NAME LIKE '%huber%'.
WRITE: / SCUSTOM_WA-ID, SCUSTOM_WA-NAME.
ENDSELECT.
Selektiere alle Kunden, deren Name als zweiten Buchstaben kein 'n' enthält:
DATA SCUSTOM_WA TYPE SCUSTOM.
SELECT ID NAME FROM SCUSTOM
INTO CORRESPONDING FIELDS OF SCUSTOM_WA
WHERE NAME NOT LIKE '_n%'.
WRITE: / SCUSTOM_WA-ID, SCUSTOM_WA-NAME.
ENDSELECT.
Beispiel
Selektiere alle Kunden, deren Name mit '100%' beginnt:
DATA SCUSTOM_WA TYPE SCUSTOM.
SELECT ID NAME FROM SCUSTOM
INTO CORRESPONDING FIELDS OF SCUSTOM_WA
WHERE NAME LIKE '100#%' ESCAPE '#'.
WRITE: / SCUSTOM_WA-ID, SCUSTOM_WA-NAME.
ENDSELECT.
Werteliste
Beispiel
Selektiere alle Flugziele, die American Airlines, Lufthansa oder Singapore Airlines von Frankfurt aus anfliegen:
DATA TARGET LIKE SPFLI-CITYTO.
SELECT DISTINCT CITYTO
INTO TARGET FROM SPFLI
WHERE CARRID IN ('AA', 'LH', 'SQ') AND
CITYFROM = 'FRANKFURT'.
WRITE: / TARGET.
ENDSELECT.
Subquery
Beispiel
Selektiere die Flüge mit den meisten Passagieren:
DATA: WA_SFLIGHT TYPE SFLIGHT.
SELECT * FROM SFLIGHT INTO WA_SFLIGHT
WHERE SEATSOCC IN ( SELECT MAX( SEATSOCC ) FROM SFLIGHT ).
WRITE: / WA_SFLIGHT-CARRID, WA_SFLIGHT-CONNID,
WA_SFLIGHT-FLDATE.
ENDSELECT.
Beispiel
Selektiere die Flüge, für die es mindestens eine Buchung gibt:
DATA: WA_SFLIGHT TYPE SFLIGHT.
SELECT * FROM SFLIGHT AS F INTO WA_SFLIGHT
WHERE EXISTS ( SELECT * FROM SBOOK
WHERE CARRID = F~CARRID
AND CONNID = F~CONNID
AND FLDATE = F~FLDATE ).
WRITE: / WA_SFLIGHT-CARRID, WA_SFLIGHT-CONNID,
WA_SFLIGHT-FLDATE.
ENDSELECT.
Beispiel
Selektiere alle noch nicht ausgebuchten Flüge von Frankfurt nach New York zwischen dem 1.1.1999 und dem 31.3.1999:
DATA: WA_SFLIGHT TYPE SFLIGHT.
SELECT * FROM SFLIGHT AS F INTO WA_SFLIGHT
WHERE SEATSOCC < F~SEATSMAX
AND EXISTS ( SELECT * FROM SPFLI
WHERE CARRID = F~CARRID
AND CONNID = F~CONNID
AND CITYFROM = 'FRANKFURT'
AND CITYTO = 'NEW YORK' )
AND FLDATE BETWEEN '19990101' AND '19990331'.
WRITE: / WA_SFLIGHT-CARRID, WA_SFLIGHT-CONNID,
WA_SFLIGHT-FLDATE.
ENDSELECT.
Beispiel
Dieses Beispiel illustriert die Verwendung von ALL. Es wird eine Liste mit den Kundennummern der Kunden (bzw. des Kunden) ausgegeben, die die meisten Buchungen gemacht haben.
DATA: ID TYPE SBOOK-CUSTOMID, CNT TYPE I.
SELECT CUSTOMID COUNT( * ) AS C FROM SBOOK
INTO (ID, CNT)
GROUP BY CUSTOMID
HAVING COUNT( * ) >=
ALL ( SELECT COUNT( * ) FROM SBOOK GROUP BY CUSTOMID ).
WRITE: / ID, CNT.
ENDSELECT.
Selektionstabelle
Beispiel
Selektiere die Kundennummern
-
'10000000' bis '19999999',
-
'01104711' sowie
-
alle Kundennummern größer gleich '90000000',
nicht aber die Kundennummern
-
'10000810' bis '10000815',
-
'10000911' sowie
-
alle Kundennummern, die an der fünften Stelle eine '5' haben:
DATA: WA_SCUSTOM TYPE SCUSTOM.
SELECT-OPTIONS: R FOR WA_SCUSTOM-ID.
* RANGES: R FOR WA_SCUSTOM-ID.
* R sei wie folgt gefüllt (die Reihenfolge der
* Zeilen ist ohne Bedeutung):
*
* SIGN OPTION LOW HIGH
* --------------------------------
* I EQ 01104711
* I BT 10000000 19999999
* I GE 90000000
* E EQ 10000911
* E BT 10000810 10000815
* E CP ++++5*
*
* Daraus wird die Bedingung
*
* ( ID = '01104711' OR
* ID BETWEEN '10000000' AND '19999999' OR
* ID >= '90000000' )
AND
* ID <> '10000911' AND
* ID NOT BETWEEN '10000810' AND '10000815' AND
* ID NOT LIKE '____5%'
*
* generiert.
SELECT * FROM SCUSTOM INTO WA_SCUSTOM WHERE ID IN R.
...
ENDSELECT.
Null-Wert
Beispiel
Selektiere alle Kunden, für die keine Telefonnummer angegeben ist.
DATA: WA_SCUSTOM TYPE SCUSTOM.
SELECT * FROM SCUSTOM INTO WA_SCUSTOM WHERE TELEPHONE IS NULL.
ENDSELECT.
NOT
Beispiel
Selektiere die Kunden mit Kundennummern, die nicht im Postleitzahlbereich 68 wohnen:
... WHERE NOT POSTCODE LIKE '68%'
AND
Beispiel
Selektiere die Kunden mit Kundennummern, die kleiner als '01000000' sind und die nicht im Postleitzahlbereich 68 wohnen:
... WHERE ID < '01000000'
AND NOT
POSTCODE LIKE '68%'
OR
Beispiele
Selektiere die Kunden mit Kundennummern, die kleiner als '01000000' oder größer als '02000000' sind:
... WHERE ID < '01000000' OR
ID > '02000000'.
Selektiere die Kunden mit Kundennummern, die kleiner als '01000000' oder größer als '02000000' sind und die nicht in den Postleitzahlbereichen 68 oder 69 wohnen:
... WHERE ( ID < '01000000' OR ID > '02000000' )
AND NOT
( POSTCODE LIKE '68%' OR POSTCODE LIKE '69%' )
FOR ALL ENTRIES
Beispiel
Anzeige der freien Plätze von Flügen am 28.02.2001.
TYPES: BEGIN OF ftab_type,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
END OF ftab_type.
DATA: ftab TYPE STANDARD TABLE OF ftab_type WITH
NON-UNIQUE DEFAULT KEY INITIAL SIZE 10,
free TYPE I,
wa_sflight TYPE sflight.
* ftab sei wie folgt gefüllt:
*
* CARRID CONNID
* --------------
* LH 2415
* SQ 0026
* LH 0400
SELECT * FROM sflight INTO wa_sflight
FOR ALL ENTRIES IN ftab
WHERE CARRID = ftab-carrid AND
CONNID = ftab-connid AND
fldate = '20010228'.
free = wa_sflight-seatsocc - wa_sflight-seatsmax.
WRITE: / wa_sflight-carrid, wa_sflight-connid, free.
ENDSELECT.
* Der Befehl wirkt dann wie:
SELECT DISTINCT * FROM sflight INTO wa_sflight
WHERE ( carrid = 'LH' AND
connid = '2415' AND
fldate = '20010228' ) OR
( carrid = 'SQ' AND
connid = '0026' AND
fldate = '20010228' ) OR
( carrid = 'LH' AND
connid = '0400' AND
fldate = '20010228' ).
free = wa_sflight-seatsocc - wa_sflight-seatsmax.
WRITE: / wa_sflight-carrid, wa_sflight-connid, free.
ENDSELECT.
Dynamische Bedingung
Beispiel
Ausgabe aller Flüge an einem bestimmten Datum, nach Eingabe des Datums und der Fluggesellschaft.
PARAMETERS: airline TYPE C LENGTH 2,
date TYPE D.
DATA: where_clause TYPE STRING,
connid TYPE sflight-connid.
CONCATENATE 'carrid = ''' airline ''''
' AND fldate = ''' date '''' INTO where_clause.
SELECT connid FROM sflight INTO connid
WHERE (where_clause).
WRITE: / date, airline, connid.
ENDSELECT.
Zeilen gruppieren in der SELECT-Anweisung
Statische Angabe
Beispiel
Ausgabe der Anzahl der Passagiere, des Gesamtgewichtes und des durchschnittlichen Gewichtes des Gepäcks aller Lufthansa-Flüge am 28.02.2001.
DATA: count TYPE I, sum TYPE P LENGTH 8 DECIMALS 2, avg TYPE F.
DATA: connid TYPE sbook-connid.
SELECT connid COUNT( * ) SUM( luggweight ) AVG( luggweight )
INTO (connid, count, sum, avg)
FROM sbook
WHERE
carrid = 'LH' AND
fldate = '20010228'
GROUP BY connid.
WRITE: / connid, count, sum, avg.
ENDSELECT.
Dynamische Angabe
Beispiel
Ausgabe aller Abflugorte der Lufthansa mit Anzahl der Ziele.
DATA: BEGIN OF wa.
INCLUDE STRUCTURE spfli.
DATA: count TYPE I.
DATA: END OF wa.
DATA: field_list TYPE STRING,
group_by_list TYPE STRING,
count TYPE I.
field_list = 'CITYFROM COUNT( * ) AS COUNT'.
group_by_list = 'CITYFROM'.
SELECT DISTINCT (field_list)
INTO CORRESPONDING FIELDS OF wa
FROM spfli
WHERE
carrid = 'LH'
GROUP BY (group_by_list).
WRITE: / wa-cityfrom, wa-count.
ENDSELECT.
Gruppierte Zeilen einschränken in der SELECT-Anweisung
Statische Angabe
Beispiel
Ausgabe der Anzahl der Passagiere und des durchschnittlichen Gewichtes des Gepäcks aller Lufthansa-Flüge am 28.02.2001, bei denen das Durchschnittsgewicht des Gepäcks mehr als 20 kg betrug.
DATA: count TYPE I,
avg TYPE F,
connid TYPE sbook-connid.
SELECT CONNID COUNT( * ) avg( LUGGWEIGHT )
INTO (connid, count, avg)
FROM sbook
WHERE
carrid = 'LH' AND
fldate = '20010228'
GROUP BY connid
HAVING AVG( luggweight ) > '20.0'.
WRITE: / connid, count, avg.
ENDSELECT.
Dynamische Angabe
Beispiel
Nach Zuweisung von 'cityfrom' und 'sbook' an die Parameter comp bzw. tabname werden alle Abflugorte mit mehr als 3 Flugzielen ausgegeben.
PARAMETERS: comp TYPE C LENGTH 80,
tabname TYPE C LENGTH 80.
DATA: dref TYPE REF TO DATA,
long_name TYPE STRING,
count TYPE I,
fieldlist TYPE STRING,
condition TYPE STRING.
FIELD-SYMBOLS: <fs>.
CONCATENATE tabname '-' comp INTO long_name.
CREATE DATA dref TYPE (long_name).
ASSIGN dref->* TO <fs>.
CONCATENATE comp ' count(*)' INTO fieldlist.
condition = 'count(*) > 3'.
SELECT DISTINCT (fieldlist)
INTO (<fs>, count)
FROM (tabname)
GROUP BY (comp)
HAVING (condition).
WRITE: / <fs>, count.
ENDSELECT.
Zeilen sortieren in der SELECT-Anweisung
Sortierung nach Primärschlüssel
Beispiel
Ausgabe der Passagierliste des Lufthansa-Fluges 0400 am 28.02.2001.
DATA: wa_sbook TYPE sbook.
SELECT * FROM sbook INTO wa_sbook
WHERE
carrid = 'LH ' AND
connid = '0400' AND
fldate = '20010228'
ORDER BY PRIMARY KEY.
WRITE: / wa_sbook-bookid, wa_sbook-customid,
wa_sbook-custtype, wa_sbook-smoker,
wa_sbook-luggweight, wa_sbook-wunit,
wa_sbook-invoice.
ENDSELECT.
Statische Spaltenangabe
Beispiel
Ausgabe der Lufthansa-Flüge vom 27.02.2001 bis 05.03.2001, sortiert nach Flugzeugtyp und Anzahl der belegten Plätze.
DATA: wa_sflight TYPE sflight.
SELECT * FROM sflight INTO wa_sflight
WHERE carrid = 'LH' AND
fldate BETWEEN '20010227' AND '20010305'
ORDER BY planetype ASCENDING seatsocc DESCENDING.
WRITE: / wa_sflight-planetype, wa_sflight-seatsocc,
wa_sflight-connid, wa_sflight-fldate.
ENDSELECT.
Dynamische Spaltenangabe
Beispiel
Nach Eingabe von 'cityfrom' bzw. 'cityto' werden alle Abflugorte bzw. Zielorte der Lufthansa mit Anzahl der Ziele ausgegeben.
PARAMETERS: comp(80).
DATA: dref TYPE REF TO DATA,
long_name TYPE STRING,
name TYPE STRING,
ftab TYPE TABLE OF STRING,
count TYPE I.
FIELD-SYMBOLS: <fs>.
name = 'SPFLI'.
CONCATENATE name '-' comp INTO long_name.
CREATE DATA dref TYPE (long_name).
ASSIGN dref->* TO <fs>.
APPEND comp TO ftab.
APPEND 'COUNT( * ) AS COUNT' TO ftab.
SELECT DISTINCT (ftab)
INTO (<fs>, count)
FROM (name)
WHERE
carrid = 'LH'
GROUP BY (comp)
ORDER BY (comp).
WRITE: / <fs>, count.
ENDSELECT.
Explizite Cursor-Behandlung
Cursor öffnen
Beispiel
Öffnen des Datenbank-Cursors
C1 auf der Datenbanktabelle SFLIGHT für eine SELECT-Anweisung.
DATA: C1 TYPE CURSOR.
OPEN CURSOR C1 FOR
SELECT * FROM SFLIGHT WHERE CARRID = 'LH '.
Ergebnismenge lesen
Beispiel
Ausgabe der Passagierliste des Lufthansa-Fluges 0400 am 28.02.2001.
DATA: c TYPE CURSOR,
wa TYPE sbook.
OPEN CURSOR c FOR SELECT * FROM sbook
WHERE
carrid = 'LH ' AND
connid = '0400' AND
fldate = '20010228'
ORDER BY PRIMARY KEY.
DO.
FETCH NEXT CURSOR c INTO wa.
IF SY-SUBRC <> 0.
CLOSE CURSOR C. EXIT.
ENDIF.
WRITE: / wa-bookid, wa-customid, wa-custtype,
wa-smoker, wa-luggweight, wa-wunit,
wa-invoice.
ENDDO.
CLOSE CURSOR c.
Zeilen einfügen mit INSERT
Automatische Mandantenbehandlung
Beispiel
Hinzufügen des Kunden Robinson im aktuellen Mandanten.
DATA: wa TYPE scustom.
wa-id = '12400177'.
wa-name = 'Robinson'.
wa-postcode = '69542'.
wa-city = 'Heidelberg'.
wa-custtype = 'P'.
wa-discount = '003'.
wa-telephone = '06201/44889'.
INSERT INTO scustom VALUES wa.
Explizite Angabe des Mandanten
Beispiel
Hinzufügen des Kunden Robinson im Mandanten 2.
DATA: wa TYPE scustom.
wa-mandt = '002'.
wa-id = '12400177'.
wa-name = 'Robinson'.
wa-postcode = '69542'.
wa-city = 'Heidelberg'.
wa-custtype = 'P'.
wa-discount = '003'.
wa-telephone = '06201/44889'.
INSERT scustom CLIENT SPECIFIED FROM wa.
Zeilen ändern mit UPDATE
Angabe von Spalten
Beispiel
Ändern des Rabatts aller Kunden (im aktuellen Mandanten) auf 3 Prozent.
UPDATE scustom SET discount = '003'.
Beispiel
Das gleiche Beispiel unter Verwendung einer dynamischen SET-Bedingung:
DATA: tabname TYPE STRING,
set_clause TYPE STRING.
tabname = 'SCUSTOM'.
set_clause = 'DISCOUNT = ''003'' '.
UPDATE (tabname) SET (set_clause).
Beispiel
Die Doppelpunkt-Komma-Logik sollte nicht verwendet werden, da eine falsche Verwendung zum ungewollten
Ändern einer ganzen Datenbanktabelle führen kann. Bei folgendem Code-Fragment stellt nicht
eine einzelne Anweisung dar, die den Rabatt und die Telefonnummer des Kunden mit der Kundennummer
'00017777' aktualisiert. Stattdessen handelt es sich um zwei Anweisungen, wobei die erste den Rabatt
für alle Kunden und die zweite die Telefonnummer des Kunden mit der Kundennummer '00017777' ändert.
* FALSCH * WRONG * FALSCH * WRONG * FALSCH * WRONG *
* UPDATE SCUSTOM SET: DISCOUNT = '003',
* TELEPHONE = '0621/444444'
* WHERE ID = '00017777'.
WHERE-Bedingung
Beispiel
Erhöhen der belegten Plätze des Lufthansafluges 0400 am 28.02.2001 (im aktuellen Mandanten) um 3 Plätze.
UPDATE sflight SET seatsocc = seatsocc + 3
WHERE carrid = 'LH' AND
connid = '0400' AND
fldate = '20010228'.
WHERE-Bedingung mit Mandantenangabe
Beispiel
Erhöhen der belegten Plätze des Lufthansafluges 0400 am 28.02.2001 im Mandanten 2 um 3 Plätze:
UPDATE sflight CLIENT SPECIFIED
SET seatsocc = seatsocc + 3
WHERE mandt = '002' AND
carrid = 'LH' AND
connid = '0400' AND
fldate = '20010228'.
Angabe eines Arbeitsbereichs
Beispiel
Ändern der Telefonnummer des Kunden mit der Kundennummer '12400177' im aktuellen Mandanten.
DATA wa TYPE scustom.
SELECT SINGLE * FROM scustom INTO wa
WHERE id = '12400177'.
wa-telephone = '06201/44889'.
UPDATE scustom FROM wa.
Beispiel
Ändern des Rabatts des Kunden mit der Kundennummer '00017777' (im aktuellen Mandanten) auf 3 Prozent.
DATA: wa TYPE scustom.
SELECT SINGLE * FROM scustom INTO wa
WHERE id = '00017777'.
wa-discount = '003'.
UPDATE scustom FROM wa.
Zeilen einfügen oder ändern mit MODIFY
Beispiel
Hinzufügen oder Ändern der Daten des Kunden Robinson im aktuellen Mandanten:
DATA: wa TYPE scustom.
wa-id = '12400177'.
wa-name = 'Robinson'.
wa-postcode = '69542'.
wa-city = 'Heidelberg'.
wa-custtype = 'P'.
wa-discount = '003'.
wa-telephone = '06201/44889'.
MODIFY scustom FROM wa.
Zeilen löschen mit DELETE
Löschen aller Zeilen
Beispiel
Löschen aller Flugbuchungen (im aktuellen Mandanten).
DELETE FROM SBOOK.
Angabe einer WHERE-Bedingung
Beispiel
Löschen aller Buchungen des Lufthansafluges 0400 am 28.02.1995 (im aktuellen Mandanten):
DELETE FROM SBOOK WHERE CARRID = 'LH' AND
CONNID = '0400' AND
FLDATE = '19950228'.
Angabe eines Arbeitsbereichs
Beispiel
Löschen der Buchung mit der Buchungsnummer 3 des Lufthansafluges 0400 am 28.02.2001 (im aktuellen Mandanten).
DATA wa TYPE sbook.
wa-carrid = 'LH'.
wa-connid = '0400'.
wa-fldate = '20010228'.
wa-bookid = '00000003'.
DELETE sbook FROM wa.
Dynamischer Quelltext
Quelltext in einem Textfeld.
Beispiel
Löschen aller Zeilen in einer Datenbanktabelle.
PARAMETERS tabname(80) TYPE c.
DELETE FROM (tabname).
Quelltext in einem String.
Beispiel
Anzeige der Flugverbindungen nach Eingabe von Start- und Zielflughafen.
PARAMETERS: p_from TYPE SPFLI-CITYFROM, p_to TYPE SPFLI-CITYTO.
DATA: where_clause TYPE STRING,
carr TYPE spfli-carrid,
conn TYPE spfli-connid.
CONCATENATE 'CITYFROM = ''' p_from ''' AND CITYTO = ''' p_to ''''
INTO where_clause.
SELECT carrid connid FROM spfli
INTO (carr, conn)
WHERE (where_clause).
WRITE: / carr, conn.
ENDSELECT.
Quelltext in einer internen Tabelle mit Textfeldern
Beispiel
Ausgabe der Anzahl der Flugbuchungen nach Eingabe von Fluggesellschaft, Flugnummer und Flugtag.
PARAMETERS: p_carrid TYPE sbook-carrid,
p_connid TYPE sbook-connid,
p_fldate TYPE sbook-fldate.
TYPES: t_src(80) TYPE C.
DATA: where_tab TYPE TABLE OF t_src, line TYPE t_src.
CONCATENATE 'CARRID = ''' p_carrid '''' INTO line.
APPEND line TO where_tab.
APPEND 'AND' TO where_tab.
CONCATENATE 'CONNID = ''' p_connid '''' INTO line.
APPEND line TO where_tab.
APPEND 'AND' TO where_tab.
CONCATENATE 'FLDATE = ''' p_fldate '''' INTO line.
APPEND line TO where_tab.
SELECT count(*) FROM sbook WHERE (where_tab).
WRITE: / sy-dbcnt.
Quelltext in einer internen Tabelle mit Strings
Beispiel
Ausgabe der Flugdaten aller Flüge mit freien Plätzen (nach Eingabe von Fluggesellschaft und -nummer).
PARAMETERS: p_carrid TYPE sflight-carrid,
p_connid TYPE sflight-connid.
DATA: s TYPE STRING,
stringtab TYPE TABLE OF STRING,
date TYPE sflight-fldate.
CONCATENATE ' CARRID = ''' p_carrid ''' AND' INTO s.
APPEND s TO stringtab.
CONCATENATE ' CONNID = ''' p_connid '''' INTO s.
APPEND s TO stringtab.
SELECT fldate FROM sflight INTO date
WHERE (stringtab) AND seatsocc < sflight~seatsmax.
WRITE : / date.
ENDSELECT.
Beispiel
Ausgabe einer Liste aller Fluggesellschaften (mit Kurzbezeichnung und Namen).
DATA: carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname.
SELECT carrid carrname
INTO (carrid, carrname)
FROM scarr.
WRITE: / carrid, carrname.
ENDSELECT.
Dynamische logische Bedingung
Beispiel
Anzeige von Flugverbindungen nach Eingabe von Fluggesellschaft und Flugnummer.
PARAMETERS: carr_id TYPE spfli-carrid,
conn_id TYPE spfli-connid.
DATA: where_clause TYPE STRING,
and TYPE C LENGTH 4,
wa_spfli TYPE spfli.
IF carr_id IS NOT INITIAL.
CONCATENATE 'CARRID = ''' carr_id '''' INTO where_clause.
and = ' AND'.
ENDIF.
IF conn_id IS NOT INITIAL.
CONCATENATE where_clause and ' CONNID = ''' conn_id ''''
INTO where_clause.
ENDIF.
SELECT * FROM spfli INTO wa_spfli WHERE (where_clause).
WRITE: / wa_spfli-carrid, wa_spfli-connid, wa_spfli-cityfrom,
wa_spfli-cityto, wa_spfli-deptime.
ENDSELECT.
Vendor Master (General Section) CL_GUI_FRONTEND_SERVICES - Frontend Services
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 73968 Date: 20240523 Time: 111003 sap01-206 ( 314 ms )