Sunday, April 21, 2013

Macro to validate Date


PROGRAM ZDATE_VALIDATE .

* Validation of Date

DEFINE VAL_DATE.

  CLEAR: %_DATE1,

         %_DATE2.

  %_DATE1(4)   = &1"Year

  %_DATE1+4(2) = &2"Month

  %_DATE1+6(2) = &3"Date

  %_DATE2 = %_DATE1 - 1.

  %_DATE2 = %_DATE2 + 1.

  IF %_DATE1 <> %_DATE2.

    SY-SUBRC = 1.

  ELSE.

    SY-SUBRC = 0.

  ENDIF.

END-OF-DEFINITION.


DEFINE VALDATE.

***************************************************

* Passing Parameters: &1 - Date

*                     &2 - Date Format

* Date Format:

* DDMMYYYY  MMDDYYYY  YYYYMMDD  YYYYDDMM

*

* SY-SUBRC Return Value:

*                     1 invalid date

*                     0 Valid Date

*                     2 Invalid Format

***************************************************

  DATA: %_DATE1 LIKE SY-DATUM  ,

        %_DATE2 LIKE SY-DATUM ,

        %_DATE3(8).

  case &2.

    when 'DDMMYYYY'.

      val_date &1+4(4) &1+2(2) &1+0(2).

    when 'MMDDYYYY'.

      val_date &1+4(4) &1+0(2) &1+2(2).

    when 'YYYYMMDD'.

      val_date &1+0(4) &1+4(2) &1+6(2).

    when 'MMYYYYDD'.

      val_date &1+2(4) &1+0(2) &1+6(2).

    when others.

      sy-subrc =  2.

  endcase.

END-OF-DEFINITION.



***********************************************

*      SAMPLE USE of above MACRO              *

***********************************************



PARAMETER v_date TYPE date.

VALDATE V_DATE 'DDMMYYYY'.

IF SY-SUBRC = 0.

  WRITE:/ 'Valid Date'.

ELSEIF SY-SUBRC = 1.

  WRITE:/ 'Invalid Date'.

ELSEIF SY-SUBRC = 2.

  WRITE:/ 'Invalid Format'.

ENDIF.

*********************************************************************

No comments:

Post a Comment