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 validation for period

Former Member
0 Likes
2,320

hi,

I am working with a SD report.My requirement is..........in selection screen i had a field called period where we input only month and year.By the coding I had done it is accepting both the formats MM/YYYY and MM.YYYY.But actually what my requirement is it should not accept the input if we enter the period in MM/YYYY format.How can i solve this.

Thanks in advance,

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,526

hi,

use this type of code .. this is gonna help u... on F4 help it will let u on month and year drop down.

use parameter as

SELECT-OPTIONS : SL_SPMON FOR S031-SPMON.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR SL_SPMON-LOW.

PERFORM MONAT_F4.

-


FORM MONAT_F4 .

DATA: BEGIN OF MF_DYNPFIELDS OCCURS 1.

INCLUDE STRUCTURE DYNPREAD.

DATA: END OF MF_DYNPFIELDS.

DATA: MF_RETURNCODE LIKE SY-SUBRC,

MF_MONAT LIKE ISELLIST-MONTH,

MF_HLP_REPID LIKE SY-REPID.

FIELD-SYMBOLS: <MF_FELD>.

  • Wert von Dynpro lesen

GET CURSOR FIELD MF_DYNPFIELDS-FIELDNAME.

APPEND MF_DYNPFIELDS.

MF_HLP_REPID = SY-REPID.

DO 2 TIMES.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = MF_HLP_REPID

DYNUMB = SY-DYNNR

TABLES

DYNPFIELDS = MF_DYNPFIELDS

EXCEPTIONS

INVALID_ABAPWORKAREA = 01

INVALID_DYNPROFIELD = 02

INVALID_DYNPRONAME = 03

INVALID_DYNPRONUMMER = 04

INVALID_REQUEST = 05

NO_FIELDDESCRIPTION = 06

UNDEFIND_ERROR = 07.

IF SY-SUBRC = 3.

  • Aktuelles Dynpro ist Wertemengenbild

MF_HLP_REPID = 'SAPLALDB'.

ELSE.

READ TABLE MF_DYNPFIELDS INDEX 1.

  • Unterstriche durch Blanks ersetzen

TRANSLATE MF_DYNPFIELDS-FIELDVALUE USING '_ '.

EXIT.

ENDIF.

ENDDO.

IF SY-SUBRC = 0.

  • Konvertierung ins interne Format

CALL FUNCTION 'CONVERSION_EXIT_PERI_INPUT'

EXPORTING

INPUT = MF_DYNPFIELDS-FIELDVALUE

IMPORTING

OUTPUT = MF_MONAT

EXCEPTIONS

ERROR_MESSAGE = 1.

IF MF_MONAT IS INITIAL.

  • Monat ist initial => Vorschlagswert aus akt. Datum ableiten

MF_MONAT = SY-DATLO(6).

ENDIF.

CALL FUNCTION 'POPUP_TO_SELECT_MONTH'

EXPORTING

ACTUAL_MONTH = MF_MONAT

IMPORTING

SELECTED_MONTH = MF_MONAT

RETURN_CODE = MF_RETURNCODE

EXCEPTIONS

FACTORY_CALENDAR_NOT_FOUND = 01

HOLIDAY_CALENDAR_NOT_FOUND = 02

MONTH_NOT_FOUND = 03.

IF SY-SUBRC = 0 AND MF_RETURNCODE = 0.

  • ASSIGN (MF_DYNPFIELDS-FIELDNAME) TO <MF_FELD>. " ==>> note 148804

  • <MF_FELD> = MF_MONAT.

CALL FUNCTION 'CONVERSION_EXIT_PERI_OUTPUT'

EXPORTING

INPUT = MF_MONAT

IMPORTING

OUTPUT = MF_DYNPFIELDS-FIELDVALUE.

COLLECT MF_DYNPFIELDS.

CALL FUNCTION 'DYNP_VALUES_UPDATE'

EXPORTING

DYNAME = MF_HLP_REPID

DYNUMB = SY-DYNNR

TABLES

DYNPFIELDS = MF_DYNPFIELDS

EXCEPTIONS

INVALID_ABAPWORKAREA = 01

INVALID_DYNPROFIELD = 02

INVALID_DYNPRONAME = 03

INVALID_DYNPRONUMMER = 04

INVALID_REQUEST = 05

NO_FIELDDESCRIPTION = 06

UNDEFIND_ERROR = 07. "<<== note 148804

ENDIF.

ENDIF.

ENDFORM. " MONAT_F4

regards,

shardul shah

hi,

use this type of code .. this is gonna help u... on F4 help it will let u on month and year drop down.

use parameter as

