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

need Help in query.

Former Member
0 Likes
757

Dear Gurus

is this Query Rite.?

SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.

SELECT-OPTIONS: s_matnr FOR mseg-matnr," OBLIGATORY, " Material
                s_bwkey FOR mseg-werks OBLIGATORY, "Plant
                s_date FOR mkpf-budat OBLIGATORY .   " Date
SELECTION-SCREEN END OF SCREEN 100.

SELECTION-SCREEN: BEGIN OF TABBED BLOCK b2 FOR 4 LINES,
                  TAB (50) title USER-COMMAND '' DEFAULT SCREEN 100,
                  END OF BLOCK b2.

SELECT *
    FROM  mbewh
    INTO TABLE mb
    WHERE matnr IN s_matnr
    AND  lfgja EQ year
    AND    bwkey IN s_bwkey.

SELECT *
    INTO CORRESPONDING FIELDS OF TABLE bi
    FROM bsim INNER JOIN mseg
    ON bsim~mandt = mseg~mandt
    AND bsim~gjahr = mseg~mjahr
    AND bsim~bwtar = mseg~bwtar
    FOR ALL entries IN s_matnr
    WHERE mseg~matnr = s_matnr-low
    AND bwkey IN s_bwkey
    AND budat IN s_date.

  SORT bi BY matnr bwkey.

LOOP AT mb WHERE lfmon EQ date AND bwkey IN s_bwkey.

    itab-bwkey  = mb-bwkey.
    itab-matnr  = mb-matnr.

    SELECT SINGLE meins FROM bsim INTO itab-meins
      WHERE matnr IN s_matnr
      AND  budat IN s_date.

    SELECT SINGLE maktx FROM makt INTO itab-maktx
      WHERE matnr EQ itab-matnr.

    SELECT SINGLE lbkum FROM mbewh INTO itab-opqty
      WHERE matnr EQ itab-matnr
      AND   lfmon EQ pdate
      AND   lfgja EQ year.

    SELECT SINGLE salk3 FROM mbewh INTO itab-opbal
      WHERE matnr EQ itab-matnr
      AND lfmon EQ pdate
      AND lfgja EQ year.

    LOOP AT bi WHERE matnr EQ itab-matnr AND bwkey EQ mb-bwkey.
      IF bi-shkzg EQ 'S'.
        itab-recp = itab-recp + bi-menge.
        itab-recpval = itab-recpval + bi-dmbtr.
      ELSEIF bi-shkzg EQ 'H'.
        itab-issue = itab-issue + bi-menge.
        itab-issval = itab-issval + bi-dmbtr.
      ENDIF.
    ENDLOOP.

    itab-cloqty = mb-lbkum.
    itab-clobal = mb-salk3.
    itab-rpu    = mb-verpr.

    APPEND itab.
    CLEAR itab-recp.
    CLEAR itab-recpval.
    CLEAR itab-issval.
    CLEAR itab-issue.
    CLEAR itab-opqty.
    CLEAR itab-opbal.
    CLEAR itab-cloqty.
    CLEAR itab-clobal.

  ENDLOOP.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
719

Hello Saad,


SELECT *
    INTO CORRESPONDING FIELDS OF TABLE bi
    FROM bsim INNER JOIN mseg
    ON bsim~mandt = mseg~mandt
    AND bsim~gjahr = mseg~mjahr
    AND bsim~bwtar = mseg~bwtar
    FOR ALL entries IN s_matnr
    WHERE mseg~matnr = s_matnr-low
    AND bwkey IN s_bwkey
    AND budat IN s_date.
 

You query looks fine only thing is it is not advised to use * while selecting fields from database.

You should follow abap practice to avoid any performace issues.

Thanks,

Augustin.

5 REPLIES 5
Read only

jaideepsharma
Active Contributor
0 Likes
719

Hi,

There are many queries in your code. Which one are you curious to know about ?

KR Jaideep,

Read only

0 Likes
719

All!..

Mostly the inner join one!

Read only

0 Likes
719

?

Read only

Former Member
0 Likes
720

Hello Saad,


SELECT *
    INTO CORRESPONDING FIELDS OF TABLE bi
    FROM bsim INNER JOIN mseg
    ON bsim~mandt = mseg~mandt
    AND bsim~gjahr = mseg~mjahr
    AND bsim~bwtar = mseg~bwtar
    FOR ALL entries IN s_matnr
    WHERE mseg~matnr = s_matnr-low
    AND bwkey IN s_bwkey
    AND budat IN s_date.
 

You query looks fine only thing is it is not advised to use * while selecting fields from database.

You should follow abap practice to avoid any performace issues.

Thanks,

Augustin.

Read only

0 Likes
719

Hi,

Your inner join seems to be fine but can you look for a possibility to write a logic where you can move

SELECT SINGLE meins FROM bsim INTO itab-meins
      WHERE matnr IN s_matnr
      AND  budat IN s_date.
 
    SELECT SINGLE maktx FROM makt INTO itab-maktx
      WHERE matnr EQ itab-matnr.
 
    SELECT SINGLE lbkum FROM mbewh INTO itab-opqty
      WHERE matnr EQ itab-matnr
      AND   lfmon EQ pdate
      AND   lfgja EQ year.
 
    SELECT SINGLE salk3 FROM mbewh INTO itab-opbal
      WHERE matnr EQ itab-matnr
      AND lfmon EQ pdate
      AND lfgja EQ year.

out of loop. It may increase the performance of the program.

KR Jaideep,