MUNDOSAP

Regresar   MUNDOSAP > DESARROLLO > Programación ABAP IV
Nombre de Usuario
Contraseña
Home Descargas Registrar FAQ Miembros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




 
Respuesta
 
Herramientas Buscar en Tema Desplegado
  #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
  #2  
Viejo 21/01/14, 13:33:01
rpupillo rpupillo is offline
Junior Member
 
Fecha de Ingreso: mar 2006
Mensajes: 3
Hola Amparo, no puedes realizar una asignacion directa a la tabla interna t_pacientes si esta no posee Area de Trabajo (header line), puedes utilizar la Area de Trabajo que declaraste como ls_npat al parecer es la misma estructura de t_pacientes, lo unico que te falta es moverle los valores:


ls_npat-bwidt = ls_nbew-bwidt.
ls_npat-falnr = ls_nbew-falnr.

Antes de la instruccion:

APPEND ls_npat TO t_pacientes.


Saludos,

RPupillo
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Reglas de Mensajes
no puedes crear nuevos temas
no puedes responder temas
no puedes adjuntar archivos
no puedes editar tus mensajes

El código vB está On
Las caritas están On
Código [IMG] está On
Código HTML está Off
Saltar a Foro


Husos Horarios son GMT. La hora en este momento es 03:57:41.


www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web