select options in sap abap

select option and ranges in sap abap


Select-options:

It generates a selection-screen for reading ranges of input values. It is an internal table created in the run time by SAP based on the select-option field.     It contains following structure:
a)     Sign à Possible values are ‘I’ (Inclusive) / ‘E’ (exclusive)              
         àDefault value is ‘I’
è ‘I’ à considers values from lower limit to upper limit
Eg: range -à 1000 to 1010
 ‘I’ à means it considers from 1000 to 1010
è ‘E’ à considers values before lower limit and after upper limit
Eg: range -à 1000 to 1010
‘E’ à means it considers values before 1000 and after 1010

b)     Option à Possible values are ‘BT’(between), <, >,<=,>=
è Default value is ‘BT’

c)     Low à holds lower limit of the range

d)     High à holds upper limit of the range


Syntax for declaring select-option:

Select-options <variable> for <target field>.

Note: In the above syntax, if the target field is referring to dictionary structure field, then target dictionary structure should be declared explicitly using ‘tables’ keyword.

‘Tables’ KEYWORD will create work area with all the fields of the dictionary structure which is a performance issue.  Because of this reason, it is recommended not to declare select-option referring to dictionary structure.

The Recommended declaration is to declare a local variable referring to dictionary structure field and then declare the select-options referring to local variable.

We can use the addition ‘no-extension’ as part of select-option declaration to restrict the user to enter only single range in the run-time.

Ranges:

It is used for holding range of values. It is an internal table created in the run time based on the field.    It contains same structure as that of select-options:

a)     Sign à Possible values are ‘I’ (Inclusive) / ‘E’ (exclusive)              
b)     Option à Possible values are ‘BT’(between), <, >,<=,>=
c)     Low à holds lower limit of the range
d)     High à holds upper limit of the range
Syntax for declaring Range:
Ranges  <variable> for <target field>.

Order by Clause: We can use order by clause in select query to retrieve the data in sorted order of the specified order by field. It is recommended not to user order by clause, because it performs sorting at the time of retrieving data from database which increases load on DB server which degrades the performance. We can avoid by using 
sort statement on internal table as it gets executed on application server.