‎2007 Apr 11 10:27 AM
Hi,
I have 4 parameters in the selection screen.All of which are not abligatory.
Here I have to include these parameters in the select statement depending on the data in the parameters.
If the parameters have no data the I have to write the select with out the parameters in the select statement.
If I consider the <b>IF ENDIF</b> or the <b>CASE ENDCASE</b> options, I would have to write <b>16</b> conditions which would effect the program efficiency very badly.
Is there any other way in which this problem can be resolved??
Please Help.
Thanks,
Supriya Manik
‎2007 Apr 11 10:30 AM
Hi,,
Use select-options...with addition no-intervals.
this will force select-option to behave as a parameter on the screen..
when the user enters any thing it acts like a parameter else like a select-option.
select-options: s_vbeln for vbak-vbeln no-intervals.
santhosh
‎2007 Apr 11 10:35 AM
Hi,
Select options with no-interval would be the best thing for your case.
Regards,
Nidhya
‎2007 Apr 11 10:37 AM
Actually the four parameters data which I am refering to come from the Wepage,where we capture the data and get it to the RFC.Hence they have to be treated as parameters.
‎2007 Apr 11 10:40 AM
declare ranges
and populate them when u have a value from web page and leave them blank when u have no value.
santhosh
‎2007 Apr 11 10:40 AM
while passing to RFC u can pass them as <b>s_field1-low</b> , will that not work as a parameter??
‎2007 Apr 11 10:49 AM
hi,
Even though its a parameter u internally build the select option table ..
for ex :
if the parameter u r passing is 1000 for company code.
then
u can use like this
types : begin of ty_company_code
comp_code_sign type SIGN,
comp_code_opt type option
comp_code_low type bukrs,
comp_code_high type bukrs,
end of ty_company_code.
data : it_company_code type table of ty_company_code,
wa_company_code type ty_company_code.
wa_company_code-comp_code_sign = 'I'.
wa_company_code-comp_code_option = 'EQ'.
wa_company_code-comp_code-low = '1000'.
append wa_company_code to it_company_code.
like this u can build the select option internal table for four paramaters
and use it in query like
select * from <tbname> where bukrs in it_company_code.
thanking you
JK
‎2007 Apr 11 10:38 AM
I feel the solution given by Kaushal should hold true but in case you dont want to change it to select-option than you can use the below logic.
ranges : r_param1 for param1.
refresh r_param1.
if param1 is not blank
move param1 to r_param1-low.
move 'EQ' to r_param1-sign.
move 'I' to r_param1-option.
append r_param1.
endif.
Similary code for the other parameters (please check the values for sign and option)
your select statement
SELECT * FROM TABLE WHERE
FIELD1 in R_PARAM1 and
field2 in r_param2 etc
Regards
Anurag
‎2007 Apr 11 10:38 AM
also use the <b>no extension</b> addition along with <b>no intervals</b>, which makes select-options look very much like parameter declaration.
‎2007 Apr 11 10:43 AM
hi supriya,
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
<b>SELECT-OPTIONS : SO_SELECT FOR MARA-MATNR <u>NO INTERVALS</u>.</b>
SELECTION-SCREEN END OF BLOCK b1 .
use select-options with no intervals...
now in ur select query
<b>SELECT ....
FROM <TABLE>
INTO <INTERNAL TABLE>
WHERE <FIELD> IN <SO_SELECT></b>
so u dont hv to use numerous if...endif conditions nor case...endcase....even tough the select option is empty...and obligatory....
hence , select option with no intervals acts as a parameter.
I hope ur problem is solved...
reward points if useful...
regards,
Ginni...