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

Dynamic Select Statement......

Former Member
0 Likes
1,857

Hi,

I am writing this dynamic select statement.

SELECT (W_FIELDLIST) FROM (P_TNAME) INTO <FS_DYNTABLE> WHERE KUNNR = P_KUNNR

I am getting runtime error for this statement. I passed three different values too W_FIELDLIST but none

is working.

W_FILEDLIST = KUNNR LAND1 NAME1 ORT01 TELF1 and also

W_FILEDLIST = KUNNR, LAND1, NAME1, ORT01, TELF1 and also

W_FILEDLIST = KUNNR,LAND1,NAME1,ORT01,TELF1.

What is the correct format?

Help will be appreciated..

Thanks,

Ibrahim

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,827

Hi Mohammed,

You have to add each field as a separte row to an internal table.

DATA : BEGIN OF w_fieldlist OCCURS 0,

fld(1028) type c,

END OF w_fieldlist.

w_fieldlist-fld = 'KUNNR'.

append w_fieldlist.

clear w_fiedllist.

w_fieldlist-fld = 'LAND1'.

append w_fieldlist.

clear w_fiedllist.

w_fieldlist-fld = 'NAME1'.

append w_fieldlist.

clear w_fiedllist.

w_fieldlist-fld = 'ORT01'.

append w_fieldlist.

clear w_fiedllist.

w_fieldlist-fld = 'TELF1'.

append w_fieldlist.

clear w_fiedllist.

Regards,

Anil

17 REPLIES 17
Read only

Former Member
0 Likes
1,827

Try this way.

Data: fld TYPE TABLE OF STRING. 

APPEND 'KUNNR' TO fld. 
APPEND 'LAND1'  TO fld. 

SELECT (fld) FROM (P_TNAME) INTO <FS_DYNTABLE> WHERE KUNNR = P_KUNNR

Read only

Former Member
0 Likes
1,827

Hi,

Ur first format is the correct one.

W_FILEDLIST = KUNNR LAND1 NAME1 ORT01 TELF1 and also

chk the declaration of W_FIELDLIST, is it string?

Read only

0 Likes
1,827

Hi,

I changed it to string but still its not working. I tried by hard coding the values of FROM table and INTO table but still i am getting the same error.

Thanks,

Ibrahim

Read only

0 Likes
1,827

Hi, Mohammed Ibrahim

Have you tested my Code it must work for you,

Please Reply if any Issue,

Kind Regards,

Faisal

Read only

0 Likes
1,827

Hey Faisal,

I tried whatever u asked me but its not working.

Thanks,

Ibrahim

Read only

0 Likes
1,827

Hi, Muhammad,

Please Test the following Sample Code hope will help you.

DATA: it_vbak LIKE STANDARD TABLE OF vbak WITH HEADER LINE.
DATA: $fields TYPE string,
      $dbtable TYPE string,
      $where TYPE string,
      $it TYPE string,
      lv_tabname TYPE string,
      lv_ttabname TYPE string.
lv_tabname = 'vbap'.
lv_ttabname = 'vbak'.
CONCATENATE: 'vbak~vbeln' 'vbak~erdat' INTO $fields SEPARATED BY space,
             lv_tabname 'inner join ' lv_ttabname ' on ( vbap~vbeln = vbak~vbeln )' INTO $dbtable SEPARATED BY space,
             'vbap~vbeln eq ''0000000001''' 'or' 'vbap~vbeln eq ''0000000002''' INTO  $where SEPARATED BY space.
SELECT ($fields)
  INTO CORRESPONDING FIELDS OF TABLE it_vbak
  FROM ($dbtable)
  WHERE ($where).

LOOP AT it_vbak INTO it_vbak.
  WRITE: / it_vbak-vbeln, it_vbak-erdat.
ENDLOOP.

Please Let me know if above is not working too.

Kind Regards,

Faisal

Read only

0 Likes
1,827

