Skip to Content
0
Former Member
Jul 22, 2008 at 05:46 AM

which code it the best

29 Views

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.