Další rozšíření reportu

Dnes si rozšíříme další výběrová kritéria pro výběr dat, doplníme výběrovou podmínku pro data, když vybíráme z následné tabulky a ukážeme si, jak můžeme předem vyplnit horní a dolní mez pro parametr SELECT-OPTIONS.
začneme úpravou parameterů výběru. Doplníme třídění záznamů dle pole marc-ekgrp (skupina nákupu) a mara-mtart (typ materiálu).

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-010.
parameters: pwerks like marc-werks memory id wrk obligatory.
SELECT-OPTIONS: pmatnr for marc-matnr.
select-options: pekgrp for marc-ekgrp.
select-options: pmtart for mara-mtart.
SELECTION-SCREEN END OF BLOCK b1.
        


pro nově doplněný parametr marc-ekgrp bychom rádi uživatelům ušetřili práci, aby nemuseli při každém
spuštění programu doplňovat kritéria. Představme si parametr pekgrp jako malou tabulku.
Musíme nejprve dodat hodnotu pro SIGN ( I = include/obsahuje, E = exclude/neobsahuje),
kterým určíme, že parameter má být vybrán, nebo potlačen. Hodnota OPTION slouží k určení, že platná hodnaota je mezi low a high. BT znamená BETWEEN (mezi). Posledním příkazem připojíme všechny hodnoty parametru.
Tento postup lze v příkazu INITIALIZATION i několikrát opakovat.

INITIALIZATION.
pekgrp-sign = 'I'.
pekgrp-option = 'BT'.
pekgrp-low = '100'.
pekgrp-high = '500'.
append pekgrp. 
START-OF-SELECTION.
           


Zde upravíme ještě výběr z tabulky marc, kde máme nový parametr ekgrp. Tento parametr vybíráme přímo v příkazu SELECT. Další parametry tabulky MARC bychom přidali zde.

select * from marc where
matnr in pmatnr and
ekgrp in pekgrp and
werks eq pwerks.
MOVE-CORRESPONDING marc to report.
                       


Údaj o typu materiálu je v tabulce MARA. Jeho výběr tedy ovlivníme až při výběru data tabulky mara.
Ověříme jej pomocí IF NOT tedy podmínka s negací. A pak určíme co dál, pokud je podmínka splněna.

*vyber z tabulky mara
select single * from mara where
matnr eq report-matnr.
if sy-subrc eq 0.
report-mtart = mara-mtart.
report-meins = mara-meins.
endif. 
*vyřazení nevhodného typu materiálu
if not report-mtart in pmtart.
clear report.
continue.
endif.
              


Pokud byla podmínka splněna a typ materiálu nepatří do našeho výběru, nejprve vyčistíme právě plněný
řádek tabulky report příkazem CLEAR, následně pomocí příkazu CONTINUE jdeme na začátek příkazu SELECT a vybíráme další záznamy.

Napsat komentář

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

*