Ver Mensaje Individual
  #1  
Viejo 20/01/14, 15:20:08
amparibi amparibi is offline
Junior Member
 
Fecha de Ingreso: sep 2013
Mensajes: 8
is a table without a header line and thereforefore has no component

Buenas a todos,

Es la primera vez que intento programar algo de sap, estoy haciendo un report alv en el que me va a devolver un listado de pacientes al que les han dado alta en un periodo de tiempo,

Pantalla de seleccion:

Apellido,
Rango de fecha

Una vez rellenos los campos, me devuelve ese listado ALV con los siguientes datos:

IdPaciente, Apellido1, Apellido2, IdEpisodio, Fecha Alta,
El problema es que los 3 últimos campos me los rellena con el mismo dato.
He creado una funcion que recoja todos los datos que quiero, pero se que me falta algo que por muchas vueltas que le doy, no lo logro, ahi va mi codigo:

FUNCTION ZC06_FUNCION1EXAMEN .
*"----------------------------------------------------------------------
*"*"Interfase local
*" IMPORTING
*" REFERENCE(IT_RANGE_DATA) TYPE ISHMED_T_RANGE_DATE
*" REFERENCE(I_P_GSCHL) TYPE GSCHL
*" REFERENCE(I_P_NAME) TYPE NNAME_PAT
*" REFERENCE(P_CENTRO) TYPE EINRI
*" EXPORTING
*" REFERENCE(T_PACIENTES) TYPE ISHMED_T_NPAT
*"----------------------------------------------------------------------
*
DATA: lt_nbew TYPE TABLE OF nbew, " Tabla episodios de los pacientes
ls_nbew TYPE nbew, " Estructura de la tabla episodios
l_patnr TYPE patnr, "Variable que guarda el código paciente
ls_npat TYPE npat. "Estructura de la tabla pacient.



*
**// Simplifico la búsqueda a pacientes del centro sanitario "HGEN" y cuya fecha de movimiento está en el
**// rango que indicamos y que el movimiento del paciente es la Alta.
SELECT *
INTO TABLE lt_nbew
FROM nbew
WHERE einri = p_centro "Centro sanitario, por defecto HGEN
AND bwidt IN it_range_data "bwitd es la fecha del movimiento
and bewty = '2'. " Recoge los movimentos, en este caso, el de alta.

*
*
**// Recorro la tabla de episodios y voy añadiendo los datos en una structura.
**// Tomo el código paciente, seleccionado de la tabla episodios del paciente y lo añado a la variable l_patnr
**//Teniendo en cuenta que el número de episodio es el mismo que el número de episodio de la tabla episodios.
**// Con esto simplifico a pacientes del centro sanitario HGEN cuyo movimiento esta dentro del rango de fechas
**// que añado y cuyo número de episodio corresponde al numero del episodio de la tabla movimientos del episodio (Que en este caso es el Alta).
LOOP AT lt_nbew INTO ls_nbew.
SELECT SINGLE patnr "Codigo del paciente
INTO l_patnr
FROM nfal "Tabla Episodios del Paciente
WHERE falnr = ls_nbew-falnr. "Numero de episodio

**// Descripción en caso de que no exista el paciente.
** IF sy-subrc <> 0.
**
** MESSAGE: 'No existe paciente en la base de datos' TYPE 'E'.
** ENDIF.
*
**// Selecciono todos los datos de la tabla pacientes, lo añado en una estructura, comprobando
**// que el código paciente de la tabla pacientes es igual al codigo paciente de la tabla episodios.
**// También compruebo el apellido, el apellido tiene que ser igual al que le paso por parámetro a la función.
**//Toda la información simplificada, la añado a la tabla t_pacientes.
SELECT SINGLE *
FROM npat
INTO ls_npat "Estrutura de los datos pacientes.
WHERE patnr = l_patnr and nname = i_p_name.

IF sy-subrc = 0.


/Esta parte de aqui, es la que me da el error que pongo de título, ya que nose como importar esa tabla(creada en otra parte del report), dentro de esta funcion
** t_pacientes-patnr = ls_npat-patnr.
** t_pacientes-gbnam = ls_npat-gbnam.*
* t_pacientes-nname = ls_npat-nname.
** t_pacientes-bwidt = ls_nbew-bwidt.
* t_pacientes-falnr = ls_nbew-falnr.
*
APPEND ls_npat TO t_pacientes.
**
**
ENDIF.
*
*
*
ENDLOOP.


ENDFUNCTION.


Muchas gracias a todos.

Amparo,
Responder Con Cita