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

Selection screen validations

Former Member
0 Likes
657

Hi SAP Guru's

Below are my selection screen fields. I need to do validataions for s_vkorg and s_kunnr. Means report has to give output for KUNNR for the respective vkorg ranges. Here vkorg has ranges like AU01 to AU91 then it should fetch KUNNR data within that VKORG range and same like KUNNR also like within AU01 to AU91 range it has to fetch Kunnr from 00001 to 00010 this is the scenario . The report should dispaly on the Kunnr which is in the particular VKORG

OR

Material No. for the respective date range this is also same like above scenario like it has to fetch from Matrials and to material within the date range. My selction screen is like :

SELECT-OPTIONS : s_vkorg FOR vbak-vkorg obligatory,

s_kunnr FOR vbak-kunnr obligatory,

s_matnr FOR vbap-matnr ,

s_fkdat FOR vbak-fmbdat.

Plz help me on this.

If helpfull reward points will be given.

Thanks in advance.

5 REPLIES 5
Read only

Former Member
0 Likes
627

hi

SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: ZVENDOR FOR LFA1-LIFNR OBLIGATORY,

ZDATE FOR BSAK-BLDAT.

PARAMETERS: ZBUKRS LIKE BSEG-BUKRS .

SELECTION-SCREEN END OF BLOCK 1.

DATA: ZDATE1 LIKE BSAK-BLDAT.

*----


*--


SELECTION SCREEN VALIDATION--


*----


AT SELECTION-SCREEN.

AT SELECTION-SCREEN ON ZVENDOR.

IF NOT ZVENDOR[] IS INITIAL.

SELECT SINGLE * FROM LFA1 WHERE LIFNR IN ZVENDOR.

IF SY-SUBRC <> 0.

MESSAGE E000(8I) WITH 'enter valid vendor'.

ENDIF.

ENDIF.

AT SELECTION-SCREEN ON ZDATE.

IF NOT ZDATE[] IS INITIAL.

SELECT BLDAT FROM BSAK INTO ZDATE1 WHERE BLDAT IN ZDATE.

ENDSELECT.

IF SY-SUBRC <> 0.

MESSAGE E000(8I) WITH 'enter valid date'.

ENDIF.

ENDIF.

AT SELECTION-SCREEN ON ZBUKRS.

IF NOT ZBUKRS IS INITIAL.

SELECT SINGLE BUKRS FROM BSEG INTO ZBUKRS WHERE BUKRS = ZBUKRS.

IF SY-SUBRC <> 0.

MESSAGE E000(8I) WITH 'enter valid company code'.

ENDIF.

ENDIF.

Read only

Former Member
0 Likes
627

Hi

in

AT SELECTION-SCREEN

write

PERFORM SCREEN_CHECK.

then

&----


*& Form SCREEN_CHECK

&----


  • Checking for the input values of selection screen

----


form screen_check.

  • Validation of Company Code

clear t001.

if not p_bukrs is initial.

select bukrs from t001 up to 1 rows

into t001-bukrs

where bukrs = p_bukrs.

endselect.

if sy-subrc ne 0.

message e000 with 'Invalid Company Code'(006).

endif.

endif.

  • Validation of Customer Number

clear kna1.

if not s_kunnr is initial.

select kunnr from kna1 up to 1 rows

into kna1-kunnr

where kunnr in s_kunnr.

endselect.

if sy-subrc ne 0.

message e000 with 'Invalid Customer Number'(007).

endif.

endif.

  • Validation of Material

clear mara.

if not s_matnr[] is initial.

select matnr from mara up to 1 rows

into mara-matnr

where matnr in s_matnr.

endselect.

if sy-subrc ne 0.

message e000 with 'Invalid material'(008).

endif.

endif.

ENDFORM.

Regards

Anji

Read only

Former Member
0 Likes
627

hi Siddu,

use this code .

data: lv_vkorg type vkorg,

lv_kunnr type kunnr.

IF s_vkorg IS NOT INITIAL.

SELECT single vkorg

FROM TVKO

INTO lv_vkorg

WHERE vkorg IN s_vkorg.

IF sy-subrc NE 0 OR lv_vkorg IS INITIAL.

  • Please enter a valid Order Range.

MESSAGE e011.

ELSE.

CLEAR: lv_vkorg.

ENDIF.

ENDIF.

for KUNNR:

IF s_kunnr IS NOT INITIAL.

SELECT single kunnr

FROM KNA1

INTO lv_kunnr

WHERE kunnr IN s_kunnr.

IF sy-subrc NE 0 OR lv_kunnr IS INITIAL.

  • Please enter a valid Order Range.

MESSAGE e011.

ELSE.

CLEAR: lv_kunnr.

ENDIF.

ENDIF.

<b><i>Reward points if useful</i></b>

Chandra

Read only

Former Member
0 Likes
627

Hi

see this sample code it will help you

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*****************

***************SCREEN VALIDATIONS *****************

at selection-screen.

SELECT SINGLE *

FROM EKKO

INTO EKKO

WHERE EBELN IN S_EBELN.

IF SY-SUBRC <> 0.

SET CURSOR FIELD 'S_EBELN-LOW'.

MESSAGE E999 WITH TEXT-005.

ENDIF.

********end of screen validation*****************

<b>Reward if usefull</b>

Read only

Former Member
0 Likes
627

HI Hifrom,

I'd written the below code for your conviniences

Hope it helps

*&----


*& Report ZHR_ASTEST

*&----


*& Demo Program-1 for selection-screen

*&----


REPORT zhr_astest.

Tables : vbak.

Data : Begin of li_kunnr,

kunnr type vbak-kunnr,

end of li_kunnr.

Data : it_kunnr like table of li_kunnr.

SELECT-OPTIONS : s_vkorg FOR vbak-vkorg obligatory,

s_kunnr FOR vbak-kunnr obligatory.

  • Search-help for S_KUNNR-LOW

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_kunnr-low.

    • Select data to be display on Search Help

select kunnr

into table it_kunnr

from vbak

where vkorg = s_vkorg.

SORT it_kunnr BY kunnr.

DELETE ADJACENT DUPLICATES FROM it_kunnr COMPARING kunnr.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'S_KUNNR-LOW'

dynpprog = progname

dynpnr = dynnum

dynprofield = 'S_KUNNR-LOW'

value_org = 'S'

TABLES

value_tab = it_kunnr.

  • Search-help for S_KUNNR-High

AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_kunnr-high.

    • Select data to be display on Search Help

select kunnr

into table it_kunnr

from vbak

where vkorg = s_vkorg.

SORT it_kunnr BY kunnr.

DELETE ADJACENT DUPLICATES FROM it_kunnr COMPARING kunnr.

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'

EXPORTING

retfield = 'S_KUNNR-HIGH'

dynpprog = progname

dynpnr = dynnum

dynprofield = 'S_KUNNR-HIGH'

value_org = 'S'

TABLES

value_tab = it_kunnr.