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 paremetr 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.

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 *

*

„Kdy se nudíme lépe než v kruhu rodiny?“ Oscar Wilde