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

which code it the best

Former Member
0 Likes
507

First code with two select statement


  CLEAR v_rule.
  SELECT SINGLE zzparm1 "rule
    FROM ZDBBASE
    INTO v_rule
    WHERE zzincn  EQ c_zzincn
      AND zzvar   EQ c_r
      AND bukrs   EQ 'GB01'
      AND zzxkey1 EQ '7'.

  IF sy-subrc EQ 0 AND v_rule IS NOT INITIAL.
* Retrival of all the sequence number according to rule retrive above
    REFRESH i_sequence_no.
    SELECT zzxkey1 "rule
           zzxkey2 "sequence number
           zzxkey3 "Relevant field
           zzparm1 "length specify during search
      FROM ZDBBASE
      INTO TABLE i_sequence_no
      WHERE zzincn  EQ c_zzincn
        AND ZZVAR   EQ c_s
        AND zzxkey1 EQ v_rule  .
  ENDIF.

Or second code with one select but with a read and a loop


  r_rule_line-sign   = 'I'.
  r_rule_line-option = 'EQ'.
  r_rule_line-low    = 'S'.
  APPEND r_rule_line TO r_rule.
  r_rule_line-sign   = 'I'.
  r_rule_line-option = 'EQ'.
  r_rule_line-low    = 'R'.
  APPEND r_rule_line TO r_rule.

  SELECT  zzvar  bukrs         zzxkey1
      zzxkey2      zzxkey3     zzparm1
    FROM ZDBBASE
    INTO TABLE i_rule
    WHERE zzincn  EQ c_zzincn
      AND zzvar   IN  r_rule.


  READ TABLE i_rule INTO wa_rule WITH KEY zzvar = c_r
         bukrs   = 'GB01'
        zzxkey1 = '7'.

  IF sy-subrc EQ 0.
    LOOP AT i_rule INTO wa_rule2 WHERE  zzvar   EQ c_s
                                AND zzxkey1 EQ wa_rule-zzparm1  .

      MOVE-CORRESPONDING wa_rule2 TO wa_sequence_no.
      APPEND wa_sequence_no TO i_sequence_no.
    ENDLOOP.
  ENDIF.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
478

Hi,

Second option is better.

r_rule_line-sign = 'I'.

r_rule_line-option = 'EQ'.

r_rule_line-low = 'S'.

APPEND r_rule_line TO r_rule.

No need assigning value of sign and option again.

r_rule_line-low = 'R'.

APPEND r_rule_line TO r_rule.

SELECT zzvar bukrs zzxkey1

zzxkey2 zzxkey3 zzparm1

FROM ZDBBASE

INTO TABLE i_rule

WHERE zzincn EQ c_zzincn

AND zzvar IN r_rule.

READ TABLE i_rule INTO wa_rule WITH KEY zzvar = c_r

bukrs = 'GB01'

zzxkey1 = '7'.

IF sy-subrc EQ 0.

LOOP AT i_rule INTO wa_rule2 WHERE zzvar EQ c_s

AND zzxkey1 EQ wa_rule-zzparm1 .

MOVE-CORRESPONDING wa_rule2 TO wa_sequence_no.

Avoid the use of move-corresponding .

APPEND wa_sequence_no TO i_sequence_no.

ENDLOOP.

ENDIF.

Try Sql Trace.

Regards,

Sandeep

4 REPLIES 4
Read only

kesavadas_thekkillath
Active Contributor
0 Likes
478

check it in st05 and se30...

Read only

peter_ruiz2
Active Contributor
0 Likes
478

Hi,

The 2nd Code is faster.

regards,

Peter

Read only

Former Member
0 Likes
479

Hi,

Second option is better.

r_rule_line-sign = 'I'.

r_rule_line-option = 'EQ'.

r_rule_line-low = 'S'.

APPEND r_rule_line TO r_rule.

No need assigning value of sign and option again.

r_rule_line-low = 'R'.

APPEND r_rule_line TO r_rule.

SELECT zzvar bukrs zzxkey1

zzxkey2 zzxkey3 zzparm1

FROM ZDBBASE

INTO TABLE i_rule

WHERE zzincn EQ c_zzincn

AND zzvar IN r_rule.

READ TABLE i_rule INTO wa_rule WITH KEY zzvar = c_r

bukrs = 'GB01'

zzxkey1 = '7'.

IF sy-subrc EQ 0.

LOOP AT i_rule INTO wa_rule2 WHERE zzvar EQ c_s

AND zzxkey1 EQ wa_rule-zzparm1 .

MOVE-CORRESPONDING wa_rule2 TO wa_sequence_no.

Avoid the use of move-corresponding .

APPEND wa_sequence_no TO i_sequence_no.

ENDLOOP.

ENDIF.

Try Sql Trace.

Regards,

Sandeep

Read only

0 Likes
478

yeahhh i check on SE30 the second option is better

as with the move corresponding i'll use move since there is only 4 field to move