SELECT-OPTIONS : SL_SPMON FOR S031-SPMON.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR SL_SPMON-LOW.

PERFORM MONAT_F4.

-


FORM MONAT_F4 .

DATA: BEGIN OF MF_DYNPFIELDS OCCURS 1.

INCLUDE STRUCTURE DYNPREAD.

DATA: END OF MF_DYNPFIELDS.

DATA: MF_RETURNCODE LIKE SY-SUBRC,

MF_MONAT LIKE ISELLIST-MONTH,

MF_HLP_REPID LIKE SY-REPID.

FIELD-SYMBOLS: <MF_FELD>.

  • Wert von Dynpro lesen

GET CURSOR FIELD MF_DYNPFIELDS-FIELDNAME.

APPEND MF_DYNPFIELDS.

MF_HLP_REPID = SY-REPID.

DO 2 TIMES.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = MF_HLP_REPID

DYNUMB = SY-DYNNR

TABLES

DYNPFIELDS = MF_DYNPFIELDS

EXCEPTIONS

INVALID_ABAPWORKAREA = 01

INVALID_DYNPROFIELD = 02

INVALID_DYNPRONAME = 03

INVALID_DYNPRONUMMER = 04

INVALID_REQUEST = 05

NO_FIELDDESCRIPTION = 06

UNDEFIND_ERROR = 07.

IF SY-SUBRC = 3.

  • Aktuelles Dynpro ist Wertemengenbild

MF_HLP_REPID = 'SAPLALDB'.

ELSE.

READ TABLE MF_DYNPFIELDS INDEX 1.

  • Unterstriche durch Blanks ersetzen

TRANSLATE MF_DYNPFIELDS-FIELDVALUE USING '_ '.

EXIT.

ENDIF.

ENDDO.

IF SY-SUBRC = 0.

  • Konvertierung ins interne Format

CALL FUNCTION 'CONVERSION_EXIT_PERI_INPUT'

EXPORTING

INPUT = MF_DYNPFIELDS-FIELDVALUE

IMPORTING

OUTPUT = MF_MONAT

EXCEPTIONS

ERROR_MESSAGE = 1.

IF MF_MONAT IS INITIAL.

  • Monat ist initial => Vorschlagswert aus akt. Datum ableiten

MF_MONAT = SY-DATLO(6).

ENDIF.

CALL FUNCTION 'POPUP_TO_SELECT_MONTH'

EXPORTING

ACTUAL_MONTH = MF_MONAT

IMPORTING

SELECTED_MONTH = MF_MONAT

RETURN_CODE = MF_RETURNCODE

EXCEPTIONS

FACTORY_CALENDAR_NOT_FOUND = 01

HOLIDAY_CALENDAR_NOT_FOUND = 02

MONTH_NOT_FOUND = 03.

IF SY-SUBRC = 0 AND MF_RETURNCODE = 0.

  • ASSIGN (MF_DYNPFIELDS-FIELDNAME) TO <MF_FELD>. " ==>> note 148804

  • <MF_FELD> = MF_MONAT.

CALL FUNCTION 'CONVERSION_EXIT_PERI_OUTPUT'

EXPORTING

INPUT = MF_MONAT

IMPORTING

OUTPUT = MF_DYNPFIELDS-FIELDVALUE.

COLLECT MF_DYNPFIELDS.

CALL FUNCTION 'DYNP_VALUES_UPDATE'

EXPORTING

DYNAME = MF_HLP_REPID

DYNUMB = SY-DYNNR

TABLES

DYNPFIELDS = MF_DYNPFIELDS

EXCEPTIONS

INVALID_ABAPWORKAREA = 01

INVALID_DYNPROFIELD = 02

INVALID_DYNPRONAME = 03

INVALID_DYNPRONUMMER = 04

INVALID_REQUEST = 05

NO_FIELDDESCRIPTION = 06

UNDEFIND_ERROR = 07. "<<== note 148804

ENDIF.

ENDIF.

ENDFORM. " MONAT_F4

regards,

shardul shah

5 REPLIES 5
Read only

Former Member
0 Likes
1,526

You can try this:

Assuming p_period is your parameter on the screen.

Then you can check for the 3rd character.

You can write this condition either in AT SELECTION-SCREEN or START-OF-SELECTION.

if p_period+2(1) = '.'.

*Error Message.

endif.

Read only

Former Member
0 Likes
1,526

Declare ur value as like database field and so that no need have validation.

i do not remember field name but it start with per*

Reward Points if it is helpful

Thanks

Seshu

Read only

Former Member
0 Likes
1,526

