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

query on select query

Former Member
0 Likes
1,393

hi,

in my selection screen i have 5 fields

ie matnr mtart matkl erdsa from table mara and

werks from table marc

o/p

if i input any one of the 5 fields in the selection screen i need the output for all the 5 fields which matches the selection condition.

Thanks in advance.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,149

Hello,

Check this code :

[code]TABLES: mara,marc.

SELECT-OPTIONS: s_matnr FOR mara-matnr NO INTERVALS,

s_mtart FOR mara-mtart NO INTERVALS,

s_matkl FOR mara-matkl NO INTERVALS,

s_ersda FOR mara-ersda NO INTERVALS,

s_werks FOR marc-werks NO INTERVALS.

DATA: BEGIN OF itab OCCURS 0,

matnr TYPE matnr,

mtart TYPE mtart,

matkl TYPE matkl,

ersda TYPE ersda,

werks TYPE werks_d,

END OF itab.

DATA: wa_tab LIKE LINE OF itab.

SELECT amatnr amtart amatkl aersda

b~werks

FROM mara AS a JOIN marc AS b

ON bmatnr = amatnr

INTO TABLE itab

WHERE a~matnr IN s_matnr

AND a~mtart IN s_mtart

AND a~matkl IN s_matkl

AND a~ersda IN s_ersda

AND b~werks IN s_werks.

IF sy-subrc <> 0.

ENDIF.[code]

Regards,

Deepu.K

,

,

7 REPLIES 7
Read only

Former Member
0 Likes
1,149

hi..

You can use <b>AT SELECTION SCREEN ON FIELD (field)</b> and then u can write the <b>SELECT QUERY</b> matching the condition..

<b>Reward points if useful</b>

Regards

Ashu

Read only

Former Member
0 Likes
1,149

hi,

you can build your condition in the query dynamically,

if a parameter is initial, or a star replace the value by %

....

first condition

...

IF matnr IS INITIAL.

matnr = '%'.

ELSE.

REPLACE ALL OCCURRENCES OF '*'

IN matnr WITH '%'.

REPLACE ALL OCCURRENCES OF '+'

IN matnr WITH '_'.

ENDIF.

CONCATENATE lv_condition

'AND MATNR LIKE MATNR'

INTO lv_condition

SEPARATED BY space.

....

select * from mara into lt_mara where (lv_condition).

grtz,

Koen

Read only

0 Likes
1,149

hi i make myself clear,

in my selection screen i have 5 fields

ie matnr mtart matkl erdsa from table mara and

werks from table marc

o/p

if i input atleast one of the 5 fields in the selection screen

note:not neccesarily only one ie atleast one

i need the output for all the 5 fields which matches the selection condition ie based on the values in selection screen.

eg:

if i i/p 1 for matnr in selection screen

it should display the records for mtart matkl werks erdsa for matnr = 1.

Thanks in advance.

Read only

Former Member
0 Likes
1,149

hi selva

your question is not so clear

but as per my understanding

select maramatnr maramtart maramatkl maraerdsa marc~werks from table mara

innerjoins marc on (use the condition here) where matnr in s_matnr and mrart in s_mtart and so on

Read only

Former Member
0 Likes
1,150

Hello,

Check this code :

[code]TABLES: mara,marc.

SELECT-OPTIONS: s_matnr FOR mara-matnr NO INTERVALS,

s_mtart FOR mara-mtart NO INTERVALS,

s_matkl FOR mara-matkl NO INTERVALS,

s_ersda FOR mara-ersda NO INTERVALS,

s_werks FOR marc-werks NO INTERVALS.

DATA: BEGIN OF itab OCCURS 0,

matnr TYPE matnr,

mtart TYPE mtart,

matkl TYPE matkl,

ersda TYPE ersda,

werks TYPE werks_d,

END OF itab.

DATA: wa_tab LIKE LINE OF itab.

SELECT amatnr amtart amatkl aersda

b~werks

FROM mara AS a JOIN marc AS b

ON bmatnr = amatnr

INTO TABLE itab

WHERE a~matnr IN s_matnr

AND a~mtart IN s_mtart

AND a~matkl IN s_matkl

AND a~ersda IN s_ersda

AND b~werks IN s_werks.

IF sy-subrc <> 0.

ENDIF.[code]

Regards,

Deepu.K

,

,

Read only

0 Likes
1,149

HI DEEPU..

THANK U VERY MUCH..

NOW ITS WORKING.

I AM USING THE SAME LOGIC BUT WITH PARAMETERS

Read only

Former Member
0 Likes
1,149

Hello,

Check this code :

TABLES: mara,marc.

SELECT-OPTIONS: s_matnr FOR mara-matnr NO INTERVALS,
                s_mtart FOR mara-mtart NO INTERVALS,
                s_matkl FOR mara-matkl NO INTERVALS,
                s_ersda FOR mara-ersda NO INTERVALS,
                s_werks FOR marc-werks NO INTERVALS.


DATA: BEGIN OF itab OCCURS 0,
        matnr TYPE matnr,
        mtart TYPE mtart,
        matkl TYPE matkl,
        ersda TYPE ersda,
        werks TYPE werks_d,
      END OF itab.
DATA: wa_tab LIKE LINE OF itab.



SELECT a~matnr a~mtart a~matkl a~ersda
       b~werks
       FROM mara AS a JOIN marc AS b
       ON b~matnr = a~matnr
       INTO TABLE itab
       WHERE a~matnr IN s_matnr
       AND   a~mtart IN s_mtart
       AND   a~matkl IN s_matkl
       AND   a~ersda IN s_ersda
       AND   b~werks IN s_werks.

IF sy-subrc <> 0.
ENDIF.

Regards,

Deepu.K