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

help in select

Former Member
0 Likes
502

hallow

i doing this select 2 times from the same table and it working well.

i wonder if there is better way to do that ?

Regards

LOOP AT i_t_data INTO lw_t_data_0org.

SELECT begda endda sobid

<b>FROM hrp1001</b>

INTO TABLE lt_relat_org

WHERE objid EQ lw_t_data_0org-orgeh

AND rsign EQ 'B'

AND relat EQ '012'

AND plvar = '01'

AND endda GE lw_t_data_0org-datefrom

AND begda LE lw_t_data_0org-dateto.

SORT lt_relat_org BY begda DESCENDING endda DESCENDING sobid.

CLEAR lw_relat_org.

READ TABLE lt_relat_org INDEX 1 INTO lw_relat_org.

IF sy-subrc EQ '0'.

SELECT SINGLE sobid

<b>FROM hrp1001</b>

INTO tmp_sobid

WHERE objid = lw_relat_org-sobid

AND relat = '008'

AND rsign = 'A'

AND endda GE lw_relat_org-begda

AND begda LE lw_relat_org-endda.

MOVE tmp_sobid TO lw_t_data_0org-zzmanager.

ENDIF.

<b> APPEND lw_t_data_0org TO lc_t_data_0org.</b>

ENDLOOP.

1 ACCEPTED SOLUTION
Read only

ferry_lianto
Active Contributor
0 Likes
441

Hi,

Please try this.


data: wa_begda like hrp1001-begda,
      wa_endda like hrp1001-begda,
      wa_sobid like hrp1001-begda.

LOOP AT i_t_data INTO lw_t_data_0org.

  SELECT begda endda sobid UP TO 1 ROWS
  FROM hrp1001
  INTO (wa_begda, wa_endda, wa_sobid)
  WHERE objid EQ lw_t_data_0org-orgeh
    AND rsign EQ 'B'
    AND relat EQ '012'
    AND plvar EQ '01'
    AND endda GE lw_t_data_0org-datefrom
    AND begda LE lw_t_data_0org-dateto
  ORDER BY begda DESCENDING
           endda DESCENDING
           sobid.            
  ENDSELECT.

  IF sy-subrc EQ '0'.

    SELECT SINGLE sobid
    FROM hrp1001
    INTO tmp_sobid
    WHERE objid = wa_sobid
      AND relat = '008'
      AND rsign = 'A'
      AND endda GE wa_begda
      AND begda LE wa_endda.

    MOVE tmp_sobid TO lw_t_data_0org-zzmanager.

  ENDIF.

  APPEND lw_t_data_0org TO lc_t_data_0org.

ENDLOOP. 

Regards,

Ferry Lianto

3 REPLIES 3
Read only

Former Member
0 Likes
441

hi

good

use MOVE CORRESPONDING statement in all your select statement,it ll increase your performance of the select statement.

thanks

mrutyun^

Read only

Former Member
0 Likes
441

I think that this thing is solving ur problem, i dont know why ur fetching two times? so do this:

SELECT SINGLE sobid

FROM hrp1001

INTO tmp_sobid

WHERE objid = lw_relat_org-sobid

AND relat = '008'

AND rsign = 'A'

AND endda GE lw_relat_org-begda

AND begda LE lw_relat_org-endda.

lw_t_data_0org-zzmanager -tmp_sobid .

append lw_t_data_0org.

*MOVE tmp_sobid TO lw_t_data_0org-zzmanager.

Regards,

Usman Malik

Read only

ferry_lianto
Active Contributor
0 Likes
442

Hi,

Please try this.


data: wa_begda like hrp1001-begda,
      wa_endda like hrp1001-begda,
      wa_sobid like hrp1001-begda.

LOOP AT i_t_data INTO lw_t_data_0org.

  SELECT begda endda sobid UP TO 1 ROWS
  FROM hrp1001
  INTO (wa_begda, wa_endda, wa_sobid)
  WHERE objid EQ lw_t_data_0org-orgeh
    AND rsign EQ 'B'
    AND relat EQ '012'
    AND plvar EQ '01'
    AND endda GE lw_t_data_0org-datefrom
    AND begda LE lw_t_data_0org-dateto
  ORDER BY begda DESCENDING
           endda DESCENDING
           sobid.            
  ENDSELECT.

  IF sy-subrc EQ '0'.

    SELECT SINGLE sobid
    FROM hrp1001
    INTO tmp_sobid
    WHERE objid = wa_sobid
      AND relat = '008'
      AND rsign = 'A'
      AND endda GE wa_begda
      AND begda LE wa_endda.

    MOVE tmp_sobid TO lw_t_data_0org-zzmanager.

  ENDIF.

  APPEND lw_t_data_0org TO lc_t_data_0org.

ENDLOOP. 

Regards,

Ferry Lianto