Ir al contenido
Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - CALVINAHOBBES

#1
Programación ABAP / Re: INNER JOIN
24 Oct 2007, 09:34
BUENO LO HE RESUELTO PERO SIN PODR UTILIZAR TABLAS INTERNAS Y ESO ES LO QUE ME MOLESTA.

SOLUCION:


REPORT ZMENDRUZCO.

TABLES: ZTRABAJO,
            ZEMPLEADO,
            ZPROYECTO.

DATA: COUNT TYPE I.
DATA: DNI    LIKE ZTRABAJO-DNI_EMPLEADO,
         NAME  LIKE ZEMPLEADO-NOMBRE,
         ID      LIKE ZTRABAJO-ID_PROYECTO.

SELECT
      ZTRABAJO~DNI_EMPLEADO
      ZEMPLEADO~NOMBRE
      COUNT(*)
      INTO (DNI, NAME, COUNT)

      FROM ZTRABAJO
        JOIN ZPROYECTO ON ZTRABAJO~ID_PROYECTO = ZPROYECTO~ID_PROYECTO
        JOIN ZEMPLEADO ON ZTRABAJO~DNI_EMPLEADO = ZEMPLEADO~DNI_EMPLEADO

      WHERE
        ZPROYECTO~HORAS > 20

      GROUP BY ZTRABAJO~DNI_EMPLEADO ZEMPLEADO~NOMBRE.

      WRITE: / DNI, NAME, COUNT.

ENDSELECT.
#2
Programación ABAP / Re: INNER JOIN
23 Oct 2007, 12:13
Nuria Tu ejemplo me ha servido aunque  a la hora de colocar un count mi código genera problemas.

Esto es lo que debo hacer:

Se dispone de las siguientes tablas:
ZMEMPLEADO:    DNI, Nombre
ZMTRABAJO:    Empleado, id_Proyecto
ZMPROYECTO:   Id_proyecto, Nombre_proy,   Horas

Un empleado puede estar una o más asignaciones a proyectos y un proyecto puede tener  una o más asignaciones a empleados.
Se debe hacer un listado del DNI y nombre de cada empleado, junto con el número de proyectos que tiene asignado, siempre y cuando estos proyectos superen las 20horas.

Lo que hago es lo siguiente:
genero las tablas, las claves foraneas , introduzco datos etc.

codigo:

REPORT zempleado.

TABLES: zempleado,
            ztrabajo,
            zproyecto.


DATA: BEGIN OF zint OCCURS 0,

              nombre         LIKE zempleado-nombre,
              dni_empleado LIKE ztrabajo-dni_empleado,
              id_proyecto   LIKE ztrabajo-id_proyecto,
              horas           LIKE zproyecto,

END OF zint.


DATA: count TYPE i.

SELECT   zempleado~nombre
             ztrabajo~dni_empleado
*****             COUNT(ZTRABAJO-ID_PROYECTO) SURGE ERRORES *****

INTO CORRESPONDING FIELDS OF TABLE zint

FROM ztrabajo INNER JOIN zempleado
                         ON ztrabajo~dni_empleado = zempleado~dni_empleado
                    INNER JOIN zproyecto
                         ON ztrabajo~id_proyecto  = zproyecto~id_proyecto

WHERE zproyecto~horas > 20.

PERFORM write.

FORM write.
  LOOP AT zint.
       WRITE:  /3 zint-nombre, 12 zint-dni_empleado.
  ENDLOOP.
ENDFORM.

*************************************************

ESTE CODIGO ME LISTA LOS DNI Y NOMBRES DE EMPLEADOS CON PROYECTOS > 20 HORAS, SIN AGRUPARLOS.

PERO CUANDO INTENTO COLOCAR EL COUNT O UN GROUP BY EL CODIGO GENERA ERROR.
AYUDADME :(
#3
Programación ABAP / INNER JOIN
22 Oct 2007, 21:51
DE ANTEMANO GRACIAS LAURA POR TU INDICACIÓN DE " ' "

QUIERO RELACIONAR VARIAS TABLAS, INTENTO UTILIZAR SELECT INNER JOIN PERO LOS MANUALES QUE TENGO NO SON MUY CLAROS Y GENERO MUCHOS ERRORES DE SINTAXIS,  SI ALGUNO ME PUEDE AYUDAR CON EJEMPLOS ESTARIA MUY BIEN. ???



#4
Programación ABAP / AYUDA ELEMENTAL
19 Oct 2007, 12:35
Hola,  estoy haciendo mis primeros programillas en ABAP/4 , pero como todo surgen los errores menos esperados.

escribo estas lineas de codigo:
*----------------------------------------------------------------
*ENCABEZADO DEL LISTADO
*----------------------------------------------------------------
   TOP-OF-PAGE.
   WRITE: /3 'PRODUCTOS'.
   ULINE.

y surge el siguiente ERROR:

The text literal 'PRODUCTOS'. is longer that 255 characters. Please check whether it ends with a quotation mark.

No se como solucionarlo ¿me podeis ayudar?
Gracias.