Ayuda Please

Colapsar
X
 
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • Irua
    Member
    • jun
    • 83

    #1

    Ayuda Please

    Favor como puedo en un solo select llamar campos de diferentes tablas con un solo where
    ejemplo:

    FORM OBTENER_DATOS.

    SELECT BUKRS PERNR
    INTO T_DATA1
    FROM ZTHR_USUA_EMPL
    WHERE BUKRS IN S_TSOC
    AND PERNR IN S_TEMPL.
    APPEND T_DATA1.
    ENDSELECT.

    SELECT ORGEH BUKRS
    INTO T_PA0001
    FROM PA0001
    WHERE BUKRS IN S_TSOC.
    APPEND T_PA0001.
    ENDSELECT.

    SELECT NACHN PERNR VORNA
    INTO T_PA0002
    FROM PA0002
    WHERE PERNR IN S_TEMPL.
    APPEND T_PA0002.
    ENDSELECT.

    SELECT GEBNR ZIMNR PERNR
    INTO T_PA0032
    FROM PA0032
    WHERE PERNR IN S_TEMPL.
    APPEND T_PA0032.
    ENDSELECT.


    LOOP AT T_DATA1.
    CONTADOR = SY-TABIX.


    Gracias
  • drmezzetta
    Junior Member
    • jun
    • 16

    #2
    Aqui tienes un ejemplo de como acceder a dos tablas en un mismo select:

    SELECT SINGLE *
    FROM KNA1 as k1
    WHERE STCD1 = codigo
    and exists ( SELECT * FROM KNB1
    WHERE KUNNR = k1~KUNNR and
    BUKRS = sociedad and
    SPERR = '' ).

    espero te sirva,
    saludos.

    Comentario

    • DCErick
      Moderator
      • mar
      • 1090

      #3
      Puedes hacer inner join en tu consulta, siempre y cuando tengas campos relacionados entre las tablas....
      -------------------
      ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

      Comentario

      • DCErick
        Moderator
        • mar
        • 1090

        #4
        Originalmente publicado por DCErick
        Puedes hacer inner join en tu consulta, siempre y cuando tengas campos relacionados entre las tablas....
        Un ejemplo seria el siguiente...

        Select tabla1~nombre tabla2~direccion
        into corresponding fields of table ti_resultado
        from tabla1 innjer join tabl12 on tabla1~kunnr = tabla2~kunnr
        where tabla1~kunnr = '0070000000'.

        Para hacer referencia a campos de las tablas con las que estas trabajando se usa el caracter " ~ " puesto que el guion " - " se usa para hacer referencia a algun campo de una tabla interna con la que estes trabajando para hacer alguna condicion en la clausula Where, te lo digo porque es muy comun que las personas que antes usaron el M SQL traten de hacer nu inner join y cometan el error de querer hacer referencia a los campos mediante nombretabla-campo.
        -------------------
        ¿Dudas para descargar manuales? Ver este tema -> Cómo descargar manuales de la sección "Descargas" ?

        Comentario

        • Irua
          Member
          • jun
          • 83

          #5
          Mil gracias

          Comentario

          • azua14
            Senior Member
            • jul
            • 140

            #6
            Hola...lo que dicen arriba es correcto...pero cuidado...recuerda que las tablas en SAP son GRRRRRRANDES....y un INNER JOIN te puede resultar muy lento...yo prefiero hacer un par de consultas por separado y unirlas usando un FOR ALL ENTRIES....hay dos cosas que trato de evitar en SAP...el SELECT--> ENDSELECT y EL INNER JOIN.

            ..Este ejemplo es super básico...pero puede servir
            SELECT carrid connid
            cityfrom cityto
            deptime arrtime
            airpfrom airpto
            distance distid
            FROM spfli
            INTO CORRESPONDING FIELDS OF TABLE i_spfli
            WHERE carrid IN scarrid.

            SELECT carrid carrname
            FROM scarr
            INTO CORRESPONDING FIELDS OF TABLE i_scarr
            FOR ALL ENTRIES IN i_spfli
            WHERE carrid EQ i_spfli-carrid.

            Comentario

            Trabajando...