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

function module urgent

Former Member
0 Likes
1,120

hi gurus,

i hav to make a fuction module .

the function module takes personnnel numbers as and give out recors of the personnel number,.

my question is if i have only one personnel number then i can use import parameter,

but here i have table for personnel number.

means i am taking the value of personnel number from selectio screen which look like this .

personnel from _______ to ________

so my selection would be

select*...

where pernr in personnel.

and

not pernr = personnel.

so how can i make this function module.

thanks regrads

point ll be surely rewarded.

anuj.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,085

Hi,

In import parameters you can use two variables,one the low value and the other for the high value of the personal number.These values can be fetched from selection screen,using select-options low and high.

In select statement,you can use where condition between these two values.

Hope this will help you.

Regards

Shibin

8 REPLIES 8
Read only

Former Member
0 Likes
1,085

First option, you can have two personal_no in import parameter of the FM :

1. Personal_no_high

2. Personal_no_low.

( when calling this FM you need to passthe high value of personal no to Personal_no_high & low value to Personal_no_low)

In the source code of the FM,

create a range from those high and low value ,And use that range in the select query.

To create a range :



ranges: r_pernr for pernr.

r_pernr-sign = 'I'.
r_pernr-option = 'EQ'.
r_pernr-high = Personal_no_high.
r_pernr-low = Personal_no_low.

append r_pernr to r_pernr. 

select * from database_table
            into table itab
            where pernr in r_pernr. 

Second option, Instead of Import parameter take a table for personal no and pass it through table parameter of the FM you are trying to create. And in select query use that table.

( Here from calling program fetch all the personal no from the personal no base table and populated Personal_no_tab table and pass that table to your FM)

If Personal_no_tab[] is not initial.

Select * from database_table

into table itab

for all entries in Personal_no_tab

where personal_no EG Personal_no_tab-personal_no.

endif.

Now to have a table parameter which will contain personal no, you have to create a dictionary structure for the same.

Read only

0 Likes
1,085

hi abhishek

i agree with your second solution but for the first one . If the user selects low and high values in the selection screen but also chooses to exclude some value in that interval (using the exclude thing in select option only ) .. then in that case there would be a problem in the first solution as the range created in the fn module will have that excluded number also.

Second solution is better and easy one.

Thanks,

Read only

0 Likes
1,085

Hi,

When personnel number has been used as selection options then ranges declaration is not needed, instead you can pass as a TABLES in FM parameters. If a user enters any number without sequence then also it will work.

hope this will clear your issue for point one.

Regards,

Ramesh

Read only

0 Likes
1,085

Since select-option is can not be a element of functional modules, in that case you also have to pass the exclude elements seperately,


In such case you can add two parameters in FM like,

3. person_no_exclude_high
4. person_no_exclude_low

and add another row for the exclude personal no like follows: 

ranges: r_pernr for pernr.
 
r_pernr-sign = 'I'.
r_pernr-option = 'EQ'.
r_pernr-high = Personal_no_high.
r_pernr-low = Personal_no_low.
 
append r_pernr to r_pernr. 

r_pernr-sign = 'E'.
r_pernr-option = 'EQ'.
r_pernr-high = person_no_exclude_high.
r_pernr-low = person_no_exclude_low.

append r_pernr to r_pernr. 
 
select * from database_table
            into table itab
            where pernr in r_pernr. 

Read only

Former Member
0 Likes
1,086

Hi,

In import parameters you can use two variables,one the low value and the other for the high value of the personal number.These values can be fetched from selection screen,using select-options low and high.

In select statement,you can use where condition between these two values.

Hope this will help you.

Regards

Shibin

Read only

0 Likes
1,085

hi thanks for ur reply

but how i can use the value of a selection screen to my function module

anuj

Read only

0 Likes
1,085

See you can not have a selection option or ramge in a import parameter of a function module. What you can do is to pass each element of the select option seperately and in FM you can create a range using those values.

Only single value, structure and tables are possible to pass to FM. Now you can also create a range table and add it to table parameter of the FM and pass the select-option through the table parameter.

Read only

Former Member
0 Likes
1,085

Hi,

If you want to use a table in import parameter.

You can use define the structure Z_STRUCT with type declaration.

DATA: itab TYPE TABLE OF Z_STRUCT.

Then you can use it as TABLE TYPE for import parameter.

In source code,

You should start with following code:

IF NOT itab[] is initial.

Select query from desired database table.

sy-subrc check.

endif.

Please reward points if its helpful.

Thanks,

Abhishek