Application Development 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: 

Passing a variable to select statement

Former Member
0 Kudos

Hi there,

I have a selection screen on which you can choose which table do you want to display.

I store the name of the selected table in a variable tab_name.

I want to use something like that:

data: tab_name(40).

.

.

.

select * from tab_name

into gt_master.

endselect.

But it did not allowed because tab_name is not a database table.

Is it possible to pass the table name in a select statement using a variable?

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hello

Yes it is posible you can use a dynamic select...

Try this:

DATA tabname(10).

DATA: BEGIN OF wa,

id TYPE scustom-id,

name TYPE scustom-name,

END OF wa.

tabname = 'SCUSTOM'.

SELECT id name INTO CORRESPONDING FIELDS OF wa FROM (tabname).

WRITE: / wa-id, wa-name.

ENDSELECT.

or

CONSTANTS: flight_tab_name(30) VALUE 'SPFLI'.

DATA: from_clause TYPE STRING.

DATA: BEGIN OF wa,

name(20) TYPE C,

connid TYPE spfli-connid,

END OF wa.

CONCATENATE flight_tab_name ' AS t1'

' JOIN scarr AS t2 ON t1carrid = t2carrid'

INTO from_clause.

SELECT t1connid t2carrname AS name

FROM (from_clause)

INTO CORRESPONDING FIELDS OF wa.

WRITE: / wa-name, wa-connid.

ENDSELECT

Hope this helps

Gabriel

6 REPLIES 6

Former Member
0 Kudos

Hello

Yes it is posible you can use a dynamic select...

Try this:

DATA tabname(10).

DATA: BEGIN OF wa,

id TYPE scustom-id,

name TYPE scustom-name,

END OF wa.

tabname = 'SCUSTOM'.

SELECT id name INTO CORRESPONDING FIELDS OF wa FROM (tabname).

WRITE: / wa-id, wa-name.

ENDSELECT.

or

CONSTANTS: flight_tab_name(30) VALUE 'SPFLI'.

DATA: from_clause TYPE STRING.

DATA: BEGIN OF wa,

name(20) TYPE C,

connid TYPE spfli-connid,

END OF wa.

CONCATENATE flight_tab_name ' AS t1'

' JOIN scarr AS t2 ON t1carrid = t2carrid'

INTO from_clause.

SELECT t1connid t2carrname AS name

FROM (from_clause)

INTO CORRESPONDING FIELDS OF wa.

WRITE: / wa-name, wa-connid.

ENDSELECT

Hope this helps

Gabriel

Former Member
0 Kudos

this is not possilbe.

alternative :

put selects on different tables inside IF conditions.

Based on the value of your selection screen field tab_name,

fetch the data from the appropriate table

Pawan_Kesari
Active Contributor
0 Kudos

CREATE DATA itab TYPE STANDARD TABLE OF (tab_name). 

SELECT * 
INTO TABLE itab
FROM (tab_name) .

Message was edited by:

Pawan Kesari

Former Member
0 Kudos

SELECT * FROM (p_table)

into <internal table>.

0 Kudos

Flawless Code

PARAMETERS: p_tab(40) TYPE c.

DATA         : lt_data   TYPE REF TO data.
FIELD-SYMBOLS: <table>  TYPE STANDARD TABLE.

CREATE DATA lt_data TYPE STANDARD TABLE OF (p_tab).

ASSIGN lt_data->* TO <table>.

SELECT * INTO TABLE <table> FROM (p_tab) .

former_member194669
Active Contributor
0 Kudos

Hi,

Use fm RFC_GET_TABLE_ENTRIES or RFC_READ_TABLE.

aRs