Výběrová kritéria

V minulé části jsme si načetli data tabulky SFLIGHT a zobrazili je na obrazovce. Dnes si přidáme výběrová kritéria, tedy parametry podle kterých vybíráme data z tabulky.
Doporučuji nejprve prohlédnout si tabulku SFLIGHT v transakci SE16. Vhodným parametrem pro filtování záznamů se jeví pole CONNID, připadně PLANETYPE.
Parametry výběru přidáme do programu před příkaz START-OF-SELECTION.

Můžeme vybírat podle pouze jedné hodnoty . V tom případě použijeme:

PARAMETERS: pconnid like sflight-connid.

pconnid je naše výběrová hodnota. Zafixujte si pojmenování parametrů s použitím “p” a názvu pole v tabulce. Like nám zaručí, že výběrová hodnota bude v souladu s vlastnostmi pole sflight-connid.

Můžeme také ale vybírat podle intervalu hodnot. V tom případě použijeme:

SELECT-OPTIONS: pplane for sflight-planetype.

Zkuste si přidat oba parametry do programu a vyzkoušet filtraci záznamů.
Nesmíme opomenout pak upravit příkaz SELECT o podmínky výběru

where connid eq pconnid and
planetype in pplane.

pro PARAMETERS volíme podmínku EQ je rovno, případně NE není rovno.
Pro SELECT-OPTIONS doplníme in, tedy paramter výběru je v intervalu.

Celý kod programu:

REPORT ZTEST0001 .

TABLES: sflight.

DATA: BEGIN OF report OCCURS 3,
carrid LIKE sflight-carrid,
connid LIKE sflight-connid,
fldate LIKE sflight-fldate,
seatsmax LIKE sflight-seatsmax,
END OF report.

PARAMETERS: pconnid like sflight-connid.

SELECT-OPTIONS: pplane for sflight-planetype.

START-OF-SELECTION.

SELECT * from SFLIGHT

where connid eq pconnid and

planetype in pplane.

MOVE-CORRESPONDING SFLIGHT to report.

append report.

clear report.

ENDSELECT.

LOOP at REPORT.

WRITE : / report-carrid ,
report-connid ,
report-fldate ,
report-seatsmax .

ENDLOOP.

Program spustíme klávesou F8.

2 comments

  1. Dave napsal:

    Tak problem byl v tom, že daná tabulka SFLIGHT byla prázdná. Předělal jsem to na tabulku uživatelů USR01 a tady už to šlape:

    REPORT ZRF_TEST.

    TABLES: usr01.

    DATA: BEGIN OF report OCCURS 3,
    bname LIKE usr01-bname,
    END OF report.

    START-OF-SELECTION.

    SELECT * from USR01.

    MOVE-CORRESPONDING USR01 to report.

    append report.

    clear report.

    ENDSELECT.

    LOOP at REPORT.

    WRITE : / report-bname.

    ENDLOOP.

  2. Abap napsal:

    Lze to zkoušet s různými tabulkami…v se16 se podíváš, kde jsou data. Je pravda, že někde může být tabulka sflight prázdná…

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*

„Rozdávat rady je zbytečné. Moudrý si poradí sám a hlupák stejně neposlechne.“ Mark Twain