‎2007 Jul 12 3:27 PM
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.
‎2007 Jul 12 3:41 PM
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
‎2007 Jul 12 3:50 PM
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...
‎2007 Jul 12 3:44 PM
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