‎2007 Jul 25 8:43 AM
Hi,
Plz tell me the steps about how to validate select -options.
REPORT ZFS_TAB1.
TYPES:
BEGIN OF TY_LFB1,
MINDK TYPE LFB1-MINDK,
END OF TY_LFB1,
BEGIN OF TY_EKKO,
EKGRP TYPE EKKO-EKGRP,
AEDAT TYPE EKKO-AEDAT,
EBELN TYPE EKKO-EBELN,
SUBMI TYPE EKKO-SUBMI,
BSART TYPE EKKO-BSART,
KTWRT TYPE EKKO-KTWRT,
LIFNR TYPE EKKO-LIFNR,
END OF TY_EKKO,
BEGIN OF TY_LFA1,
KTOKK TYPE LFA1-KTOKK,
NAME1 TYPE LFA1-NAME1,
ORT01 TYPE LFA1-ORT01,
REGIO TYPE LFA1-REGIO,
PSTLZ TYPE LFA1-PSTLZ,
TELF1 TYPE LFA1-TELF1,
TELFX TYPE LFA1-TELFX,
END OF TY_LFA1,
BEGIN OF TY_ADRC,
HOUSE_NUM1 TYPE ADRC-HOUSE_NUM1,
STREET TYPE ADRC-STREET,
PO_BOX TYPE ADRC-PO_BOX,
END OF TY_ADRC,
BEGIN OF TY_ADR6,
SMTP_ADDR TYPE ADR6-SMTP_ADDR,
END OF TY_ADR6,
BEGIN OF TY_WYT3,
LIFN2 TYPE WYT3-LIFN2,
END OF TY_WYT3.
D A T A
DATA:
ST_LFB1 TYPE TY_LFB1,
IT_LFB1 TYPE TABLE OF TY_LFB1,
ST_EKKO TYPE TY_EKKO,
IT_EKKO TYPE TABLE OF TY_EKKO,
ST_LFA1 TYPE TY_LFA1,
IT_LFA1 TYPE TABLE OF TY_LFA1,
ST_ADRC TYPE TY_ADRC,
IT_ADRC TYPE TABLE OF TY_ADRC,
ST_ADR6 TYPE TY_ADR6,
IT_ADR6 TYPE TABLE OF TY_ADR6,
ST_WYT3 TYPE TY_WYT3,
IT_WYT3 TYPE TABLE OF TY_WYT3.
S E L E C T O P T I O N S.
SELECT-OPTIONS:
SMINDK FOR ST_LFB1-MINDK,
SEKGRP FOR ST_EKKO-EKGRP,
SLIFNR FOR ST_EKKO-LIFNR.
S T A R T O F S E L E C T I O N.
START-OF-SELECTION.
PERFORM GETDATA_EKKO.
PERFORM GETMIND_LFB1.
PERFORM GET_VENDORMASTERDATA.
PERFORM GET_VENDORADDRESS.
PERFORM GET_VENDOREMAIL.
PERFORM GET_INVOICEPARTY.
&----
*& Form GETDATA_EKKO
&----
text
----
--> p1 text
<-- p2 text
----
FORM GETDATA_EKKO .
SELECT EKGRP "PURCHASING GROUP
AEDAT "DATE ON WHICH RECORD WAS CREATED
EBELN "PURCHASING DOCUMENT NUMBER
SUBMI "COLLECTIVE NUMBER
BSART "PURCHASE DOCUMENT TYPE
KTWRT "CUMULATIVE PLANNED VALUE
LIFNR "VENDOR ACCOUNT NUMBER
FROM EKKO INTO TABLE IT_EKKO
WHERE EKGRP IN SEKGRP AND LIFNR IN SLIFNR.
IF SY-SUBRC EQ 0.
LOOP AT IT_EKKO INTO ST_EKKO.
WRITE:/ ST_EKKO-EKGRP,ST_EKKO-AEDAT,ST_EKKO-EBELN,ST_EKKO-SUBMI,ST_EKKO-BSART,ST_EKKO-KTWRT,ST_EKKO-KTWRT,ST_EKKO-LIFNR.
ENDLOOP.
ENDIF.
ENDFORM. " GETDATA_EKKO
&----
*& Form GETMIND_LFB1
&----
text
----
--> p1 text
<-- p2 text
----
FORM GETMIND_LFB1 .
SELECT MINDK "MINORIY INDICATORS
FROM LFB1 INTO TABLE IT_LFB1 WHERE MINDK IN SMINDK.
IF SY-SUBRC EQ 0.
LOOP AT IT_LFB1 INTO ST_LFB1.
WRITE:/ ST_LFB1-MINDK.
ENDLOOP.
ENDIF.
ENDFORM. " GETMIND_LFB1
&----
*& Form GET_VENDORMASTERDATA
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_VENDORMASTERDATA .
SELECT KTOKK "VENDOR ACCOUNT NUMBER
NAME1 "NAME1
ORT01 "CITY
REGIO "REGION
PSTLZ "POSTAL CODE
TELF1 "FIRST TELEPHONE NUMBER
TELFX "FAX NUMBER
FROM LFA1 INTO TABLE IT_LFA1.
IF SY-SUBRC EQ 0.
LOOP AT IT_LFA1 INTO ST_LFA1.
WRITE:/ ST_LFA1-KTOKK,ST_LFA1-NAME1,ST_LFA1-ORT01,ST_LFA1-REGIO,ST_LFA1-PSTLZ,ST_LFA1-TELF1,ST_LFA1-TELFX.
ENDLOOP.
ENDIF.
ENDFORM. " GET_VENDORMASTERDATA
&----
*& Form GET_VENDORADDRESS
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_VENDORADDRESS .
SELECT HOUSE_NUM1 "HOUSE NUMBER1
STREET "STREET
PO_BOX "PO BOX
FROM ADRC INTO TABLE IT_ADRC.
IF SY-SUBRC EQ 0.
LOOP AT IT_ADRC INTO ST_ADRC.
WRITE:/ ST_ADRC-HOUSE_NUM1,ST_ADRC-STREET,ST_ADRC-PO_BOX.
ENDLOOP.
ENDIF.
ENDFORM. " GET_VENDORADDRESS
&----
*& Form GET_VENDOREMAIL
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_VENDOREMAIL .
SELECT SMTP_ADDR "VENDOR EMAIL ADDRESS
FROM ADR6 INTO TABLE IT_ADR6.
IF SY-SUBRC EQ 0.
LOOP AT IT_ADR6 INTO ST_ADR6.
WRITE:/ ST_ADR6-SMTP_ADDR.
ENDLOOP.
ENDIF.
ENDFORM. " GET_VENDOREMAIL
&----
*& Form GET_INVOICEPARTY
&----
text
----
--> p1 text
<-- p2 text
----
FORM GET_INVOICEPARTY .
SELECT LIFN2
FROM WYT3 INTO TABLE IT_WYT3.
IF SY-SUBRC EQ 0.
LOOP AT IT_WYT3 INTO ST_WYT3.
WRITE:/ ST_WYT3-LIFN2.
ENDLOOP.
ENDIF.
ENDFORM. " GET_INVOICEPARTY
Pl tell me how to do validation for my select options
‎2007 Jul 25 8:47 AM
Hi,
Follow the same procedure like the validation done.
AT SELECTION-SCREEN ON so_werks.
PERFORM validate_werks.
FORM validate_werks.
DATA: BEGIN OF l_t_werks OCCURS 0,
werks LIKE t001w-werks,
END OF l_t_werks.
IF NOT so_werks[] IS INITIAL.
SELECT werks INTO TABLE l_t_werks
FROM t001w
WHERE werks IN so_werks.
ENDIF.
LOOP AT so_werks.
IF so_werks-low <> space.
READ TABLE l_t_werks WITH KEY werks = so_werks-low.
IF sy-subrc <> 0.
MESSAGE e892(m7) WITH so_werks-low.
ENDIF.
ENDIF.
IF so_werks-high <> space.
READ TABLE l_t_werks WITH KEY werks = so_werks-high.
IF sy-subrc <> 0.
MESSAGE e892(m7) WITH so_werks-high.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " validate_werks
<b>Reward if helpful.</b>
‎2007 Jul 25 8:47 AM
Hi,
Follow the same procedure like the validation done.
AT SELECTION-SCREEN ON so_werks.
PERFORM validate_werks.
FORM validate_werks.
DATA: BEGIN OF l_t_werks OCCURS 0,
werks LIKE t001w-werks,
END OF l_t_werks.
IF NOT so_werks[] IS INITIAL.
SELECT werks INTO TABLE l_t_werks
FROM t001w
WHERE werks IN so_werks.
ENDIF.
LOOP AT so_werks.
IF so_werks-low <> space.
READ TABLE l_t_werks WITH KEY werks = so_werks-low.
IF sy-subrc <> 0.
MESSAGE e892(m7) WITH so_werks-low.
ENDIF.
ENDIF.
IF so_werks-high <> space.
READ TABLE l_t_werks WITH KEY werks = so_werks-high.
IF sy-subrc <> 0.
MESSAGE e892(m7) WITH so_werks-high.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " validate_werks
<b>Reward if helpful.</b>
‎2007 Jul 25 8:48 AM
Hi
See the sample code
select-options:s_bukrs for t001-bukrs ,
s_vkorg for tvko-vkorg.
Validation of Sales Organization
clear tvko.
if not s_vkorg-low is initial.
select vkorg from tvko up to 1 rows
into tvko-vkorg
where vkorg in s_vkorg.
endselect.
if sy-subrc ne 0.
message e009. " Invalid Sales Organization
endif.
endif.
Validation for company code
clear t001.
if not s_bukrs-low is initial.
select single bukrs from t001
into t001-bukrs
where bukrs in s_bukrs.
if sy-subrc <> 0.
message e007. " Enter valid Company Code
endif.
endif.
<b>Reward points for useful Answers</b>
Regards
Anji
‎2007 Jul 25 8:51 AM
Hi Rams,
To chech the consistency of the SELECT OPTIONS Pramaeters, yuou need to write the Input Checks for the fields in the AT SELECTION SCREEN.
AT SELECTION SCREEN:
Here, you will write the input checks that are encessary to be checked and any other Authorization Objects that are required.
<b>Reward Points if useful</b>
Harish
‎2007 Jul 25 8:52 AM
Hi Do like this.
at selection-screen on t_matnr-high.
if t_matnr-high eq SPACE.
message E100.
endif.
‎2007 Jul 25 8:53 AM
Hi ram,
You can use the following statement after declaration of selection screen,
AT SELECTION-SCREEN ON SMINDK.
SELECT SINGLE MINDK INTO <G_MINDK - A Variable to hold MINDK value>
FROM T059M
WHERE MINDK IN SMINDK.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH 'MINDK VALUE NOT VALID'.
ENDIF.
AT SELECTION-SCREEN ON SEKGRP.
SELECT SINGLE EKGRP INTO <G_EKGRP - A Variable to hold EKGRP value>
FROM T024
WHERE EKGRP IN SEKGRP.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH 'EKGRP VALUE NOT VALID'.
ENDIF.
AT SELECTION-SCREEN ON SLIFNR.
SELECT SINGLE LIFNR INTO <G_LIFNR - A Variable to hold LIFNR value>
FROM LFA1
WHERE LIFNR IN SLIFNR.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH 'LIFNR VALUE NOT VALID'.
ENDIF.
<b>
Reward points if this helps,</b>
Kiran
‎2007 Jul 25 8:56 AM
before start-of-selection
apply this
at selection-screen .
perform validations.
form validations.
include the validation coding here using select clauses.
endform.
or before start of selection
at selection-screen on smindk.
validate
at selection-screen on sekgrp.
validate
at selection-screen on slifnr
validate
‎2007 Jul 25 9:04 AM
put your validations here
AT SELECTION-SCREEN ON SMINDK.
for select options, the variable SMINDK.will be an internal table
it has the fields SIGN, OPTION, LOW and HIGH
you will have to loop though this internal table and check the values of low and high and validate them accordingly
if you find an error, put a message such as
MESSAGE E000 WITH 'MINDK VALUE NOT VALID'.