Hey Faisal,

I dont need to use joins as i am fetching the data from one table only and i cannot use Concatenate statement because the field names are coming from the selection screen.

Thanks,

Ibrahim

Read only

0 Likes
1,827

Hi,

Than Please test following Sample Code where Suppose you are entering in the parameter VBELN ERDAT.

PARAMETERS: fields TYPE string.

DATA: it_vbak LIKE STANDARD TABLE OF vbak WITH HEADER LINE.
DATA: $fields TYPE string.

$fields = fields.

SELECT ($fields) from vbak
  INTO CORRESPONDING FIELDS OF TABLE it_vbak.

loop at it_vbak INTO it_vbak.
  WRITE: / it_vbak-vbeln, it_vbak-erdat.
ENDLOOP.

Please Reply if else Issue,

Kind Regards,

Faisal

Read only

Former Member
0 Likes
1,827

Hi Mohammed,

You can select list of fields as given below, this will work perfectly.

DATA: it_fieldlist TYPE TABLE OF fieldname,
          wa_fieldlist LIKE LINE OF it_fieldlist.

wa_fieldlist = 'KUNNR'.
APPEND wa_fieldlist TO it_fieldlist.

wa_fieldlist = 'LAND1'.
APPEND wa_fieldlist TO it_fieldlist.

"Like this append all the fields you want.
"Then write the query as 

SELECT (it_fieldlist) FROM (p_tname) INTO <fs_dyntable> WHERE kunnr = p_kunnr.

Regards,

Manoj Kumar P

Read only

former_member222860
Active Contributor
0 Likes
1,827

Hi,

U can use this:

W_FILEDLIST = KNA1~KUNNR KNA1~LAND1 KNA1~NAME1 KNA1~ORT01 KNA1~TELF1

Read only

viquar_iqbal
Active Contributor
0 Likes
1,827

Hi

w_fieldlist need not be string type just char type with enough space

W_FILEDLIST = KUNNR LAND1 NAME1 ORT01 TELF1

or concatenate KUNNR LAND1 NAME1 ORT01 TELF1 into w_filedlist separated by space.

Try hard coding other dynamic options in your select statement like table name ,FS_DYNTABLE

and then check .

Hope it helps!

Viquar Iqbal

Read only

Former Member
0 Likes
1,828

Hi Mohammed,

You have to add each field as a separte row to an internal table.

DATA : BEGIN OF w_fieldlist OCCURS 0,

fld(1028) type c,

END OF w_fieldlist.

w_fieldlist-fld = 'KUNNR'.

append w_fieldlist.

clear w_fiedllist.

w_fieldlist-fld = 'LAND1'.

append w_fieldlist.

clear w_fiedllist.

w_fieldlist-fld = 'NAME1'.

append w_fieldlist.

clear w_fiedllist.

w_fieldlist-fld = 'ORT01'.

append w_fieldlist.

clear w_fiedllist.

w_fieldlist-fld = 'TELF1'.

append w_fieldlist.

clear w_fiedllist.

Regards,

Anil

Read only

0 Likes
1,827

Hey Anil,

thnx

Edited by: mohammed ibrahim on Feb 24, 2009 4:11 PM

Read only

faisalatsap
Active Contributor
0 Likes
1,827

Hi,

Please Test my Sample Code in the following Thread this will Solve out your problem

[Dynamic Select Statement |;

Please Reply if any Issue,

Kind Regards,

Faisal

Read only

Former Member
0 Likes
1,827

Hi Mohammed,

As I have mentioned above fill an int table with field names and use that in the select query.

Refer my first post of this thread.

Regards,

Manoj Kumar P

Read only

Former Member
0 Likes
1,827

Try this,

Data: w_fieldlist TYPE TABLE OF STRING.

Append the values to w_fieldlist.

Regards,

Joan

Read only

Former Member
0 Likes
1,827

Hey Anil....u were right dear.

Thanks everyone