‎2008 Jul 22 6:46 AM
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.
‎2008 Jul 22 6:55 AM
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
‎2008 Jul 22 6:47 AM
‎2008 Jul 22 6:48 AM
‎2008 Jul 22 6:55 AM
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
‎2008 Jul 22 7:34 AM
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