‎2007 Nov 18 7:59 AM
Hi Gurus!!
Apart from At Selection-screen event, are there any ways to validate Selection-screen inputs?
Plz do reply me
Pratibha J
‎2007 Nov 18 8:02 AM
Hi
You can use different eveents related AT SELECTION-SCREN like to validate the fields,blocks etc
AT SELECTION-SCREEN on <field>
AT SELECTION-SCREEN on Block < block>
AT SELECTION-SCREEN OUTPUT
AT SELECTION-SCREEN
Regards
Anji
‎2007 Nov 18 9:08 AM
Hi Pratibha,
1. U are right, we can do it in <b>START-OF-SELECTION</b> event.
2. But we have to take care like this.
3.
<b>START-OF-SELECTION.</b>
IF <CONDITION>.
<b>MESSAGE 'WRONG INPUT' TYPE 'I'.
LEAVE LIST-PROCESSING.</b>
ENDIF.
WRITE 😕 'DATA'.
4. <b>Important point is</b>
a)use message type I and not <b>E</b>
b) use <b>leave list-processing</b>.
===================================
and u can use <b>AT SELECTION-SCREEN variants</b> as well..
for more information about AT SELECTION-SCREEN and
write AT SELECTION-SCREEN in ABAP Editor..
put ur cursor on it
then press F1... nd go through ABAP keyword documentation...
press F1
AT SELECTION-SCREEN on <field>
AT SELECTION-SCREEN on Block < block>
AT SELECTION-SCREEN OUTPUT
AT SELECTION-SCREEN
Hope it will solve ur problem,
<b>Reward points if useful...</b>
Thanks & Regards
ilesh 24x7
‎2007 Nov 18 4:11 PM
You can make input obligatory.
And you can use parameters of the correct type. If you declare a parameter TYPE sy-datum, then, if the user doen't enter a proper date in the proper format, then the selection screen won't allow it. In many cases, the user won't be able to type in incorrect data.
Rob
‎2007 Nov 19 2:36 AM
Hi
Its possible ...
Check below Code,,u can write this under At selection-screen on so_vbeln(eg)
Validate Delivery Document
AT SELECTION-SCREEN ON so_vbeln . " Delivery document
PERFORM validate_vbeln .
FORM validate_vbeln.
DATA : l_t_vbeln TYPE TABLE OF vbuk-vbeln WITH HEADER LINE ,
l_f_vbeln TYPE vbuk-vbeln .
RANGES ra_vbeln FOR vbuk-vbeln.
LOOP AT so_vbeln.
IF NOT so_vbeln-low IS INITIAL.
ra_vbeln-sign = 'I'.
ra_vbeln-option = 'EQ'.
ra_vbeln-low = so_vbeln-low.
APPEND ra_vbeln.
ENDIF.
IF NOT so_vbeln-high IS INITIAL.
ra_vbeln-sign = 'I'.
ra_vbeln-option = 'EQ'.
ra_vbeln-low = so_vbeln-high..
APPEND ra_vbeln.
ENDIF.
ENDLOOP .
IF NOT so_vbeln[] IS INITIAL.
SELECT vbeln INTO TABLE l_t_vbeln
FROM vbuk
WHERE vbeln IN ra_vbeln.
ENDIF.
LOOP AT so_vbeln.
IF so_vbeln-low <> space.
READ TABLE l_t_vbeln WITH KEY = so_vbeln-low.
IF sy-subrc <> 0.
SET CURSOR FIELD 'SO_vbeln-LOW'.
MESSAGE e001(vb) WITH so_vbeln-low.
ENDIF.
ENDIF.
IF so_vbeln-high <> space.
READ TABLE l_t_vbeln WITH KEY = so_vbeln-high.
IF sy-subrc <> 0.
SET CURSOR FIELD 'SO_vbeln-HIGH'.
MESSAGE e001(vb) WITH so_vbeln-high.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " validate_vbeln
Hope this Helps .
Praveen
‎2007 Nov 19 6:10 AM
HI
Yes , there some evnts other than AT SELECTION-SCREEN which will validate the screen
i am listing here 2 examples
you can understand very easily
REPORT ZNNR_REPORT NO STANDARD PAGE HEADING MESSAGE-ID ZNNR LINE-SIZE 100 LINE-COUNT 65(4).
******DATA DECLARATIONS**********
DATA : BEGIN OF IT_PLANT OCCURS 0,
MATNR LIKE MARA-MATNR,
WERKS LIKE MARC-WERKS,
PSTAT LIKE MARC-PSTAT,
EKGRP LIKE MARC-EKGRP,
END OF IT_PLANT.
DATA : BEGIN OF IT_PONO OCCURS 0,
EBELN LIKE EKKO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
WERKS LIKE EKPO-WERKS,
LGORT LIKE EKPO-LGORT,
END OF IT_PONO.
TABLES EKKO.
********END OF DATA DECLARATIONS*********
********SELECTION SCREEN DESIGN ***********
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER : P_WERKS LIKE MARC-WERKS MODIF ID S1.
SELECT-OPTIONS : S_EBELN FOR EKKO-EBELN NO INTERVALS MODIF ID S2.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-004.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : R1 RADIOBUTTON GROUP G1 DEFAULT 'X'.
SELECTION-SCREEN COMMENT 5(20) TEXT-002 FOR FIELD R1.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS : R2 RADIOBUTTON GROUP G1.
SELECTION-SCREEN COMMENT 5(20) TEXT-003 FOR FIELD R2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
******END OF SELECTION SCREEN DESIGN****************
*********INITIALIZATION OF SELECTION SCREEN ELEMENTS.*****
INITIALIZATION.
P_WERKS = '1000'.
S_EBELN-LOW = '4500016926'.
S_EBELN-OPTION = 'EQ'.
S_EBELN-SIGN = 'I'.
APPEND S_EBELN.
CLEAR S_EBELN.
************END OF INITIALIZATION***********************
***********SCREEN MODIFICATIONS*******************
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF R1 EQ 'X' AND SCREEN-GROUP1 EQ 'S2'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
IF R2 EQ 'X' AND SCREEN-GROUP1 EQ 'S1'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
********END OF SCREEN MODIFICATIONS*****************
*********VALIDATION FOR SCREEN FIELDS********************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_OBJID-LOW.
IF S_OBJID IS NOT INITIAL.
SELECT OTYPE OBJID FROM HRP1000
INTO TABLE IT_OBJID_SH
WHERE OTYPE = 'D'.
IF SY-SUBRC EQ 0.
SEARCH HELP FOR QUALIFICATION.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
DDIC_STRUCTURE = ' '
RETFIELD = 'OBJID'
PVALKEY = ' '
DYNPPROG = SY-REPID
DYNPNR = SY-DYNNR
DYNPROFIELD = 'S_OBJID'
STEPL = 0
WINDOW_TITLE =
VALUE = ' '
VALUE_ORG = 'S'
MULTIPLE_CHOICE = ' '
DISPLAY = ' '
CALLBACK_PROGRAM = ' '
CALLBACK_FORM = ' '
MARK_TAB =
IMPORTING
USER_RESET =
TABLES
VALUE_TAB = IT_OBJID_SH
FIELD_TAB =
RETURN_TAB = RETURN_TAB
DYNPFLD_MAPPING =
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
.
IF SY-SUBRC NE 0.
MESSAGE 'NO RECORD FOUND FOR THE GIVEN SELECTION CRITERIA.' TYPE 'E'.
ENDIF.
*
ENDIF.
REFRESH IT_OBJID.
***************VALIDATION OF SCREEN FIELDS ENDS***********
<b>Reward if usefull</b>