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 query?

Former Member
0 Likes
477

Hi SDN,

I want pass a table name & key filed dynamically in the selection screen how to write select query i.e. dynamic select query.

select * from (tabname) into <fs_tab>

where ...

please suggest how to get the key field here..

Regards.

Rahul

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
446

Hi Rahul,

Try this.... You can try this using Dynamic Internal tables...

try this link...

http://www.sap-img.com/ab030.htm

Regards,

Jayant Sahu.

3 REPLIES 3
Read only

Former Member
0 Likes
446

Hi,

Please find the sample code , may help you in better understanding

DATA: it_zirhdr        TYPE TABLE OF zirhdr,

wa_zirhdr        LIKE LINE OF it_zirhdr,

it_zirphist      TYPE TABLE OF zirphist,

wa_zirphist      LIKE LINE OF it_zirphist,

it_zirpax        TYPE TABLE OF zirpax,

wa_zirpax        LIKE LINE OF it_zirpax,

it_zirobj        TYPE TABLE OF zirobj,

wa_zirobj        LIKE LINE OF it_zirobj,

it_zirsvc        TYPE TABLE OF zirsvc,

wa_zirsvc        LIKE LINE OF it_zirsvc,

trow             TYPE TABLE OF char72,

rrow             TYPE char72,

rind             TYPE i,

wa_date          TYPE zidate.

CONSTANTS: char_ok     TYPE char2 VALUE 'OK',

char_ca     TYPE char2 VALUE 'CA',

char_x      TYPE char1 VALUE 'X'.

CLEAR: trow,

t_zirhdr,

t_zirphist,

t_zirpax,

t_zirobj,

it_zirpax,

it_zirphist,

it_zirhdr,

it_zirobj.

IF NOT yisdunn_sel-zisonr IS INITIAL.

rrow = 'ZISONR EQ YISDUNN_SEL-ZISONR'.

APPEND rrow TO trow.

ADD 1 TO rind.

ENDIF.

IF yisdunn_sel-zistatus IS INITIAL.

rrow = 'AND ( ZIBOOKSTA EQ CHAR_OK'.

APPEND rrow TO trow.

ADD 1 TO rind.

rrow = 'OR ZIBOOKSTA EQ CHAR_CA ) '.

APPEND rrow TO trow.

ADD 1 TO rind.

ELSE.

IF yisdunn_sel-zistatus = char_ok.

rrow = 'AND ZIBOOKSTA EQ CHAR_OK'.

APPEND rrow TO trow.

ADD 1 TO rind.

ELSE.

rrow = 'AND ZIBOOKSTA EQ CHAR_CA'.

APPEND rrow TO trow.

ADD 1 TO rind.

ENDIF.

ENDIF.

IF yisdunn_sel-zicustpart = 'P'.

rrow = 'AND ZIRINKASSO EQ CHAR_X'.

APPEND rrow TO trow.

ADD 1 TO rind.

ENDIF.

IF yisdunn_sel-zicustpart = 'C'.

rrow = 'AND ZICINKASSO EQ CHAR_X'.

APPEND rrow TO trow.

ADD 1 TO rind.

ENDIF.

SELECT * FROM zirhdr

INTO TABLE it_zirhdr

WHERE (trow)

ORDER BY PRIMARY KEY.

Regards

Bala.M

Read only

Former Member
0 Likes
447

Hi Rahul,

Try this.... You can try this using Dynamic Internal tables...

try this link...

http://www.sap-img.com/ab030.htm

Regards,

Jayant Sahu.

Read only

Former Member
0 Likes
446

Hi Dude,

In a select query key fields can be included dynamically

as in the below code:

PARAMETERS:

WHERECL1(72) DEFAULT ‘COUNTRY = ‘ ‘USA’ ’ ’,

WHERECL2(3) DEFAULT ‘OR’,

WHERECL3(72) DEFAULT ‘COUNTRY = ‘ ‘GB’ ’ ’.

TYPE: BEGIN OF ITAB_RECORD, TEXT(72),

END OF ITAB_RECORD.

DATA: WHERE_ITAB TYPE STANDARD TABLE OF ITAB_RECORD INITIAL SIZE 3 WITH HEADER LINE.

WHERE_ITAB-TEXT = WHERECL1.

APPEND WHERE_ITAB.

WHERE_ITAB-TEXT = WHERECL2.

APPEND WHERE_ITAB.

WHERE_ITAB-TEXT = WHERECL3.

APPEND WHERE_ITAB.

SELECT * FROM TABNA WHERE (WHERE_ITAB).

WRITE: / TABNA-COUNTRY, TABNA-ID.

ENDSELECT.

Table names can be included dynamically as below:

tables: tab1.

PARAMETERS: TAB_NAME(10) default 'tab1'.

DATA: TABLE_LINE(240).

SELECT * FROM (TAB_NAME) INTO TABLE_LINE.

WRITE: / TABLE_LINE.

ENDSELECT.

Note: Only the Table names included in the tables statement can be selected at run-time.Also,the size of TABLE_LINE should be capable of holding the selected records.

Failing to meet both conditions will result in syntax error.

Please reward if useful.

Thanks & Regards,

Lakshmanan