Problema con los rangos

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Garces
    Senior Member
    • ago
    • 321

    #1

    Problema con los rangos

    Buenos días señores del foro...
    Tengo la siguiente consulta...
    Existe alguna sentencia que me indique si es un rango está contenido dentro de otro rango del mismo tipo???

    Saludos...
    Miguel Ángel Garcés Ramírez
  • mysmb2
    Senior Member
    • ene
    • 406

    #2
    los dos rangos pueden tener intervalos o elementos excluir?
    Sebastián Chiavia
    http://www.programacionabap.com.ar

    Comentario

    • ballan
      Senior Member
      • oct
      • 671

      #3
      El rango esta definido contra un campo que supongo que tendra valores de una tabla, yo haria lo siguiente

      Vamos a suponer que tengo un rango de materiales

      types: begin of ty_matnr,
      matnr type matnr,
      end of ty_matnr.

      data: lt_rango1 type range of matnr,
      lt_rango2 like lt_rango1,
      lt_matnr1 type table of ty_matnr,
      lt_matnr2 like lt_matnr1,
      lv_lineas1 type i,
      lv_lineas2 type i.

      Supongamos que lt_rango1 y lt_rango2 ya estan rellenos con valores

      select matnr
      into table lt_matnr1
      from mara
      where matnr in lt_rango1.

      select matnr
      into table lt_matnr2
      from mara
      where matnr in lt_rango2.

      describe table lt_matnr1 lines lv_lineas1.

      append lines of lt_matnr2 to lt_matnr1.

      sort lt_matnr1.

      delete adjacent duplicates from lt_matnr1.

      describe table lt_matnr1 lines lv_lineas2.

      if lv_lineas2 > lv_lineas1.
      "lt_rango2 tiene valores que no tiene lt_rango1
      else.
      "todos los valores de lt_rango2 estan incluidos en lt_rango1
      endif.

      Comentario

      • ekim68
        Member
        • mar
        • 57

        #4
        Rango_tablainterna

        Hola, segun tengo entendido los rangos se consideran tipos especiales de tablas internas:

        Te muestro un ejemplo:
        types: begin of ty_matnr,
        matnr type matnr,
        end of ty_matnr.

        data: lt_rango1 type range of matnr with header line,
        lt_rango2 type range of matnr with header line,
        lt_matnr1 type table of ty_matnr,
        lt_matnr2 like lt_matnr1.

        lt_rango1-SIGN = 'I'.
        lt_rango1-OPTION = 'EQ'.
        lt_rango1-LOW = '121212'.
        APPEND LT_RANGO1.

        lt_rango2-SIGN = 'I'.
        lt_rango2-OPTION = 'EQ'.
        lt_rango2-LOW = '121212'.
        APPEND LT_RANGO2.

        lt_rango2-SIGN = 'I'.
        lt_rango2-OPTION = 'BT'.
        lt_rango2-LOW = '1212'.
        lt_rango2-HIGH = '1215'.
        APPEND LT_RANGO2.


        break-point.
        IF lt_rango1[] = lt_rango2[].
        " Contienen los mismos valores.
        ELSE.
        " No contiene los mismos valores
        ENDIf.

        En este caso ambos rangos serán diferentes.
        Saludos, espero haber ayudado.
        Editado por última vez por ekim68; 17/07/2010, 04:42:49.

        Comentario

        Trabajando...