ARE YOU REFERRING THAT FIELD WITH ANY DATA BASE FIELD

LIKE

PARAMETERS : P_SPMON LIKE MCS0-SPMON.

JUST TRY LIKE THIS AND CHECK IT IS WORKING OR NOT..

REGARDS

SHIBA DUTTA

Read only

Former Member
0 Likes
1,527

hi,

use this type of code .. this is gonna help u... on F4 help it will let u on month and year drop down.

use parameter as

SELECT-OPTIONS : SL_SPMON FOR S031-SPMON.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR SL_SPMON-LOW.

PERFORM MONAT_F4.

-


FORM MONAT_F4 .

DATA: BEGIN OF MF_DYNPFIELDS OCCURS 1.

INCLUDE STRUCTURE DYNPREAD.

DATA: END OF MF_DYNPFIELDS.

DATA: MF_RETURNCODE LIKE SY-SUBRC,

MF_MONAT LIKE ISELLIST-MONTH,

MF_HLP_REPID LIKE SY-REPID.

FIELD-SYMBOLS: <MF_FELD>.

  • Wert von Dynpro lesen

GET CURSOR FIELD MF_DYNPFIELDS-FIELDNAME.

APPEND MF_DYNPFIELDS.

MF_HLP_REPID = SY-REPID.

DO 2 TIMES.

CALL FUNCTION 'DYNP_VALUES_READ'

EXPORTING

DYNAME = MF_HLP_REPID

DYNUMB = SY-DYNNR

TABLES

DYNPFIELDS = MF_DYNPFIELDS

EXCEPTIONS

INVALID_ABAPWORKAREA = 01

INVALID_DYNPROFIELD = 02

INVALID_DYNPRONAME = 03

INVALID_DYNPRONUMMER = 04

INVALID_REQUEST = 05

NO_FIELDDESCRIPTION = 06

UNDEFIND_ERROR = 07.

IF SY-SUBRC = 3.

  • Aktuelles Dynpro ist Wertemengenbild

MF_HLP_REPID = 'SAPLALDB'.

ELSE.

READ TABLE MF_DYNPFIELDS INDEX 1.

  • Unterstriche durch Blanks ersetzen

TRANSLATE MF_DYNPFIELDS-FIELDVALUE USING '_ '.

EXIT.

ENDIF.

ENDDO.

IF SY-SUBRC = 0.

  • Konvertierung ins interne Format

CALL FUNCTION 'CONVERSION_EXIT_PERI_INPUT'

EXPORTING

INPUT = MF_DYNPFIELDS-FIELDVALUE

IMPORTING

OUTPUT = MF_MONAT

EXCEPTIONS

ERROR_MESSAGE = 1.

IF MF_MONAT IS INITIAL.

  • Monat ist initial => Vorschlagswert aus akt. Datum ableiten

MF_MONAT = SY-DATLO(6).

ENDIF.

CALL FUNCTION 'POPUP_TO_SELECT_MONTH'

EXPORTING

ACTUAL_MONTH = MF_MONAT

IMPORTING

SELECTED_MONTH = MF_MONAT

RETURN_CODE = MF_RETURNCODE

EXCEPTIONS

FACTORY_CALENDAR_NOT_FOUND = 01

HOLIDAY_CALENDAR_NOT_FOUND = 02

MONTH_NOT_FOUND = 03.

IF SY-SUBRC = 0 AND MF_RETURNCODE = 0.

  • ASSIGN (MF_DYNPFIELDS-FIELDNAME) TO <MF_FELD>. " ==>> note 148804

  • <MF_FELD> = MF_MONAT.

CALL FUNCTION 'CONVERSION_EXIT_PERI_OUTPUT'

EXPORTING

INPUT = MF_MONAT

IMPORTING

OUTPUT = MF_DYNPFIELDS-FIELDVALUE.

COLLECT MF_DYNPFIELDS.

CALL FUNCTION 'DYNP_VALUES_UPDATE'

EXPORTING

DYNAME = MF_HLP_REPID

DYNUMB = SY-DYNNR

TABLES

DYNPFIELDS = MF_DYNPFIELDS

EXCEPTIONS

INVALID_ABAPWORKAREA = 01

INVALID_DYNPROFIELD = 02

INVALID_DYNPRONAME = 03

INVALID_DYNPRONUMMER = 04

INVALID_REQUEST = 05

NO_FIELDDESCRIPTION = 06

UNDEFIND_ERROR = 07. "<<== note 148804

ENDIF.

ENDIF.

ENDFORM. " MONAT_F4

regards,

shardul shah

Read only

Former Member
0 Likes
1,526

thanks a lot.my problem is solved