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

alternative to select-options..

Former Member
0 Likes
2,236

Hi All,

I am using select-option for a char field having length 50 char.

But as per the std it takes only 45 chars.

But I want all the 50 char. Is there any alternative to select-option other than

parameter?

Thanx.

USL

Hi All,

I am using select-option for a char field having length 50 char.

But as per the std it takes only 45 chars.

But I want all the 50 char. Is there any alternative to select-option other than

parameter?

Thanx.

USL

6 REPLIES 6
Read only

Former Member
0 Likes
1,386

HI

use ranges for this....

for syntax see this

Here both SELECT-OPTIONS & RANGES works for the same purpose. They both are used for the range selection from selection screen. The main diff. between them is, while we use SELECT-OPTIONS system implicitly creates the select options internal table which contains the fields of SIGN,OPTION,LOW & HIGH. But in case of RANGES, this internal table should be defined explicitly.

Eg. to SELECT-OPTIONS :

-


REPORT YARSELECT.

TABLES YTXLFA1.

SELECT-OPTIONS : VENDOR FOR YTXLFA1-LIFNR.

INITIALIZATION.

VENDOR-LOW = 1000. " It specifies the range starting value.

VENDOR-HIGH = 2000. " It specifies the range ending value.

VENDOR-OPTION = 'BT'. " specifies ranges value is in between.

VENDOR-SIGN = 'I'. "specifies both inclussive.

APPEND VENDOR.

- - - -

- - - -

SELECT LIFNR LAND1 NAME1 FROM LFA1 INTO TABLE ITAB

WHERE LIFNR IN VENDOR.

Eg. to RANGES:

-


REPORT YARRANGE.

TABLES YTXLFA1.

RANGES: VENDOR FOR YTXFLA1-LIFNR.

- - - -

- - - --

- - - -

SELECT LIFNR LAND1 NAME1 FROM LFA1 INTO TABLE ITAB

WHERE LIFNR IN VENDOR.

Here with RANGES user has to design an internal table with fields -

SIGN,OPTION,LOW and HIGH EXPLICITLY.

-


>

Example:

select-options: bukrs for zstock-bukrs.

Should the user fill in 'ABFI' in BUKRS on the selection screen, BUKRS will look like this:

IEQABFI

This is because BUKRS is set as a table as follows:

begin of bukrs occurs 0,

SIGN(1) type c,

OPTION(2) type c,

LOW like bukrs,

HIGH like bukrs,

end of bukrs.

Now, when you create the following range, it will have the exact same fields set inside its table:

Ranges: bukrs for zstock-bukrs.

The difference is, because ranges doesn't show on the selection screen, you will have to fill it yourself, meaning you will have to fill bukrs-sign, bukrs-option, bukrs-low & bukrs-high all manually.

Some tips:

Sign is always I (for Include) or E (for Exclude)

Option can be a whole range, which includes:

EQ (Equal)

BT (Between))

CP (Contain Pattern)

So let's say you want to have the range check for all company codes not starting with AB, you will set your code as follow:

ranges: bukrs for zstock-bukrs.

bukrs-sign = 'E'. "Exclude

bukrs-option = 'CP'. "Pattern

bukrs-low = 'AB*'. "Low Value

bukrs-high = ''. "High Value

append bukrs.

Always remember to APPEND your range when you fill it, as the WHERE clause checks against the lines of the range table, not against the header line.

Hope this explains it well enough.

-


>

What does SIGN "I" & "E" mean?

The "I" stands for Include, and the "E" for Exclude.

The easiest way to learn how the range selections work is, create the following dummy program:

report dummy.

tables: mara.

select-options: matnr for mara-matnr.

start-of-selection.

loop at matnr.

write: / matnr-sign,

matnr-option,

matnr-low,

matnr-high.

endloop.

Run this program, and fill in a lot of junk into MATNR. Fill in some includes, some excludes, some ranges, etc., and you will soon realise how the system builds ranges (select-options). Once you know that, you can fill your own ranges quickly and efficiently.

reward if helpful

vivekanand

Read only

0 Likes
1,386

Hi vivekandand,

Thanks for ur quick reply.

My problem is that I want that field on selection-screen as an input field.

And it should behave like a select-option like single value range etc..

Also should take 50 char as input value.

Thanx.

USL

Read only

0 Likes
1,386

Hi,

And also user should be able to enter all possible combination like select-options.

Thanx.

USL

Read only

Former Member
0 Likes
1,386

Create your own range type and use 'paramater' instead of select-option.

Read only

Former Member
0 Likes
1,386

hi,

u can use RANGES ehich is similar to select options but only diff is for RANGES we have to give every thing manually and in case of select options which is not compulsary.

for ex:

RANGES rtab FOR dobj [OCCURS n].

Effect

Obsolete declaration of a Ranges-table. This statement (not allowed in classes) is a short form of the following statement sequence:

DATA: BEGIN OF rtab OCCURS {10|n},

sign(1) TYPE c,

option(2) TYPE c,

low LIKE dobj,

high LIKE dobj,

END OF sel.

An internal table rtab with the structure of a selection table and a header line is declared. Without the addition OCCURS, the initial memory requirement (see DATA - ranges-tables) of the ranges-table is set to ten rows. With the addition OCCURS, you can specify a numeric literal or a numeric constant n to determine a different initial memory requirement.

Note

It is not allowed to declare internal tables with header lines. Due to this, the statement RANGES is not allowed in header lines. To declare a ranges-table in classes, you can use the addition TYPE|LIKE RANGE OF (see TYPES - ranges-table type and DATA - ranges-tables).

if helpful reward some points.

with regards,

Suresh Aluri.

Read only

Former Member
0 Likes
1,386

Hi,

alternative for select-option may be ranges but they do not display in the selection scree.

rewards if useful,

rgards,

nazeer