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

Validating Number

Former Member
0 Likes
428

I am working on a serial number validation code.2,3 digits of the number are year, 4,5 digits are month. I have to modify the code such that it only accept current and past year,month.

Also I noticed if I give 13 for the month it still acception. Please help in fixing this code.

DATA: I_EQUI LIKE EQUI.

DATA: I_SERNR LIKE EQUI-SERNR.

DATA: I_LENGTH TYPE I.

I_SERNR = SERNR.

SHIFT I_SERNR LEFT DELETING LEADING '0'.

I_LENGTH = STRLEN( I_SERNR ).

IF

I_LENGTH GT 9 OR I_LENGTH LT 9.

MESSAGE E398(00) WITH 'INVALID LENGTH'.

EXIT.

ENDIF.

  • DATA: SERNR LIKE EQUI-SERNR.

  • DATA: MATNR TYPE MATNR.

IF SY-TCODE = 'MB31'.

SELECT SINGLE * FROM EQUI INTO I_EQUI

WHERE EQTYP = 'S'

AND MATNR = MATNR

AND SERNR = SERNR.

IF SY-SUBRC EQ 0.

MESSAGE E398(00) WITH 'SERIAL NUMBER ALREADY EXISTS'.

ELSE.

IF I_SERNR0(1) = '2' OR I_SERNR0(1) = '3' OR I_SERNR+0(1) = '6'.

IF I_SERNR1(2) = SY-DATUM2(2).

IF I_SERNR3(2) LE SY-DATUM4(2).

IF I_SERNR5(4) GT '0000' AND I_SERNR5(4) LT '9999'.

ELSE.

MESSAGE E398(00) WITH 'PLEASE ENTER RANGE WITHIN 0000 AND 9999'.

ENDIF.

ELSE.

MESSAGE E398(00) WITH 'PLEASE ENTER A DATE IN THE PAST'.

ENDIF.

ELSE.

IF I_SERNR1(2) LT SY-DATUM2(2).

IF I_SERNR5(4) GT '0000' AND I_SERNR5(4) LT '9999'.

ELSE.

MESSAGE E398(00) WITH 'PLEASE ENTER RANGE WITHIN 0000 AND 9999'.

ENDIF.

ELSE.

MESSAGE E398(00) WITH 'PLEASE ENTER A DATE IN THE PAST'.

ENDIF.

ENDIF.

ELSE.

MESSAGE E398(00) WITH 'INVALID MANUFACTURING SITE'.

ENDIF.

ENDIF.

ELSE.

SELECT SINGLE * FROM EQUI INTO I_EQUI

WHERE EQTYP = 'S'

AND MATNR = MATNR

AND SERNR = SERNR.

IF SY-SUBRC NE 0.

MESSAGE E398(00) WITH 'PLEASE ENTER A VALID SERIAL NUMBER'.

ENDIF.

ENDIF.

2 REPLIES 2
Read only

Former Member
0 Likes
395

Just a thought..

Why dont you declare SERNR as SY-DATUM and extract month and year from it.

Thanks,

Santosh

Read only

0 Likes
395

Actually the SERNR entered has 9 digits... apart from year and month it has 4 more digits

so i can't declare it as SY-DATUM.