duda sobre select

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • alamo_blanco
    Member
    • jul
    • 101

    #1

    duda sobre select

    Hola a todos,
    Mi duda es como podia comparar los campos de una tabla interna con una tabla de diccionario y modificar los registros de la tabla de diccionario que se ajustan a esa compracion. supongo que seria mediante un select de forma que puedira recorrer las dos tablas.
    me podeis mostrar un ejemplo..
    Gracias.

    Un saludo.
  • BY_MY
    Senior Member
    • nov
    • 130

    #2
    Buenas.

    No entiendo muy bien lo que quieres hacer pero te recomiendo que para la comprobacion en la select utilices un


    SELECT SINGLE *
    INTO CORRESPONDING FIELDS OF it_usr21
    FROM usr21
    WHERE bname = it_usr02-bname.

    Ya que sino la performance puede bajar mucho. Para modificar una tabla del diccionario entiendo que quieres hacer un MODIFY.


    Todas estas sentencias y como se usan las puedes ver en la ayuda se SAP. Poniendo el comando y pulsando F1.


    Espero haberte orientado un poco.
    Saludos.

    Comentario

    • nenuke
      Member
      • sep
      • 87

      #3
      Hola,

      si te he entendido bien deberías hacer algo parecido a esto:

      LOOP AT it_tab.
      * Comprobamor la existencia del registro en la tabla del diccionario
      SELECT COUNT( * )
      FROM tabla_diccionario
      WHERE campo1 = it_tab-campo1 AND
      campo2 = it_tab-campo2 AND
      campo3 = it_tab-campo3.
      * Si existe lo modificas
      IF sy-subrc EQ 0.
      MODIFY tabla_diccionario FROM it_tab.
      ENDIF.
      ENDLOOP.

      Ten en cuenta que este código es lento si la tabla interna tiene muchos registros.
      La tabla interna debe tener cabecera para poder hacer el modify así.
      El select tienes que hacerlo utilizando el mayor número de campos clave( si no todos) para evitar incoherencias a la hora de modificar.

      Espero que te sirva.

      Un saludo.

      Comentario

      • darona
        Member
        • jun
        • 44

        #4
        También podrías usar un SELECT con un FOR ALL ENTRIES.

        Saludos,
        David.

        Comentario

        • alamo_blanco
          Member
          • jul
          • 101

          #5
          Gracias a todos por vuestra ayuda, me ha sido de gran utilidad.
          un saludo a todos

          Comentario

          Trabajando...