Application Development 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: 

report validations

Former Member
0 Kudos

Hi frnds,

i m giving my selection screen validations code, but its not giving error statement.

can anyone correct me where i am wrong or what more shuld i write in the code to do the exact validations.

<code>

PERFORM VALID_CUST.

PERFORM VALID_SALES.

FORM VALID_CUST.

IF SO_CUST[] IS NOT INITIAL.

SELECT SINGLE KUNNR FROM KNA1 INTO V_KNA1 WHERE KUNNR IN SO_CUST.

IF SY-SUBRC EQ 0.

ELSE.

MESSAGE E000(ZRAJ) WITH 'PLZ ENTER VALID CUSTOMER DOCUMENT NUMBER'.

ENDIF.

ENDIF.

ENDFORM.

FORM VALID_SALES.

IF SO_SALES[] IS NOT INITIAL.

SELECT SINGLE VBELN FROM VBAK INTO V_VBAK WHERE VBELN IN SO_SALES.

IF SY-SUBRC EQ 0.

ELSE.

MESSAGE E001(ZRAJ) WITH 'PLZ ENTER VALID SALES DOCUMENT NUMBER'.

ENDIF.

ENDIF.

ENDFORM.

</code>

10 REPLIES 10

Former Member
0 Kudos

Hi

that validation code should be writen under<b> AT SELECTION SCREEN</b> event

refer my code

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>

Former Member
0 Kudos

Hi,

Check the SY-SUBRC value.

Did you gave Your Meassge name in report addition?

Thanks.

g_lacroix
Explorer
0 Kudos

if not SO_CUST[] IS NOT INITIAL.

SELECT SINGLE KUNNR FROM KNA1 INTO TABLE V_KNA1 WHERE KUNNR IN SO_CUST.

V_KNA1 must be a table because you have a select-options. So possible to have several KUNNR

best regards

varma_narayana
Active Contributor
0 Kudos

Hi

Are u placing this code in the AT Selection-screen Event?

AT SELECTION-SCREE.

PERFORM VALID_CUST.

PERFORM VALID_SALES.

FORM VALID_CUST.

IF SO_CUST[] IS NOT INITIAL.

<b>SELECT SINGLE KUNNR FROM KNA1 INTO V_KNA1 WHERE KUNNR IN SO_CUST.

IF SY-SUBRC <> 0.

MESSAGE E000(ZRAJ) WITH 'PLZ ENTER VALID CUSTOMER DOCUMENT NUMBER'.

ENDIF.

</b>ENDIF.

ENDFORM.

FORM VALID_SALES.

IF SO_SALES[] IS NOT INITIAL.

<b>SELECT SINGLE VBELN FROM VBAK INTO V_VBAK WHERE VBELN IN SO_SALES.

IF SY-SUBRC <> 0.

MESSAGE E001(ZRAJ) WITH 'PLZ ENTER VALID SALES DOCUMENT NUMBER'.

ENDIF.</b>

ENDIF.

ENDFORM.

Then it works.

reward if Helpful.

harimanjesh_an
Active Participant
0 Kudos

hi satish,

even if one customer or sales is valid in select-option( ie, so_cust or so_sales) then sy-subrc will be zero and ur message will not display.

reward me if useful.............

with regards....

former_member404244
Active Contributor
0 Kudos

Hi,

try like this

AT SELECTION-SCREEN.

IF SO_CUST[] IS NOT INITIAL.

SELECT SINGLE KUNNR FROM KNA1 INTO V_KNA1 WHERE KUNNR IN SO_CUST.

IF SY-SUBRC NE 0.

MESSAGE E000(ZRAJ) WITH 'PLZ ENTER VALID CUSTOMER DOCUMENT NUMBER'.

ENDIF.

IF SO_SALES[] IS NOT INITIAL.

SELECT SINGLE VBELN FROM VBAK INTO V_VBAK WHERE VBELN IN SO_SALES.

IF SY-SUBRC NE 0.

MESSAGE E001(ZRAJ) WITH 'PLZ ENTER VALID SALES DOCUMENT NUMBER'.

ENDIF.

also u can try like this..

AT SELECTION-SCREEN.

IF SO_CUST[] IS NOT INITIAL.

SELECT KUNNR FROM KNA1 upto 1 rows INTO V_KNA1 WHERE KUNNR IN SO_CUST.

IF SY-SUBRC NE 0.

MESSAGE E000(ZRAJ) WITH 'PLZ ENTER VALID CUSTOMER DOCUMENT NUMBER'.

ENDIF.

endselect.

IF SO_SALES[] IS NOT INITIAL.

SELECT VBELN FROM VBAK upto 1 rows INTO V_VBAK WHERE VBELN IN SO_SALES.

IF SY-SUBRC NE 0.

MESSAGE E001(ZRAJ) WITH 'PLZ ENTER VALID SALES DOCUMENT NUMBER'.

ENDIF.

endselect.

Regards,

nagaraj

former_member194152
Contributor
0 Kudos

hi,

Code is looking correct .

use tese perform in at selection-screen event and then check.

Regards

Gagan

Former Member
0 Kudos

HI,

see this corrected code.

tables:kna1,vbak.

SELECT-OPTIONS:so_CUST FOR kna1-kunnr,

so_SALES for vbak-vbeln.

<b>data:V_VBELN like vbak-vbeln,

V_KUNNR like kna1-kunnr.</b>

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

PERFORM VALID_CUST.

PERFORM VALID_SALES.

FORM VALID_CUST.

IF SO_CUST[] IS NOT INITIAL.

SELECT SINGLE KUNNR FROM KNA1 INTO <b>V_KUNNR</b> WHERE KUNNR IN SO_CUST.

IF SY-SUBRC EQ 0.

ELSE.

MESSAGE E000(ZRAJ) WITH 'PLZ ENTER VALID CUSTOMER DOCUMENT NUMBER'.

ENDIF.

ENDIF.

ENDFORM.

FORM VALID_SALES.

IF SO_SALES[] IS NOT INITIAL.

SELECT SINGLE VBELN FROM VBAK INTO <b>V_VBELN</b> WHERE VBELN IN SO_SALES.

IF SY-SUBRC EQ 0.

ELSE.

MESSAGE E001(ZRAJ) WITH 'PLZ ENTER VALID SALES DOCUMENT NUMBER'.

ENDIF.

ENDIF.

ENDFORM.

rgds,

bharat.

Former Member
0 Kudos

Frnds thanks for ur replies.

my problem is suppose when i m giving a valid sales order number in low and giving some invalid data in high then its taking it without throwing error, but i want to validate both low as well as high parameters.

frnds plz expalin.

regards,

satish

0 Kudos

Hi Sathish,

Since it is a select option it may have a range of values, Please check this following code and try implementing the same logic with your code.

data : i_kunnr type standard table of kna1-kunnr,

i_vbeln type standard table of vbak-vbeln.

select-options : s_kunnr for kna1-kunnr.

select-options : s_vbeln for vbak-vbeln.

if not s_kunnr is initial.

select kunnr from kna1 into corresponding fields of table i_kunnr where kunnr in s_kunnr.

if sy-subrc NE 0.

message i000(xx) with 'Enter a valid Customer'.

endif.

if not s_vbeln is initial.

select vbeln from vbak into corresponding fields of table i_vbeln where vbeln in s_vbeln.

if sy-subrc NE 0.

message i000(xx) with 'Enter a valid sales document number'.

endif.

try this and reward points if it is useful!

Thanks,

Muthu