zwei Selektionsbilder

www.4AP.de - alles über ABAP  -  Verwendung zweier verschiedenen Selektionsbildschirme für einen Report

Beispielcoding: wenn z.B. verschiedene Selektionsvorauswahlen (z.B. Einschränkungen) verwendet werden sollen (nur eigene Belege o.ä.).



 

Anwendungsfälle gibt es einige, für die ein zweiter Selektionsbildschirm nützlich ist:

  • abgespeckter Selektionsbildschirm (nur das nötigste)
  • zusätzliche Selektionsfelder
  • Gestaltung einer Vorauswahl
  • u.U. bei unterschiedlichen Berechtigungen nötig
  • wenn die Datenbeschaffung abgewandelt werden soll
Der jeweils aktuelle Selektionsbildschirm kann natürlich über sy-dynnr abgefragt werden.
Die Sonderbehandlung kann gut bei 'AT SELECTION-SCREEN' stattfinden
*
* Coded by Thorsten Neubüser - www.4ap.de
*
*======================================================================*
* SELEKTIONSBILDSCHIRM *
*======================================================================*


* Version für eigene Patente
SELECTION-SCREEN BEGIN OF SCREEN 1010.
SELECTION-SCREEN BEGIN OF BLOCK block_1 WITH FRAME TITLE text-001.
PARAMETERS:
p_veran LIKE it_eigene_patente-veran.
SELECT-OPTIONS:
so_matnr FOR it_daten-matnr,
so_paten FOR it_daten-patent,
so_aktiv FOR it_daten-aktiv,
so_prodo FOR it_daten-prod_ort,
so_relev FOR it_daten-relevant,
so_erfas FOR it_daten-erfas,
so_bemer FOR it_daten-bemer.
SELECTION-SCREEN END OF BLOCK block_1.
SELECTION-SCREEN END OF SCREEN 1010.

* normaler Selektionsbidschirm
SELECTION-SCREEN BEGIN OF BLOCK block_2 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
s_matnr FOR it_daten-matnr,
s_patent FOR it_daten-patent,
s_aktiv FOR it_daten-aktiv,
s_prod_o FOR it_daten-prod_ort,
s_relev FOR it_daten-relevant,
s_erfas FOR it_daten-erfas,
s_bemer FOR it_daten-bemer.
SELECTION-SCREEN END OF BLOCK block_2.

AT SELECTION-SCREEN.
PERFORM sonderbehandlung_screen_1010.

AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-name = 'P_VERAN'.
screen-input = '0'.
MODIFY SCREEN.
ENDIF. " screen-name = 'P_VERAN'
ENDLOOP. " AT SCREEN


<snip>


*&---------------------------------------------------------------------*
*& Form sonderbehandlung_screen_1010
*&---------------------------------------------------------------------*

FORM sonderbehandlung_screen_1010.
SELECT patent veran FROM zmmpat000 CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE it_eigene_patente
WHERE mandt = sy-mandt
AND veran = p_veran.
ENDFORM. " sonderbehandlung_screen_1010


*&---------------------------------------------------------------------*
*& Form daten_holen
*&---------------------------------------------------------------------*

FORM daten_holen.
* Daten selektieren
IF sy-dynnr = '1010'.
SELECT * FROM zmmpat003
INTO CORRESPONDING FIELDS OF TABLE it_daten
FOR ALL ENTRIES IN it_eigene_patente
WHERE patent = it_eigene_patente-patent
AND matnr IN s_matnr
AND patent IN s_patent
AND aktiv IN s_aktiv
AND prod_ort IN s_prod_o
AND relevant IN s_relev
AND erfas IN s_erfas
AND bemer IN s_bemer.
ELSE. " sy-dynnr = '1010'
SELECT * FROM zmmpat003
INTO CORRESPONDING FIELDS OF TABLE it_daten
WHERE matnr IN s_matnr
AND patent IN s_patent
AND aktiv IN s_aktiv
AND prod_ort IN s_prod_o
AND relevant IN s_relev
AND erfas IN s_erfas
AND bemer IN s_bemer.
ENDIF. " sy-dynnr = '1010'
* nur fortfahren wenn mindestens 1 Satz selektiert wurde
DESCRIBE TABLE it_daten LINES sy-tfill.
IF sy-tfill = 0.
MESSAGE i010(es). " nix gefunden
ENDIF. " sy-tfill = 0
ENDFORM. " daten_holen


***************
* *
* T T *
* N *
* *
* `---´ *
* *
***************