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

Shall I use SELECT SINGLE??

Former Member
0 Likes
806

Iu2019ve retrieved MSEG-MATNR for the condition mseg-mblnr = material doc no. and mseg-mjahr = mat doc year and mseg-zeile = mat doc item.

And my retrieved data mseg data in i_mseg is like below:

Mblnru2026u2026u2026..mjahru2026..zeilen.u2026u2026.matnr

0049000242....1995......0003........YY-110

0049000242u2026.1995u2026u20260004u2026u2026.YY-120

0049000248....1995u2026u20260001u2026u2026..40-110C

0049000248u2026.1995u2026u20260002........40-200C

0049000248u2026.1995u2026u20260003........40-210

0049000248u2026.1995u2026u20260004........L-40C

Now Iu2019ll have to fetch:

MAKT-MAKTX for the condition MAKT-MATNR=MSEG-MATNR and MAKT-SPRAS = u2018ENu2019.

Shall I use select single or normal select queries for makt-maktx retrieval?

If select single, then why and if not, then why?

Can anyone please guide?

Regards.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
771

You can retrive material texts for all the materials retreived in your table by using Select..for all entries....

Please let me knwo if this helps!

Iu2019ve retrieved MSEG-MATNR for the condition mseg-mblnr = material doc no. and mseg-mjahr = mat doc year and mseg-zeile = mat doc item.

And my retrieved data mseg data in i_mseg is like below:

Mblnru2026u2026u2026..mjahru2026..zeilen.u2026u2026.matnr

0049000242....1995......0003........YY-110

0049000242u2026.1995u2026u20260004u2026u2026.YY-120

0049000248....1995u2026u20260001u2026u2026..40-110C

0049000248u2026.1995u2026u20260002........40-200C

0049000248u2026.1995u2026u20260003........40-210

0049000248u2026.1995u2026u20260004........L-40C

Now Iu2019ll have to fetch:

MAKT-MAKTX for the condition MAKT-MATNR=MSEG-MATNR and MAKT-SPRAS = u2018ENu2019.

Shall I use select single or normal select queries for makt-maktx retrieval?

If select single, then why and if not, then why?

Can anyone please guide?

Regards.

5 REPLIES 5
Read only

Former Member
0 Likes
772

You can retrive material texts for all the materials retreived in your table by using Select..for all entries....

Please let me knwo if this helps!

Read only

0 Likes
771

I think for all entries will work in this case but trying to be understand why not select single here?

Read only

0 Likes
771

if you use select..single you will need to use that in a loop.

So that for every material in the loop you use select single which will retrieve 1 record each for a material...

One more point for Select single ...when you use select single ...you need to provide the entire key of the table.

Read only

0 Likes
771

thanks anuradha.hope this will work.Let me check.

Read only

Former Member
0 Likes
771

Hi,

It depends of how many records you expect to read. If you have a reduced amount of records I would expect for the join statement to underperform, even if the access to the data bank is faster.

But at a considerable amount of data the join might be a lot faster. Use the tc SM30 to test your code.

This is a test script (for development system):


TABLES: mseg, makt.

SELECT-OPTIONS: s_mblnr FOR mseg-mblnr,
                s_mjahr FOR mseg-mjahr,
                s_zeile FOR mseg-zeile.
PARAMETERS p_join AS CHECKBOX.

DATA: BEGIN OF l_mseg,
        mblnr LIKE mseg-mblnr,
        maktx LIKE makt-maktx,
      END OF l_mseg.

START-OF-SELECTION.
  DO 10000 TIMES.
    IF p_join IS INITIAL.
      SELECT mblnr INTO l_mseg-mblnr FROM mseg WHERE mblnr IN s_mblnr 
                            AND mjahr IN s_mjahr AND zeile IN s_zeile.
        SELECT SINGLE maktx INTO l_mseg-maktx FROM makt 
                                   WHERE matnr EQ mseg-matnr AND spras = sy-langu.
      ENDSELECT.
    ELSE.
      SELECT mblnr maktx INTO l_mseg
               FROM mseg JOIN makt ON makt~matnr = mseg~matnr
               WHERE mblnr IN s_mblnr AND mjahr IN s_mjahr AND zeile IN s_zeile
               AND spras = sy-langu.
      ENDSELECT.
    ENDIF.
  ENDDO.

regards,

Edgar