Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Event - At selection-screen

Former Member
0 Likes
586

Hi Friends,

Use of at selection screen event is to perform some validation PBO .. process before output.

But wht is the use of

AT SELCETION-SCREEN ON

AT SELECTION-SCREEN OUTPUT

Please explain with some sample programs.

3 REPLIES 3
Read only

LeonardoAraujo
SAP Mentor
SAP Mentor
0 Likes
555

See SAP documentation below.

AT SELECTION-SCREEN OUTPUT is a more generic PBO validation while

AT SELECTION_SCREEN ON psel is a specific field validation like FIELD XX MODULE YY in the PBO. It is processed before PBO event

AT SELECTION_SCREEN ON psel

Effect

This event is assigned to the selection screen fields corresponding to the report parameter or selection criterion psel.

If the report starts an error dialog at this point, precisely these fields become ready for input.

SELECT-OPTIONS NAME FOR SY-REPID MODIF ID XYZ. 
... 
AT SELECTION-SCREEN OUTPUT. 
  LOOP AT SCREEN. 
    CHECK SCREEN-GROUP1 = 'XYZ'. 
    SCREEN-INTENSIFIED = '1'. 
    MODIFY SCREEN. 
  ENDLOOP.

Leonardo De Araujo

Read only

0 Likes
555

I meant "AT SELECTION_SCREEN ON psel is a specific field validation like FIELD XX MODULE YY in the <b>PAI</b>. <b>Since PAI is called after the user enters data and PBO is just before returning to the user, the PAI event will processed before PBO</b>

Hope it clarifies...

Read only

Former Member
0 Likes
555

Hi,

<b>AT SELCETION-SCREEN ON</b>

The event is processed when the selection screen has been processed (at the end of PAI ).

Validation & Checks of inputted values happen here

<b>AT SELECTION-SCREEN OUTPUT.</b>

The event is processed before the display of selection screen.

<b>You can refer with this example also..</b>

REPORT z_72105_alv_radio.

TABLES: eban,mara, sscrfields.

TYPE-POOLS: slis.

DATA: BEGIN OF it_eban OCCURS 0,

banfn TYPE eban-banfn,

bnfpo TYPE eban-bnfpo,

bsakz TYPE eban-bsakz,

statu TYPE eban-statu,

ekgrp TYPE eban-ekgrp,

matnr TYPE eban-matnr,

werks TYPE eban-werks,

lgort TYPE eban-lgort,

preis TYPE eban-preis,

peinh TYPE eban-peinh,

END OF it_eban.

DATA: ad_repid TYPE sy-repid,

matnew TYPE eban-matnr,

strloc TYPE eban-lgort.

DATA : BEGIN OF it_mara OCCURS 0,

matnr TYPE mara-matnr,

END OF it_mara.

DATA : BEGIN OF it_lgort OCCURS 0,

lgort TYPE eban-lgort,

END OF it_lgort.

DATA: inum TYPE i VALUE 1,

icount TYPE i VALUE 0.

DATA: fldcat TYPE slis_t_fieldcat_alv,

layout TYPE slis_layout_alv,

e_event TYPE slis_t_event,

wa_event TYPE slis_alv_event.

INITIALIZATION .

ad_repid = sy-repid.

LOOP AT SCREEN.

IF screen-group1 = 'C1' .

screen-active = '0' .

MODIFY SCREEN .

ENDIF.

IF screen-name = 'S_MATNR-HIGH' OR screen-name = 'S_MATNR-LOW' OR screen-name = 'STR-HIGH' OR screen-name = 'STR-LOW'.

screen-input = '0' .

MODIFY SCREEN .

ENDIF.

ENDLOOP.

PERFORM fieldcatalog_populate USING fldcat.

PERFORM layout USING layout.

PERFORM build_event.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS: r1 RADIOBUTTON GROUP prr USER-COMMAND x ,

r2 RADIOBUTTON GROUP prr .

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-000.

PARAMETERS: material AS CHECKBOX USER-COMMAND x MODIF ID d1 .

SELECT-OPTIONS: s_matnr FOR mara-matnr MODIF ID d1.

PARAMETERS: storage AS CHECKBOX USER-COMMAND x MODIF ID d1.

SELECT-OPTIONS: str FOR eban-lgort MODIF ID d1.

SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-002.

SELECT-OPTIONS: banfn FOR eban-banfn MODIF ID c1.

SELECTION-SCREEN END OF BLOCK b3.

SELECTION-SCREEN PUSHBUTTON 1(15) text-t10 USER-COMMAND fetch .

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF r1 EQ 'X' AND

screen-group1 = 'C1'.

screen-active = '0'.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

LOOP AT SCREEN.

IF r2 EQ 'X' AND

screen-group1 = 'D1'.

screen-active = '0'.

ENDIF.

MODIFY SCREEN.

ENDLOOP.

LOOP AT SCREEN.

IF material EQ 'X' .

IF screen-name = 'S_MATNR-HIGH' OR screen-name = 'S_MATNR-LOW'.

screen-input = '1' .

MODIFY SCREEN .

ENDIF.

ELSE.

IF material NE 'X' .

IF screen-name = 'S_MATNR-HIGH' OR screen-name = 'S_MATNR-LOW'.

screen-input = '0' .

MODIFY SCREEN .

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

LOOP AT SCREEN.

IF storage EQ 'X' .

IF screen-name = 'STR-HIGH' OR screen-name = 'STR-LOW'.

screen-input = '1' .

MODIFY SCREEN .

ENDIF.

ELSE.

IF storage NE 'X' .

IF screen-name = 'STR-HIGH' OR screen-name = 'STR-LOW'.

screen-input = '0' .

MODIFY SCREEN .

ENDIF.

ENDIF.

ENDIF.

ENDLOOP.

AT USER-COMMAND .

AT SELECTION-SCREEN.

CASE sscrfields.

WHEN 'FETCH'.

PERFORM z_72105_selection.

ENDCASE.

&----


*& Form USER_COMMAND

&----


  • text

----


  • -->V_UCOMM text

  • -->SELFIELD text

----


*

*

FORM user_command USING v_ucomm TYPE sy-ucomm

selfield TYPE slis_selfield.

IF v_ucomm = 'PREVIOUS'.

inum = inum - 1.

IF inum = 0.

inum = inum + 1.

icount = 0.

MESSAGE e000(z_72105_msg).

ELSE.

icount = 0.

LOOP AT it_eban.

DELETE it_eban.

ENDLOOP.

PERFORM z_72105_selection.

ENDIF.

ENDIF.

IF v_ucomm = 'NEXT'.

LOOP AT it_mara .

icount = icount + 1 .

ENDLOOP.

inum = inum + 1.

IF inum GT icount .

inum = inum - 1 .

icount = 0 .

MESSAGE e000(z_72105_msg).

ELSE.

icount = 0.

LOOP AT it_eban .

DELETE it_eban .

ENDLOOP.

ENDIF.

PERFORM z_72105_selection.

ENDIF.

ENDFORM. "user_command

*

*

*&----


**& Form z_72105_selection

*&----


    • text

*----


*

FORM z_72105_selection .

  • END-OF-SELECTION.

  • START-OF-SELECTION.

SELECT DISTINCT matnr FROM eban INTO TABLE it_mara WHERE matnr IN s_matnr.

READ TABLE it_mara INTO matnew INDEX inum.

SELECT * FROM eban INTO CORRESPONDING FIELDS OF TABLE it_eban

WHERE matnr = matnew.

SELECT DISTINCT lgort FROM eban INTO TABLE it_lgort WHERE lgort IN str.

READ TABLE it_lgort INTO strloc INDEX inum.

SELECT * FROM eban INTO CORRESPONDING FIELDS OF TABLE it_eban

WHERE lgort = strloc.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

i_callback_program = ad_repid

i_callback_pf_status_set = 'SET_PF_STATUS'

i_callback_user_command = 'USER_COMMAND'

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

is_layout = layout

it_fieldcat = fldcat

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

it_events = e_event

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = it_eban

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

  • I_CALLBACK_PROGRAM = ' '

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

  • IT_FIELDCAT =

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab =

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " z_72105_selection

&----


*& Form set_pf_status

&----


  • text

----


  • -->RT_EXTAB text

----


FORM set_pf_status USING rt_extab TYPE slis_t_extab .

SET PF-STATUS 'SET_PF_STATUS' .

ENDFORM . "SET_PF_STATUS